first commit

This commit is contained in:
lethanhsonvsp
2025-11-17 15:36:52 +07:00
commit 6f2eafa33c
14093 changed files with 1253472 additions and 0 deletions

View File

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

View File

@@ -0,0 +1,322 @@
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
using static Unity.Mathematics.math;
namespace Unity.Mathematics.Geometry
{
/// <summary>
/// Axis aligned bounding box (AABB) stored in min and max form.
/// </summary>
/// <remarks>
/// Axis aligned bounding boxes (AABB) are boxes where each side is parallel with one of the Cartesian coordinate axes
/// X, Y, and Z. AABBs are useful for approximating the region an object (or collection of objects) occupies and quickly
/// testing whether or not that object (or collection of objects) is relevant. Because they are axis aligned, they
/// are very cheap to construct and perform overlap tests with them.
/// </remarks>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public struct MinMaxAABB : IEquatable<MinMaxAABB>
{
/// <summary>
/// The minimum point contained by the AABB.
/// </summary>
/// <remarks>
/// If any component of <see cref="Min"/> is greater than <see cref="Max"/> then this AABB is invalid.
/// </remarks>
/// <seealso cref="IsValid"/>
public float3 Min;
/// <summary>
/// The maximum point contained by the AABB.
/// </summary>
/// <remarks>
/// If any component of <see cref="Max"/> is less than <see cref="Min"/> then this AABB is invalid.
/// </remarks>
/// <seealso cref="IsValid"/>
public float3 Max;
/// <summary>
/// Constructs the AABB with the given minimum and maximum.
/// </summary>
/// <remarks>
/// If you have a center and extents, you can call <see cref="CreateFromCenterAndExtents"/> or <see cref="CreateFromCenterAndHalfExtents"/>
/// to create the AABB.
/// </remarks>
/// <param name="min">Minimum point inside AABB.</param>
/// <param name="max">Maximum point inside AABB.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public MinMaxAABB(float3 min, float3 max)
{
Min = min;
Max = max;
}
/// <summary>
/// Creates the AABB from a center and extents.
/// </summary>
/// <remarks>
/// This function takes full extents. It is the distance between <see cref="Min"/> and <see cref="Max"/>.
/// If you have half extents, you can call <see cref="CreateFromCenterAndHalfExtents"/>.
/// </remarks>
/// <param name="center">Center of AABB.</param>
/// <param name="extents">Full extents of AABB.</param>
/// <returns>AABB created from inputs.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static MinMaxAABB CreateFromCenterAndExtents(float3 center, float3 extents)
{
return CreateFromCenterAndHalfExtents(center, extents * 0.5f);
}
/// <summary>
/// Creates the AABB from a center and half extents.
/// </summary>
/// <remarks>
/// This function takes half extents. It is half the distance between <see cref="Min"/> and <see cref="Max"/>.
/// If you have full extents, you can call <see cref="CreateFromCenterAndExtents"/>.
/// </remarks>
/// <param name="center">Center of AABB.</param>
/// <param name="halfExtents">Half extents of AABB.</param>
/// <returns>AABB created from inputs.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static MinMaxAABB CreateFromCenterAndHalfExtents(float3 center, float3 halfExtents)
{
return new MinMaxAABB(center - halfExtents, center + halfExtents);
}
/// <summary>
/// Computes the extents of the AABB.
/// </summary>
/// <remarks>
/// Extents is the componentwise distance between min and max.
/// </remarks>
public float3 Extents => Max - Min;
/// <summary>
/// Computes the half extents of the AABB.
/// </summary>
/// <remarks>
/// HalfExtents is half of the componentwise distance between min and max. Subtracting HalfExtents from Center
/// gives Min and adding HalfExtents to Center gives Max.
/// </remarks>
public float3 HalfExtents => (Max - Min) * 0.5f;
/// <summary>
/// Computes the center of the AABB.
/// </summary>
public float3 Center => (Max + Min) * 0.5f;
/// <summary>
/// Check if the AABB is valid.
/// </summary>
/// <remarks>
/// An AABB is considered valid if <see cref="Min"/> is componentwise less than or equal to <see cref="Max"/>.
/// </remarks>
/// <returns>True if <see cref="Min"/> is componentwise less than or equal to <see cref="Max"/>.</returns>
public bool IsValid => math.all(Min <= Max);
/// <summary>
/// Computes the surface area for this axis aligned bounding box.
/// </summary>
public float SurfaceArea
{
get
{
float3 diff = Max - Min;
return 2 * math.dot(diff, diff.yzx);
}
}
/// <summary>
/// Tests if the input point is contained by the AABB.
/// </summary>
/// <param name="point">Point to test.</param>
/// <returns>True if AABB contains the input point.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Contains(float3 point) => math.all(point >= Min & point <= Max);
/// <summary>
/// Tests if the input AABB is contained entirely by this AABB.
/// </summary>
/// <param name="aabb">AABB to test.</param>
/// <returns>True if input AABB is contained entirely by this AABB.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Contains(MinMaxAABB aabb) => math.all((Min <= aabb.Min) & (Max >= aabb.Max));
/// <summary>
/// Tests if the input AABB overlaps this AABB.
/// </summary>
/// <param name="aabb">AABB to test.</param>
/// <returns>True if input AABB overlaps with this AABB.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Overlaps(MinMaxAABB aabb)
{
return math.all(Max >= aabb.Min & Min <= aabb.Max);
}
/// <summary>
/// Expands the AABB by the given signed distance.
/// </summary>
/// <remarks>
/// Positive distance expands the AABB while negative distance shrinks the AABB.
/// </remarks>
/// <param name="signedDistance">Signed distance to expand the AABB with.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Expand(float signedDistance)
{
Min -= signedDistance;
Max += signedDistance;
}
/// <summary>
/// Encapsulates the given AABB.
/// </summary>
/// <remarks>
/// Modifies this AABB so that it contains the given AABB. If the given AABB is already contained by this AABB,
/// then this AABB doesn't change.
/// </remarks>
/// <seealso cref="Contains(Unity.Mathematics.Geometry.MinMaxAABB)"/>
/// <param name="aabb">AABB to encapsulate.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Encapsulate(MinMaxAABB aabb)
{
Min = math.min(Min, aabb.Min);
Max = math.max(Max, aabb.Max);
}
/// <summary>
/// Encapsulate the given point.
/// </summary>
/// <remarks>
/// Modifies this AABB so that it contains the given point. If the given point is already contained by this AABB,
/// then this AABB doesn't change.
/// </remarks>
/// <seealso cref="Contains(Unity.Mathematics.float3)"/>
/// <param name="point">Point to encapsulate.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Encapsulate(float3 point)
{
Min = math.min(Min, point);
Max = math.max(Max, point);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(MinMaxAABB other)
{
return Min.Equals(other.Min) && Max.Equals(other.Max);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override string ToString()
{
return string.Format("MinMaxAABB({0}, {1})", Min, Max);
}
}
public static partial class Math
{
/// <summary>
/// Transforms the AABB with the given transform.
/// </summary>
/// <remarks>
/// The resulting AABB encapsulates the transformed AABB which may not be axis aligned after the transformation.
/// </remarks>
/// <param name="transform">Transform to apply to AABB.</param>
/// <param name="aabb">AABB to be transformed.</param>
/// <returns>Transformed AABB.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static MinMaxAABB Transform(RigidTransform transform, MinMaxAABB aabb)
{
float3 halfExtentsInA = aabb.HalfExtents;
// Rotate each axis individually and find their new positions in the rotated space.
float3 x = math.rotate(transform.rot, new float3(halfExtentsInA.x, 0, 0));
float3 y = math.rotate(transform.rot, new float3(0, halfExtentsInA.y, 0));
float3 z = math.rotate(transform.rot, new float3(0, 0, halfExtentsInA.z));
// Find the new max corner by summing the rotated axes. Absolute value of each axis
// since we are trying to find the max corner.
float3 halfExtentsInB = math.abs(x) + math.abs(y) + math.abs(z);
float3 centerInB = math.transform(transform, aabb.Center);
return new MinMaxAABB(centerInB - halfExtentsInB, centerInB + halfExtentsInB);
}
/// <summary>
/// Transforms the AABB with the given transform.
/// </summary>
/// <remarks>
/// The resulting AABB encapsulates the transformed AABB which may not be axis aligned after the transformation.
/// </remarks>
/// <param name="transform">Transform to apply to AABB.</param>
/// <param name="aabb">AABB to be transformed.</param>
/// <returns>Transformed AABB.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static MinMaxAABB Transform(float4x4 transform, MinMaxAABB aabb)
{
var transformed = Transform(new float3x3(transform), aabb);
transformed.Min += transform.c3.xyz;
transformed.Max += transform.c3.xyz;
return transformed;
}
/// <summary>
/// Transforms the AABB with the given transform.
/// </summary>
/// <remarks>
/// The resulting AABB encapsulates the transformed AABB which may not be axis aligned after the transformation.
/// </remarks>
/// <param name="transform">Transform to apply to AABB.</param>
/// <param name="aabb">AABB to be transformed.</param>
/// <returns>Transformed AABB.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static MinMaxAABB Transform(float3x3 transform, MinMaxAABB aabb)
{
// From Christer Ericson's Real-Time Collision Detection on page 86 and 87.
// We want the transformed minimum and maximums of the AABB. Multiplying a 3x3 matrix on the left of a
// column vector looks like so:
//
// [ c0.x c1.x c2.x ] [ x ] [ c0.x * x + c1.x * y + c2.x * z ]
// [ c0.y c1.y c2.y ] [ y ] = [ c0.y * x + c1.y * y + c2.y * z ]
// [ c0.z c1.z c2.z ] [ z ] [ c0.z * x + c1.z * y + c2.z * z ]
//
// The column vectors we will use are the input AABB's min and max. Simply multiplying those two vectors
// with the transformation matrix won't guarantee we get the new min and max since those are only two
// points out of eight in the AABB and one of the other six may set the new min or max.
//
// To ensure we get the correct min and max, we must transform all eight points. But it's not necessary
// to actually perform eight matrix multiplies to get our final result. Instead, we can build the min and
// max incrementally by computing each term in the above matrix multiply separately then summing the min
// (or max). For instance, to find the new minimum contributed by the original min and max x component, we
// compute this:
//
// newMin.x = min(c0.x * Min.x, c0.x * Max.x);
// newMin.y = min(c0.y * Min.x, c0.y * Max.x);
// newMin.z = min(c0.z * Min.x, c0.z * Max.x);
//
// Then we add minimum contributed by the original min and max y components:
//
// newMin.x += min(c1.x * Min.y, c1.x * Max.y);
// newMin.y += min(c1.y * Min.y, c1.y * Max.y);
// newMin.z += min(c1.z * Min.y, c1.z * Max.y);
//
// And so on. Translation can be handled by simply initializing the new min and max with the translation
// amount since it does not affect the min and max bounds in local space.
var t1 = transform.c0.xyz * aabb.Min.xxx;
var t2 = transform.c0.xyz * aabb.Max.xxx;
var minMask = t1 < t2;
var transformed = new MinMaxAABB(select(t2, t1, minMask), select(t2, t1, !minMask));
t1 = transform.c1.xyz * aabb.Min.yyy;
t2 = transform.c1.xyz * aabb.Max.yyy;
minMask = t1 < t2;
transformed.Min += select(t2, t1, minMask);
transformed.Max += select(t2, t1, !minMask);
t1 = transform.c2.xyz * aabb.Min.zzz;
t2 = transform.c2.xyz * aabb.Max.zzz;
minMask = t1 < t2;
transformed.Min += select(t2, t1, minMask);
transformed.Max += select(t2, t1, !minMask);
return transformed;
}
}
}

View File

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

View File

@@ -0,0 +1,234 @@
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
namespace Unity.Mathematics.Geometry
{
/// <summary>
/// A plane represented by a normal vector and a distance along the normal from the origin.
/// </summary>
/// <remarks>
/// A plane splits the 3D space in half. The normal vector points to the positive half and the other half is
/// considered negative.
/// </remarks>
[DebuggerDisplay("{Normal}, {Distance}")]
[Serializable]
[Il2CppEagerStaticClassConstruction]
public struct Plane
{
/// <summary>
/// A plane in the form Ax + By + Cz + Dw = 0.
/// </summary>
/// <remarks>
/// Stores the plane coefficients A, B, C, D where (A, B, C) is a unit normal vector and D is the distance
/// from the origin. A plane stored with a unit normal vector is called a normalized plane.
/// </remarks>
public float4 NormalAndDistance;
/// <summary>
/// Constructs a Plane from arbitrary coefficients A, B, C, D of the plane equation Ax + By + Cz + Dw = 0.
/// </summary>
/// <remarks>
/// The constructed plane will be the normalized form of the plane specified by the given coefficients.
/// </remarks>
/// <param name="coefficientA">Coefficient A from plane equation.</param>
/// <param name="coefficientB">Coefficient B from plane equation.</param>
/// <param name="coefficientC">Coefficient C from plane equation.</param>
/// <param name="coefficientD">Coefficient D from plane equation.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Plane(float coefficientA, float coefficientB, float coefficientC, float coefficientD)
{
NormalAndDistance = Normalize(new float4(coefficientA, coefficientB, coefficientC, coefficientD));
}
/// <summary>
/// Constructs a plane with a normal vector and distance from the origin.
/// </summary>
/// <remarks>
/// The constructed plane will be the normalized form of the plane specified by the inputs.
/// </remarks>
/// <param name="normal">A non-zero vector that is perpendicular to the plane. It may be any length.</param>
/// <param name="distance">Distance from the origin along the normal. A negative value moves the plane in the
/// same direction as the normal while a positive value moves it in the opposite direction.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Plane(float3 normal, float distance)
{
NormalAndDistance = Normalize(new float4(normal, distance));
}
/// <summary>
/// Constructs a plane with a normal vector and a point that lies in the plane.
/// </summary>
/// <remarks>
/// The constructed plane will be the normalized form of the plane specified by the inputs.
/// </remarks>
/// <param name="normal">A non-zero vector that is perpendicular to the plane. It may be any length.</param>
/// <param name="pointInPlane">A point that lies in the plane.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Plane(float3 normal, float3 pointInPlane)
: this(normal, -math.dot(normal, pointInPlane))
{
}
/// <summary>
/// Constructs a plane with two vectors and a point that all lie in the plane.
/// </summary>
/// <remarks>
/// The constructed plane will be the normalized form of the plane specified by the inputs.
/// </remarks>
/// <param name="vector1InPlane">A non-zero vector that lies in the plane. It may be any length.</param>
/// <param name="vector2InPlane">A non-zero vector that lies in the plane. It may be any length and must not be a scalar multiple of <paramref name="vector1InPlane"/>.</param>
/// <param name="pointInPlane">A point that lies in the plane.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Plane(float3 vector1InPlane, float3 vector2InPlane, float3 pointInPlane)
: this(math.cross(vector1InPlane, vector2InPlane), pointInPlane)
{
}
/// <summary>
/// Creates a normalized Plane directly without normalization cost.
/// </summary>
/// <remarks>
/// If you have a unit length normal vector, you can create a Plane faster than using one of its constructors
/// by calling this function.
/// </remarks>
/// <param name="unitNormal">A non-zero vector that is perpendicular to the plane. It must be unit length.</param>
/// <param name="distance">Distance from the origin along the normal. A negative value moves the plane in the
/// same direction as the normal while a positive value moves it in the opposite direction.</param>
/// <returns>Normalized Plane constructed from given inputs.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Plane CreateFromUnitNormalAndDistance(float3 unitNormal, float distance)
{
return new Plane { NormalAndDistance = new float4(unitNormal, distance) };
}
/// <summary>
/// Creates a normalized Plane without normalization cost.
/// </summary>
/// <remarks>
/// If you have a unit length normal vector, you can create a Plane faster than using one of its constructors
/// by calling this function.
/// </remarks>
/// <param name="unitNormal">A non-zero vector that is perpendicular to the plane. It must be unit length.</param>
/// <param name="pointInPlane">A point that lies in the plane.</param>
/// <returns>Normalized Plane constructed from given inputs.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Plane CreateFromUnitNormalAndPointInPlane(float3 unitNormal, float3 pointInPlane)
{
return new Plane { NormalAndDistance = new float4(unitNormal, -math.dot(unitNormal, pointInPlane)) };
}
/// <summary>
/// Get/set the normal vector of the plane.
/// </summary>
/// <remarks>
/// It is assumed that the normal is unit length. If you set a new plane such that Ax + By + Cz + Dw = 0 but
/// (A, B, C) is not unit length, then you must normalize the plane by calling <see cref="Normalize(Plane)"/>.
/// </remarks>
public float3 Normal
{
get => NormalAndDistance.xyz;
set => NormalAndDistance.xyz = value;
}
/// <summary>
/// Get/set the distance of the plane from the origin. May be a negative value.
/// </summary>
/// <remarks>
/// It is assumed that the normal is unit length. If you set a new plane such that Ax + By + Cz + Dw = 0 but
/// (A, B, C) is not unit length, then you must normalize the plane by calling <see cref="Normalize(Plane)"/>.
/// </remarks>
public float Distance
{
get => NormalAndDistance.w;
set => NormalAndDistance.w = value;
}
/// <summary>
/// Normalizes the given Plane.
/// </summary>
/// <param name="plane">Plane to normalize.</param>
/// <returns>Normalized Plane.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Plane Normalize(Plane plane)
{
return new Plane { NormalAndDistance = Normalize(plane.NormalAndDistance) };
}
/// <summary>
/// Normalizes the plane represented by the given plane coefficients.
/// </summary>
/// <remarks>
/// The plane coefficients are A, B, C, D and stored in that order in the <see cref="float4"/>.
/// </remarks>
/// <param name="planeCoefficients">Plane coefficients A, B, C, D stored in x, y, z, w (respectively).</param>
/// <returns>Normalized plane coefficients.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float4 Normalize(float4 planeCoefficients)
{
float recipLength = math.rsqrt(math.lengthsq(planeCoefficients.xyz));
return new Plane { NormalAndDistance = planeCoefficients * recipLength };
}
/// <summary>
/// Get the signed distance from the point to the plane.
/// </summary>
/// <remarks>
/// Plane must be normalized prior to calling this function. Distance is positive if point is on side of the
/// plane the normal points to, negative if on the opposite side and zero if the point lies in the plane.
/// Avoid comparing equality with 0.0f when testing if a point lies exactly in the plane and use an approximate
/// comparison instead.
/// </remarks>
/// <param name="point">Point to find the signed distance with.</param>
/// <returns>Signed distance of the point from the plane.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float SignedDistanceToPoint(float3 point)
{
CheckPlaneIsNormalized();
return math.dot(NormalAndDistance, new float4(point, 1.0f));
}
/// <summary>
/// Projects the given point onto the plane.
/// </summary>
/// <remarks>
/// Plane must be normalized prior to calling this function. The result is the position closest to the point
/// that still lies in the plane.
/// </remarks>
/// <param name="point">Point to project onto the plane.</param>
/// <returns>Projected point that's inside the plane.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float3 Projection(float3 point)
{
CheckPlaneIsNormalized();
return point - Normal * SignedDistanceToPoint(point);
}
/// <summary>
/// Flips the plane so the normal points in the opposite direction.
/// </summary>
public Plane Flipped => new Plane { NormalAndDistance = -NormalAndDistance };
/// <summary>
/// Implicitly converts a <see cref="Plane"/> to <see cref="float4"/>.
/// </summary>
/// <param name="plane">Plane to convert.</param>
/// <returns>A <see cref="float4"/> representing the plane.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float4(Plane plane) => plane.NormalAndDistance;
[Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")]
void CheckPlaneIsNormalized()
{
float ll = math.lengthsq(Normal.xyz);
const float lowerBound = 0.999f * 0.999f;
const float upperBound = 1.001f * 1.001f;
if (ll < lowerBound || ll > upperBound)
{
throw new System.ArgumentException("Plane must be normalized. Call Plane.Normalize() to normalize plane.");
}
}
}
}

View File

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

View File

@@ -0,0 +1,13 @@
using System;
namespace Unity.IL2CPP.CompilerServices
{
/// <summary>
/// This is used to indicate to IL2CPP that the static constructors should be executed eagerly at startup
/// rather than lazily at runtime.
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = false, AllowMultiple = false)]
internal class Il2CppEagerStaticClassConstructionAttribute : Attribute
{
}
}

View File

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

View File

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

View File

@@ -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.

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e8895079ca68e498482a3075d7e34508
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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#

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 16687ba1ea1804a9fb7cb7c2410eab23
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,61 @@
// 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
{
/// <summary>
/// 2D Cellular noise ("Worley noise") with standard 3x3 search window for good feature point values.
/// </summary>
/// <param name="P">A point in 2D space.</param>
/// <returns>Feature points. F1 is in the x component, F2 in the y component.</returns>
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);
}
}
}

View File

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

View File

@@ -0,0 +1,48 @@
// 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
{
/// <summary>
/// 2D Cellular noise ("Worley noise") with a 2x2 search window.
/// </summary>
/// <remarks>
/// Faster than using 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.
/// </remarks>
/// <param name="P">A point in 2D space.</param>
/// <returns>Feature points. F1 is in the x component, F2 in the y component.</returns>
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);
}
}
}

View File

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

View File

@@ -0,0 +1,68 @@
// 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
{
/// <summary>
/// 3D Cellular noise ("Worley noise") with a 2x2x2 search window.
/// </summary>
/// <remarks>
/// Faster than using 3x3x3, at the expense of some pattern artifacts. F2 is often wrong and has sharp discontinuities. If you need a smooth F2, use the slower 3x3x3 version.
/// </remarks>
/// <param name="P">A point in 3D space.</param>
/// <returns>Feature points. F1 is in the x component, F2 in the y component.</returns>
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
}
}
}

View File

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

View File

@@ -0,0 +1,171 @@
// 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
{
/// <summary>
/// 3D Cellular noise ("Worley noise") with 3x3x3 search region for good F2 everywhere, but a lot slower than the 2x2x2 version.
/// </summary>
/// <param name="P">A point in 2D space.</param>
/// <returns>Feature points. F1 is in the x component, F2 in the y component.</returns>
// 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
}
}
}

View File

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

View File

@@ -0,0 +1,111 @@
//
// 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
{
/// <summary>
/// Classic Perlin noise
/// </summary>
/// <param name="P">Point on a 2D grid of gradient vectors.</param>
/// <returns>Noise value.</returns>
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;
}
/// <summary>
/// Classic Perlin noise, periodic variant
/// </summary>
/// <param name="P">Point on a 2D grid of gradient vectors.</param>
/// <param name="rep">Period of repetition.</param>
/// <returns>Noise value.</returns>
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;
}
}
}

View File

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

View File

@@ -0,0 +1,170 @@
//
// 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
{
/// <summary>
/// Classic Perlin noise
/// </summary>
/// <param name="P">Point on a 3D grid of gradient vectors.</param>
/// <returns>Noise value.</returns>
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;
}
/// <summary>
/// Classic Perlin noise, periodic variant
/// </summary>
/// <param name="P">Point on a 3D grid of gradient vectors.</param>
/// <param name="rep">Period of repetition.</param>
/// <returns>Noise value.</returns>
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;
}
}
}

View File

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

View File

@@ -0,0 +1,300 @@
//
// 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
{
/// <summary>
/// Classic Perlin noise
/// </summary>
/// <param name="P">Point on a 4D grid of gradient vectors.</param>
/// <returns>Noise value.</returns>
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;
}
/// <summary>
/// Classic Perlin noise, periodic variant
/// </summary>
/// <param name="P">Point on a 4D grid of gradient vectors.</param>
/// <param name="rep">Period of repetition.</param>
/// <returns>Noise value.</returns>
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;
}
}
}

View File

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

View File

@@ -0,0 +1,55 @@
using Unity.IL2CPP.CompilerServices;
using static Unity.Mathematics.math;
namespace Unity.Mathematics
{
/// <summary>
/// A static class containing noise functions.
/// </summary>
[Il2CppEagerStaticClassConstruction]
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));
}
}
}

View File

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

View File

@@ -0,0 +1,73 @@
//
// 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
{
/// <summary>
/// Simplex noise.
/// </summary>
/// <param name="v">Input coordinate.</param>
/// <returns>Noise value.</returns>
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);
}
}
}

View File

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

View File

@@ -0,0 +1,98 @@
//
// 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
{
/// <summary>
/// Simplex noise.
/// </summary>
/// <param name="v">Input coordinate.</param>
/// <returns>Noise value.</returns>
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)));
}
}
}

View File

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

View File

@@ -0,0 +1,108 @@
//
// 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
{
/// <summary>
/// Simplex noise.
/// </summary>
/// <param name="v">Input coordinate.</param>
/// <param name="gradient">Output 3D noise gradient.</param>
/// <returns>Noise value.</returns>
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);
}
}
}

View File

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

View File

@@ -0,0 +1,104 @@
//
// 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
{
/// <summary>
/// Simplex noise.
/// </summary>
/// <param name="v">Input coordinate.</param>
/// <returns>Noise value.</returns>
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 ) ) ) ) ;
}
}
}

View File

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

View File

@@ -0,0 +1,442 @@
//
// 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
{
/// <summary>
/// 2-D tiling simplex noise with rotating gradients and analytical derivative.
/// </summary>
/// <param name="pos">Input (x,y) coordinate.</param>
/// <param name="per">The x and y period, where per.x is a positive integer and per.y is a positive even integer.</param>
/// <param name="rot">Angle to rotate the gradients.</param>
/// <returns>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.</returns>
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);
}
/// <summary>
/// 2-D tiling simplex noise with fixed gradients and analytical derivative.
/// </summary>
/// <param name="pos">Input (x,y) coordinate.</param>
/// <param name="per">The x and y period, where per.x is a positive integer and per.y is a positive even integer.</param>
/// <returns>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.</returns>
public static float3 psrdnoise(float2 pos, float2 per)
{
return psrdnoise(pos, per, 0.0f);
}
/// <summary>
/// 2-D tiling simplex noise with rotating gradients, but without the analytical derivative.
/// </summary>
/// <param name="pos">Input (x,y) coordinate.</param>
/// <param name="per">The x and y period, where per.x is a positive integer and per.y is a positive even integer.</param>
/// <param name="rot">Angle to rotate the gradients.</param>
/// <returns>Noise value.</returns>
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;
}
/// <summary>
/// 2-D tiling simplex noise with fixed gradients, without the analytical derivative.
/// </summary>
/// <param name="pos">Input (x,y) coordinate.</param>
/// <param name="per">The x and y period, where per.x is a positive integer and per.y is a positive even integer.</param>
/// <returns>Noise value.</returns>
public static float psrnoise(float2 pos, float2 per)
{
return psrnoise(pos, per, 0.0f);
}
/// <summary>
/// 2-D non-tiling simplex noise with rotating gradients and analytical derivative.
/// </summary>
/// <param name="pos">Input (x,y) coordinate.</param>
/// <param name="rot">Angle to rotate the gradients.</param>
/// <returns>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.</returns>
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);
}
/// <summary>
/// 2-D non-tiling simplex noise with fixed gradients and analytical derivative.
/// </summary>
/// <param name="pos">Input (x,y) coordinate.</param>
/// <returns>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.</returns>
public static float3 srdnoise(float2 pos)
{
return srdnoise(pos, 0.0f);
}
/// <summary>
/// 2-D non-tiling simplex noise with rotating gradients, without the analytical derivative.
/// </summary>
/// <param name="pos">Input (x,y) coordinate.</param>
/// <param name="rot">Angle to rotate the gradients.</param>
/// <returns>Noise value.</returns>
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;
}
/// <summary>
/// 2-D non-tiling simplex noise with fixed gradients, without the analytical derivative.
/// </summary>
/// <param name="pos">Input (x,y) coordinate.</param>
/// <returns>Noise value.</returns>
public static float srnoise(float2 pos)
{
return srnoise(pos, 0.0f);
}
}
}

View File

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

View File

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

View File

@@ -0,0 +1,5 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: InternalsVisibleTo("Unity.Mathematics.Tests")]
[assembly: InternalsVisibleTo("Unity.Mathematics.PerformanceTests")]

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: fb0d7ffc71c40bd49a849e6427f80cb5

View File

@@ -0,0 +1,12 @@
namespace Unity.Mathematics
{
/// <summary>
/// Used by property drawers when vectors should be post normalized.
/// </summary>
public class PostNormalizeAttribute : UnityEngine.PropertyAttribute {}
/// <summary>
/// Used by property drawers when vectors should not be normalized.
/// </summary>
public class DoNotNormalizeAttribute : UnityEngine.PropertyAttribute {}
}

View File

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

View File

@@ -0,0 +1,4 @@
{
"name": "Unity.Mathematics",
"allowUnsafeCode": true
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d8b63aba1907145bea998dd612889d6b
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,322 @@
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
using static Unity.Mathematics.math;
namespace Unity.Mathematics
{
/// <summary>
/// An affine transformation type.
/// </summary>
[Il2CppEagerStaticClassConstruction]
[Serializable]
public struct AffineTransform : IEquatable<AffineTransform>, IFormattable
{
/// <summary>
/// The rotation and scale part of the affine transformation.
/// </summary>
public float3x3 rs;
/// <summary>
/// The translation part of the affine transformation.
/// </summary>
public float3 t;
/// <summary>An AffineTransform representing the identity transform.</summary>
public static readonly AffineTransform identity = new AffineTransform(float3.zero, float3x3.identity);
/// <summary>
/// An AffineTransform zero value.
/// </summary>
public static readonly AffineTransform zero;
/// <summary>Constructs an AffineTransform from a translation represented by a float3 vector and rotation represented by a unit quaternion.</summary>
/// <param name="translation">The translation vector.</param>
/// <param name="rotation">The rotation quaternion.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public AffineTransform(float3 translation, quaternion rotation)
{
rs = float3x3(rotation);
t = translation;
}
/// <summary>Constructs an AffineTransform from a translation represented by a float3 vector, rotation represented by a unit quaternion and scale represented by a float3 vector.</summary>
/// <param name="translation">The translation vector.</param>
/// <param name="rotation">The rotation quaternion.</param>
/// <param name="scale">The scale vector.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public AffineTransform(float3 translation, quaternion rotation, float3 scale)
{
rs = mulScale(math.float3x3(rotation), scale);
t = translation;
}
/// <summary>Constructs an AffineTransform from a translation represented by float3 vector and a float3x3 matrix representing both rotation and scale.</summary>
/// <param name="translation">The translation vector.</param>
/// <param name="rotationScale">The rotation and scale matrix.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public AffineTransform(float3 translation, float3x3 rotationScale)
{
rs = rotationScale;
t = translation;
}
/// <summary>Constructs an AffineTransform from float3x3 matrix representating both rotation and scale.</summary>
/// <param name="rotationScale">The rotation and scale matrix.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public AffineTransform(float3x3 rotationScale)
{
rs = rotationScale;
t = float3.zero;
}
/// <summary>Constructs an AffineTransform from a RigidTransform.</summary>
/// <param name="rigid">The RigidTransform.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public AffineTransform(RigidTransform rigid)
{
rs = math.float3x3(rigid.rot);
t = rigid.pos;
}
/// <summary>Constructs an AffineTransform from a float3x4 matrix.</summary>
/// <param name="m">The float3x4 matrix.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public AffineTransform(float3x4 m)
{
rs = math.float3x3(m.c0, m.c1, m.c2);
t = m.c3;
}
/// <summary>Constructs an AffineTransform from a float4x4 matrix.</summary>
/// <param name="m">The float4x4 matrix.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public AffineTransform(float4x4 m)
{
rs = math.float3x3(m.c0.xyz, m.c1.xyz, m.c2.xyz);
t = m.c3.xyz;
}
/// <summary>Implicit float3x4 cast operator.</summary>
/// <param name="m">The AffineTransform.</param>
/// <returns>The converted AffineTransform.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float3x4(AffineTransform m) { return float3x4(m.rs.c0, m.rs.c1, m.rs.c2, m.t); }
/// <summary>Implicit float4x4 cast operator.</summary>
/// <param name="m">The AffineTransform.</param>
/// <returns>The converted AffineTransform.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float4x4(AffineTransform m) { return float4x4(float4(m.rs.c0, 0f), float4(m.rs.c1, 0f), float4(m.rs.c2, 0f), float4(m.t, 1f)); }
/// <summary>Returns true if the AffineTransform is equal to a given AffineTransform, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(AffineTransform rhs) { return rs.Equals(rhs.rs) && t.Equals(rhs.t); }
/// <summary>Returns true if the AffineTransform is equal to a given AffineTransform, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is AffineTransform converted && Equals(converted); }
/// <summary>Returns a hash code for the AffineTransform.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)hash(this); }
/// <summary>Returns a string representation of the AffineTransform.</summary>
/// <returns>String representation of the value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override string ToString()
{
return string.Format("AffineTransform(({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f), ({9}f, {10}f, {11}f))",
rs.c0.x, rs.c1.x, rs.c2.x, rs.c0.y, rs.c1.y, rs.c2.y, rs.c0.z, rs.c1.z, rs.c2.z, t.x, t.y, t.z
);
}
/// <summary>Returns a string representation of the AffineTransform using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public string ToString(string format, IFormatProvider formatProvider)
{
return string.Format("AffineTransform(({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f), ({9}f, {10}f, {11}f))",
rs.c0.x.ToString(format, formatProvider), rs.c1.x.ToString(format, formatProvider), rs.c2.x.ToString(format, formatProvider),
rs.c0.y.ToString(format, formatProvider), rs.c1.y.ToString(format, formatProvider), rs.c2.y.ToString(format, formatProvider),
rs.c0.z.ToString(format, formatProvider), rs.c1.z.ToString(format, formatProvider), rs.c2.z.ToString(format, formatProvider),
t.x.ToString(format, formatProvider), t.y.ToString(format, formatProvider), t.z.ToString(format, formatProvider)
);
}
}
public static partial class math
{
/// <summary>Returns an AffineTransform constructed from a translation represented by a float3 vector and rotation represented by a unit quaternion.</summary>
/// <param name="translation">The AffineTransform translation.</param>
/// <param name="rotation">The AffineTransform rotation.</param>
/// <returns>The AffineTransform given the translation vector and rotation quaternion.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform AffineTransform(float3 translation, quaternion rotation) { return new AffineTransform(translation, rotation); }
/// <summary>Returns an AffineTransform constructed from a translation represented by a float3 vector, rotation represented by a unit quaternion and scale represented by a float3 vector.</summary>
/// <param name="translation">The translation vector.</param>
/// <param name="rotation">The rotation quaternion.</param>
/// <param name="scale">The scale vector.</param>
/// <returns>The AffineTransform given the translation vector, rotation quaternion and scale vector.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform AffineTransform(float3 translation, quaternion rotation, float3 scale) { return new AffineTransform(translation, rotation, scale); }
/// <summary>Returns an AffineTransform constructed from a translation represented by float3 vector and a float3x3 matrix representing both rotation and scale.</summary>
/// <param name="translation">The translation vector.</param>
/// <param name="rotationScale">The rotation and scale matrix.</param>
/// <returns>The AffineTransform given the translation vector and float3x3 matrix.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform AffineTransform(float3 translation, float3x3 rotationScale) { return new AffineTransform(translation, rotationScale); }
/// <summary>Returns an AffineTransform constructed from a float3x3 matrix representing both rotation and scale.</summary>
/// <param name="rotationScale">The rotation and scale matrix.</param>
/// <returns>The AffineTransform given a float3x3 matrix.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform AffineTransform(float3x3 rotationScale) { return new AffineTransform(rotationScale); }
/// <summary>Returns an AffineTransform constructed from a float4x4 matrix.</summary>
/// <param name="m">The float4x4 matrix.</param>
/// <returns>The AffineTransform given a float4x4 matrix.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform AffineTransform(float4x4 m) { return new AffineTransform(m); }
/// <summary>Returns an AffineTransform constructed from a float3x4 matrix.</summary>
/// <param name="m">The float3x4 matrix.</param>
/// <returns>The AffineTransform given a float3x4 matrix.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform AffineTransform(float3x4 m) { return new AffineTransform(m); }
/// <summary>Returns an AffineTransform constructed from a RigidTransform.</summary>
/// <param name="rigid">The RigidTransform.</param>
/// <returns>The AffineTransform given a RigidTransform.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform AffineTransform(RigidTransform rigid) { return new AffineTransform (rigid); }
/// <summary>Returns a float4x4 matrix constructed from an AffineTransform.</summary>
/// <param name="transform">The AffineTransform.</param>
/// <returns>The float4x4 matrix given an AffineTransform.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float4x4 float4x4(AffineTransform transform) { return float4x4(float4(transform.rs.c0, 0f), float4(transform.rs.c1, 0f), float4(transform.rs.c2, 0f), float4(transform.t, 1f)); }
/// <summary>Returns a float3x4 matrix constructed from an AffineTransform.</summary>
/// <param name="transform">The AffineTransform.</param>
/// <returns>The float3x4 matrix given an AffineTransform.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float3x4 float3x4(AffineTransform transform) { return float3x4(transform.rs.c0, transform.rs.c1, transform.rs.c2, transform.t); }
/// <summary>Returns the result of transforming the AffineTransform b by the AffineTransform a.</summary>
/// <param name="a">The AffineTransform on the left.</param>
/// <param name="b">The AffineTransform on the right.</param>
/// <returns>The AffineTransform of a transforming b.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform mul(AffineTransform a, AffineTransform b)
{
return new AffineTransform(transform(a, b.t), mul(a.rs, b.rs));
}
/// <summary>Returns the result of transforming the AffineTransform b by a float3x3 matrix a.</summary>
/// <param name="a">The float3x3 matrix on the left.</param>
/// <param name="b">The AffineTransform on the right.</param>
/// <returns>The AffineTransform of a transforming b.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform mul(float3x3 a, AffineTransform b)
{
return new AffineTransform(mul(a, b.t), mul(a, b.rs));
}
/// <summary>Returns the result of transforming the float3x3 b by an AffineTransform a.</summary>
/// <param name="a">The AffineTransform on the left.</param>
/// <param name="b">The float3x3 matrix on the right.</param>
/// <returns>The AffineTransform of a transforming b.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform mul(AffineTransform a, float3x3 b)
{
return new AffineTransform(a.t, mul(b, a.rs));
}
/// <summary>Returns the result of transforming a float4 homogeneous coordinate by an AffineTransform.</summary>
/// <param name="a">The AffineTransform.</param>
/// <param name="pos">The position to be transformed.</param>
/// <returns>The transformed position.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float4 mul(AffineTransform a, float4 pos)
{
return float4(mul(a.rs, pos.xyz) + a.t * pos.w, pos.w);
}
/// <summary>Returns the result of rotating a float3 vector by an AffineTransform.</summary>
/// <param name="a">The AffineTransform.</param>
/// <param name="dir">The direction vector to rotate.</param>
/// <returns>The rotated direction vector.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float3 rotate(AffineTransform a, float3 dir)
{
return mul(a.rs, dir);
}
/// <summary>Returns the result of transforming a float3 point by an AffineTransform.</summary>
/// <param name="a">The AffineTransform.</param>
/// <param name="pos">The position to transform.</param>
/// <returns>The transformed position.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float3 transform(AffineTransform a, float3 pos)
{
return a.t + mul(a.rs, pos);
}
/// <summary>Returns the inverse of an AffineTransform.</summary>
/// <param name="a">The AffineTransform to invert.</param>
/// <returns>The inverse AffineTransform.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static AffineTransform inverse(AffineTransform a)
{
AffineTransform inv;
inv.rs = pseudoinverse(a.rs);
inv.t = mul(inv.rs, -a.t);
return inv;
}
/// <summary>Decomposes the AffineTransform in translation, rotation and scale.</summary>
/// <param name="a">The AffineTransform</param>
/// <param name="translation">The decomposed translation vector of the AffineTransform.</param>
/// <param name="rotation">The decomposed rotation quaternion of the AffineTransform.</param>
/// <param name="scale">The decomposed scale of the AffineTransform.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void decompose(AffineTransform a, out float3 translation, out quaternion rotation, out float3 scale)
{
translation = a.t;
rotation = math.rotation(a.rs);
var sm = mul(float3x3(conjugate(rotation)), a.rs);
scale = float3(sm.c0.x, sm.c1.y, sm.c2.z);
}
/// <summary>Returns a uint hash code of an AffineTransform.</summary>
/// <param name="a">The AffineTransform to hash.</param>
/// <returns>The hash code of the input AffineTransform.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint hash(AffineTransform a)
{
return hash(a.rs) + 0xC5C5394Bu * hash(a.t);
}
/// <summary>
/// Returns a uint4 vector hash code of an AffineTransform.
/// 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.
/// </summary>
/// <param name="a">The AffineTransform to hash.</param>
/// <returns>The uint4 wide hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint4 hashwide(AffineTransform a)
{
return hashwide(a.rs).xyzz + 0xC5C5394Bu * hashwide(a.t).xyzz;
}
}
}

View File

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

View File

@@ -0,0 +1,626 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Diagnostics;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2 component vector of bools.</summary>
[DebuggerTypeProxy(typeof(bool2.DebuggerProxy))]
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool2 : System.IEquatable<bool2>
{
/// <summary>x component of the vector.</summary>
[MarshalAs(UnmanagedType.U1)]
public bool x;
/// <summary>y component of the vector.</summary>
[MarshalAs(UnmanagedType.U1)]
public bool y;
/// <summary>Constructs a bool2 vector from two bool values.</summary>
/// <param name="x">The constructed vector's x component will be set to this value.</param>
/// <param name="y">The constructed vector's y component will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool2(bool x, bool y)
{
this.x = x;
this.y = y;
}
/// <summary>Constructs a bool2 vector from a bool2 vector.</summary>
/// <param name="xy">The constructed vector's xy components will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool2(bool2 xy)
{
this.x = xy.x;
this.y = xy.y;
}
/// <summary>Constructs a bool2 vector from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool2(bool v)
{
this.x = v;
this.y = v;
}
/// <summary>Implicitly converts a single bool value to a bool2 vector by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool2(bool v) { return new bool2(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool2 vectors.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); }
/// <summary>Returns the result of a componentwise equality operation on a bool2 vector and a bool value.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (bool2 lhs, bool rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool2 vector.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (bool lhs, bool2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); }
/// <summary>Returns the result of a componentwise not equal operation on two bool2 vectors.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); }
/// <summary>Returns the result of a componentwise not equal operation on a bool2 vector and a bool value.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (bool2 lhs, bool rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool2 vector.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (bool lhs, bool2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); }
/// <summary>Returns the result of a componentwise not operation on a bool2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool2 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator ! (bool2 val) { return new bool2 (!val.x, !val.y); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool2 vectors.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise bitwise and.</param>
/// <returns>bool2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator & (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x & rhs.x, lhs.y & rhs.y); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool2 vector and a bool value.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator & (bool2 lhs, bool rhs) { return new bool2 (lhs.x & rhs, lhs.y & rhs); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool2 vector.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise bitwise and.</param>
/// <returns>bool2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator & (bool lhs, bool2 rhs) { return new bool2 (lhs & rhs.x, lhs & rhs.y); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool2 vectors.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise bitwise or.</param>
/// <returns>bool2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator | (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x | rhs.x, lhs.y | rhs.y); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool2 vector and a bool value.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator | (bool2 lhs, bool rhs) { return new bool2 (lhs.x | rhs, lhs.y | rhs); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool2 vector.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise bitwise or.</param>
/// <returns>bool2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator | (bool lhs, bool2 rhs) { return new bool2 (lhs | rhs.x, lhs | rhs.y); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool2 vectors.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator ^ (bool2 lhs, bool2 rhs) { return new bool2 (lhs.x ^ rhs.x, lhs.y ^ rhs.y); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool2 vector and a bool value.</summary>
/// <param name="lhs">Left hand side bool2 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator ^ (bool2 lhs, bool rhs) { return new bool2 (lhs.x ^ rhs, lhs.y ^ rhs); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool2 vector.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool2 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator ^ (bool lhs, bool2 rhs) { return new bool2 (lhs ^ rhs.x, lhs ^ rhs.y); }
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 xxxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(x, x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 xxxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(x, x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 xxyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(x, x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 xxyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(x, x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 xyxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(x, y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 xyxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(x, y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 xyyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(x, y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 xyyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(x, y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 yxxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(y, x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 yxxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(y, x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 yxyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(y, x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 yxyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(y, x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 yyxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(y, y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 yyxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(y, y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 yyyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(y, y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool4 yyyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool4(y, y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool3 xxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool3(x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool3 xxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool3(x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool3 xyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool3(x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool3 xyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool3(x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool3 yxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool3(y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool3 yxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool3(y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool3 yyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool3(y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool3 yyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool3(y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool2 xx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool2(x, x); }
}
/// <summary>Swizzles the vector.</summary>
[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; }
}
/// <summary>Swizzles the vector.</summary>
[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; }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public bool2 yy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new bool2(y, y); }
}
/// <summary>Returns the bool element at a specified index.</summary>
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; }
}
}
/// <summary>Returns true if the bool2 is equal to a given bool2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(bool2 rhs) { return x == rhs.x && y == rhs.y; }
/// <summary>Returns true if the bool2 is equal to a given bool2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool2 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool2.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool2 vector constructed from two bool values.</summary>
/// <param name="x">The constructed vector's x component will be set to this value.</param>
/// <param name="y">The constructed vector's y component will be set to this value.</param>
/// <returns>bool2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 bool2(bool x, bool y) { return new bool2(x, y); }
/// <summary>Returns a bool2 vector constructed from a bool2 vector.</summary>
/// <param name="xy">The constructed vector's xy components will be set to this value.</param>
/// <returns>bool2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 bool2(bool2 xy) { return new bool2(xy); }
/// <summary>Returns a bool2 vector constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 bool2(bool v) { return new bool2(v); }
/// <summary>Returns a uint hash code of a bool2 vector.</summary>
/// <param name="v">Vector value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint hash(bool2 v)
{
return csum(select(uint2(0x90A285BBu, 0x5D19E1D5u), uint2(0xFAAF07DDu, 0x625C45BDu), v));
}
/// <summary>
/// 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.
/// </summary>
/// <param name="v">Vector value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint2 hashwide(bool2 v)
{
return (select(uint2(0xC9F27FCBu, 0x6D2523B1u), uint2(0x6E2BF6A9u, 0xCC74B3B7u), v));
}
/// <summary>Returns the result of specified shuffling of the components from two bool2 vectors into a bool value.</summary>
/// <param name="left">bool2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">bool2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting bool.</param>
/// <returns>bool result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool shuffle(bool2 left, bool2 right, ShuffleComponent x)
{
return select_shuffle_component(left, right, x);
}
/// <summary>Returns the result of specified shuffling of the components from two bool2 vectors into a bool2 vector.</summary>
/// <param name="left">bool2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">bool2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting bool2 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting bool2 y component.</param>
/// <returns>bool2 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 shuffle(bool2 left, bool2 right, ShuffleComponent x, ShuffleComponent y)
{
return bool2(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y));
}
/// <summary>Returns the result of specified shuffling of the components from two bool2 vectors into a bool3 vector.</summary>
/// <param name="left">bool2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">bool2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting bool3 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting bool3 y component.</param>
/// <param name="z">The ShuffleComponent to use when setting the resulting bool3 z component.</param>
/// <returns>bool3 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3 shuffle(bool2 left, bool2 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z)
{
return bool3(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y),
select_shuffle_component(left, right, z));
}
/// <summary>Returns the result of specified shuffling of the components from two bool2 vectors into a bool4 vector.</summary>
/// <param name="left">bool2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">bool2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting bool4 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting bool4 y component.</param>
/// <param name="z">The ShuffleComponent to use when setting the resulting bool4 z component.</param>
/// <param name="w">The ShuffleComponent to use when setting the resulting bool4 w component.</param>
/// <returns>bool4 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4 shuffle(bool2 left, bool2 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w)
{
return bool4(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y),
select_shuffle_component(left, right, z),
select_shuffle_component(left, right, 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);
}
}
}
}

View File

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

View File

@@ -0,0 +1,292 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2x2 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool2x2 : System.IEquatable<bool2x2>
{
/// <summary>Column 0 of the matrix.</summary>
public bool2 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool2 c1;
/// <summary>Constructs a bool2x2 matrix from two bool2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool2x2(bool2 c0, bool2 c1)
{
this.c0 = c0;
this.c1 = c1;
}
/// <summary>Constructs a bool2x2 matrix from 4 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool2x2 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool2x2(bool v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Implicitly converts a single bool value to a bool2x2 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool2x2(bool v) { return new bool2x2(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool2x2 matrices.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); }
/// <summary>Returns the result of a componentwise equality operation on a bool2x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 == rhs, lhs.c1 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool2x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs == rhs.c0, lhs == rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on two bool2x2 matrices.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on a bool2x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 != rhs, lhs.c1 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool2x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs != rhs.c0, lhs != rhs.c1); }
/// <summary>Returns the result of a componentwise not operation on a bool2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool2x2 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator ! (bool2x2 val) { return new bool2x2 (!val.c0, !val.c1); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool2x2 matrices.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise bitwise and.</param>
/// <returns>bool2x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator & (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool2x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool2x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator & (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 & rhs, lhs.c1 & rhs); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool2x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise bitwise and.</param>
/// <returns>bool2x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator & (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs & rhs.c0, lhs & rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool2x2 matrices.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise bitwise or.</param>
/// <returns>bool2x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator | (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool2x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool2x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator | (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 | rhs, lhs.c1 | rhs); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool2x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise bitwise or.</param>
/// <returns>bool2x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator | (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs | rhs.c0, lhs | rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool2x2 matrices.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator ^ (bool2x2 lhs, bool2x2 rhs) { return new bool2x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool2x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x2 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator ^ (bool2x2 lhs, bool rhs) { return new bool2x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool2x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool2x2 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator ^ (bool lhs, bool2x2 rhs) { return new bool2x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); }
/// <summary>Returns the bool2 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool2x2 is equal to a given bool2x2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(bool2x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); }
/// <summary>Returns true if the bool2x2 is equal to a given bool2x2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool2x2 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool2x2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool2x2.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool2x2 matrix constructed from two bool2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <returns>bool2x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 bool2x2(bool2 c0, bool2 c1) { return new bool2x2(c0, c1); }
/// <summary>Returns a bool2x2 matrix constructed from from 4 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <returns>bool2x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 bool2x2(bool m00, bool m01,
bool m10, bool m11)
{
return new bool2x2(m00, m01,
m10, m11);
}
/// <summary>Returns a bool2x2 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 bool2x2(bool v) { return new bool2x2(v); }
/// <summary>Return the bool2x2 transpose of a bool2x2 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 transpose(bool2x2 v)
{
return bool2x2(
v.c0.x, v.c0.y,
v.c1.x, v.c1.y);
}
/// <summary>Returns a uint hash code of a bool2x2 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint2 vector hash code of a bool2x2 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

@@ -0,0 +1,306 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2x3 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool2x3 : System.IEquatable<bool2x3>
{
/// <summary>Column 0 of the matrix.</summary>
public bool2 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool2 c1;
/// <summary>Column 2 of the matrix.</summary>
public bool2 c2;
/// <summary>Constructs a bool2x3 matrix from three bool2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool2x3(bool2 c0, bool2 c1, bool2 c2)
{
this.c0 = c0;
this.c1 = c1;
this.c2 = c2;
}
/// <summary>Constructs a bool2x3 matrix from 6 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool2x3 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool2x3(bool v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Implicitly converts a single bool value to a bool2x3 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool2x3(bool v) { return new bool2x3(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool2x3 matrices.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool2x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator == (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool2x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator == (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
/// <summary>Returns the result of a componentwise not equal operation on two bool2x3 matrices.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool2x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator != (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool2x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator != (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
/// <summary>Returns the result of a componentwise not operation on a bool2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool2x3 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator ! (bool2x3 val) { return new bool2x3 (!val.c0, !val.c1, !val.c2); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool2x3 matrices.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise bitwise and.</param>
/// <returns>bool2x3 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool2x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool2x3 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator & (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool2x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise bitwise and.</param>
/// <returns>bool2x3 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator & (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool2x3 matrices.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise bitwise or.</param>
/// <returns>bool2x3 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool2x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool2x3 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator | (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool2x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise bitwise or.</param>
/// <returns>bool2x3 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator | (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool2x3 matrices.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x3 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool2x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x3 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x3 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator ^ (bool2x3 lhs, bool rhs) { return new bool2x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool2x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool2x3 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x3 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator ^ (bool lhs, bool2x3 rhs) { return new bool2x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); }
/// <summary>Returns the bool2 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool2x3 is equal to a given bool2x3, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(bool2x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
/// <summary>Returns true if the bool2x3 is equal to a given bool2x3, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool2x3 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool2x3.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool2x3.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool2x3 matrix constructed from three bool2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <returns>bool2x3 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 bool2x3(bool2 c0, bool2 c1, bool2 c2) { return new bool2x3(c0, c1, c2); }
/// <summary>Returns a bool2x3 matrix constructed from from 6 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <returns>bool2x3 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a bool2x3 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 bool2x3(bool v) { return new bool2x3(v); }
/// <summary>Return the bool3x2 transpose of a bool2x3 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a bool2x3 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint2 vector hash code of a bool2x3 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

@@ -0,0 +1,320 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2x4 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool2x4 : System.IEquatable<bool2x4>
{
/// <summary>Column 0 of the matrix.</summary>
public bool2 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool2 c1;
/// <summary>Column 2 of the matrix.</summary>
public bool2 c2;
/// <summary>Column 3 of the matrix.</summary>
public bool2 c3;
/// <summary>Constructs a bool2x4 matrix from four bool2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
[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;
}
/// <summary>Constructs a bool2x4 matrix from 8 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool2x4 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool2x4(bool v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Implicitly converts a single bool value to a bool2x4 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool2x4(bool v) { return new bool2x4(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool2x4 matrices.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise equality.</param>
/// <returns>bool2x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool2x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool2x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool2x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise equality.</param>
/// <returns>bool2x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on two bool2x4 matrices.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise not equal.</param>
/// <returns>bool2x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool2x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool2x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool2x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise not equal.</param>
/// <returns>bool2x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not operation on a bool2x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool2x4 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x4 operator ! (bool2x4 val) { return new bool2x4 (!val.c0, !val.c1, !val.c2, !val.c3); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool2x4 matrices.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise bitwise and.</param>
/// <returns>bool2x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool2x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool2x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool2x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise bitwise and.</param>
/// <returns>bool2x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool2x4 matrices.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise bitwise or.</param>
/// <returns>bool2x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool2x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool2x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool2x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise bitwise or.</param>
/// <returns>bool2x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool2x4 matrices.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool2x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool2x4 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool2x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool2x4 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool2x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the bool2 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool2x4 is equal to a given bool2x4, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[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); }
/// <summary>Returns true if the bool2x4 is equal to a given bool2x4, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool2x4 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool2x4.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool2x4.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool2x4 matrix constructed from four bool2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
/// <returns>bool2x4 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x4 bool2x4(bool2 c0, bool2 c1, bool2 c2, bool2 c3) { return new bool2x4(c0, c1, c2, c3); }
/// <summary>Returns a bool2x4 matrix constructed from from 8 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <returns>bool2x4 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a bool2x4 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x4 bool2x4(bool v) { return new bool2x4(v); }
/// <summary>Return the bool4x2 transpose of a bool2x4 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a bool2x4 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint2 vector hash code of a bool2x4 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

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

View File

@@ -0,0 +1,299 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 3x2 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool3x2 : System.IEquatable<bool3x2>
{
/// <summary>Column 0 of the matrix.</summary>
public bool3 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool3 c1;
/// <summary>Constructs a bool3x2 matrix from two bool3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool3x2(bool3 c0, bool3 c1)
{
this.c0 = c0;
this.c1 = c1;
}
/// <summary>Constructs a bool3x2 matrix from 6 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool3x2 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool3x2(bool v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Implicitly converts a single bool value to a bool3x2 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool3x2(bool v) { return new bool3x2(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool3x2 matrices.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise equality.</param>
/// <returns>bool3x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator == (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); }
/// <summary>Returns the result of a componentwise equality operation on a bool3x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool3x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator == (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 == rhs, lhs.c1 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool3x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise equality.</param>
/// <returns>bool3x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator == (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs == rhs.c0, lhs == rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on two bool3x2 matrices.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise not equal.</param>
/// <returns>bool3x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator != (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on a bool3x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool3x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator != (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 != rhs, lhs.c1 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool3x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise not equal.</param>
/// <returns>bool3x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator != (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs != rhs.c0, lhs != rhs.c1); }
/// <summary>Returns the result of a componentwise not operation on a bool3x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool3x2 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator ! (bool3x2 val) { return new bool3x2 (!val.c0, !val.c1); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool3x2 matrices.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise bitwise and.</param>
/// <returns>bool3x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator & (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool3x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool3x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator & (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 & rhs, lhs.c1 & rhs); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool3x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise bitwise and.</param>
/// <returns>bool3x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator & (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs & rhs.c0, lhs & rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool3x2 matrices.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise bitwise or.</param>
/// <returns>bool3x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator | (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool3x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool3x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator | (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 | rhs, lhs.c1 | rhs); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool3x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise bitwise or.</param>
/// <returns>bool3x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator | (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs | rhs.c0, lhs | rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool3x2 matrices.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator ^ (bool3x2 lhs, bool3x2 rhs) { return new bool3x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool3x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x2 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator ^ (bool3x2 lhs, bool rhs) { return new bool3x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool3x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool3x2 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator ^ (bool lhs, bool3x2 rhs) { return new bool3x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); }
/// <summary>Returns the bool3 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool3x2 is equal to a given bool3x2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(bool3x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); }
/// <summary>Returns true if the bool3x2 is equal to a given bool3x2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool3x2 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool3x2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool3x2.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool3x2 matrix constructed from two bool3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <returns>bool3x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 bool3x2(bool3 c0, bool3 c1) { return new bool3x2(c0, c1); }
/// <summary>Returns a bool3x2 matrix constructed from from 6 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <returns>bool3x2 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a bool3x2 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 bool3x2(bool v) { return new bool3x2(v); }
/// <summary>Return the bool2x3 transpose of a bool3x2 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a bool3x2 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint3 vector hash code of a bool3x2 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint3 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

@@ -0,0 +1,315 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 3x3 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool3x3 : System.IEquatable<bool3x3>
{
/// <summary>Column 0 of the matrix.</summary>
public bool3 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool3 c1;
/// <summary>Column 2 of the matrix.</summary>
public bool3 c2;
/// <summary>Constructs a bool3x3 matrix from three bool3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool3x3(bool3 c0, bool3 c1, bool3 c2)
{
this.c0 = c0;
this.c1 = c1;
this.c2 = c2;
}
/// <summary>Constructs a bool3x3 matrix from 9 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool3x3 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool3x3(bool v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Implicitly converts a single bool value to a bool3x3 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool3x3(bool v) { return new bool3x3(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool3x3 matrices.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise equality.</param>
/// <returns>bool3x3 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool3x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool3x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator == (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool3x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise equality.</param>
/// <returns>bool3x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator == (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
/// <summary>Returns the result of a componentwise not equal operation on two bool3x3 matrices.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise not equal.</param>
/// <returns>bool3x3 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool3x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool3x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator != (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool3x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise not equal.</param>
/// <returns>bool3x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator != (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
/// <summary>Returns the result of a componentwise not operation on a bool3x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool3x3 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator ! (bool3x3 val) { return new bool3x3 (!val.c0, !val.c1, !val.c2); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool3x3 matrices.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise bitwise and.</param>
/// <returns>bool3x3 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool3x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool3x3 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator & (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool3x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise bitwise and.</param>
/// <returns>bool3x3 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator & (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool3x3 matrices.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise bitwise or.</param>
/// <returns>bool3x3 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool3x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool3x3 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator | (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool3x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise bitwise or.</param>
/// <returns>bool3x3 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator | (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool3x3 matrices.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x3 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool3x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x3 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x3 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator ^ (bool3x3 lhs, bool rhs) { return new bool3x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool3x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool3x3 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x3 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator ^ (bool lhs, bool3x3 rhs) { return new bool3x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); }
/// <summary>Returns the bool3 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool3x3 is equal to a given bool3x3, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(bool3x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
/// <summary>Returns true if the bool3x3 is equal to a given bool3x3, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool3x3 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool3x3.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool3x3.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool3x3 matrix constructed from three bool3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <returns>bool3x3 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 bool3x3(bool3 c0, bool3 c1, bool3 c2) { return new bool3x3(c0, c1, c2); }
/// <summary>Returns a bool3x3 matrix constructed from from 9 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <returns>bool3x3 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a bool3x3 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 bool3x3(bool v) { return new bool3x3(v); }
/// <summary>Return the bool3x3 transpose of a bool3x3 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a bool3x3 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint3 vector hash code of a bool3x3 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint3 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

@@ -0,0 +1,331 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 3x4 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool3x4 : System.IEquatable<bool3x4>
{
/// <summary>Column 0 of the matrix.</summary>
public bool3 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool3 c1;
/// <summary>Column 2 of the matrix.</summary>
public bool3 c2;
/// <summary>Column 3 of the matrix.</summary>
public bool3 c3;
/// <summary>Constructs a bool3x4 matrix from four bool3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
[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;
}
/// <summary>Constructs a bool3x4 matrix from 12 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m23">The matrix at row 2, column 3 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool3x4 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool3x4(bool v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Implicitly converts a single bool value to a bool3x4 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool3x4(bool v) { return new bool3x4(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool3x4 matrices.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise equality.</param>
/// <returns>bool3x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool3x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool3x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool3x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise equality.</param>
/// <returns>bool3x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on two bool3x4 matrices.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise not equal.</param>
/// <returns>bool3x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool3x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool3x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool3x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise not equal.</param>
/// <returns>bool3x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not operation on a bool3x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool3x4 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x4 operator ! (bool3x4 val) { return new bool3x4 (!val.c0, !val.c1, !val.c2, !val.c3); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool3x4 matrices.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise bitwise and.</param>
/// <returns>bool3x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool3x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool3x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool3x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise bitwise and.</param>
/// <returns>bool3x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool3x4 matrices.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise bitwise or.</param>
/// <returns>bool3x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool3x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool3x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool3x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise bitwise or.</param>
/// <returns>bool3x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool3x4 matrices.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool3x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool3x4 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool3x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool3x4 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool3x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the bool3 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool3x4 is equal to a given bool3x4, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[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); }
/// <summary>Returns true if the bool3x4 is equal to a given bool3x4, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool3x4 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool3x4.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool3x4.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool3x4 matrix constructed from four bool3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
/// <returns>bool3x4 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x4 bool3x4(bool3 c0, bool3 c1, bool3 c2, bool3 c3) { return new bool3x4(c0, c1, c2, c3); }
/// <summary>Returns a bool3x4 matrix constructed from from 12 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m23">The matrix at row 2, column 3 will be set to this value.</param>
/// <returns>bool3x4 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a bool3x4 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x4 bool3x4(bool v) { return new bool3x4(v); }
/// <summary>Return the bool4x3 transpose of a bool3x4 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a bool3x4 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint3 vector hash code of a bool3x4 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint3 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

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

View File

@@ -0,0 +1,306 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 4x2 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool4x2 : System.IEquatable<bool4x2>
{
/// <summary>Column 0 of the matrix.</summary>
public bool4 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool4 c1;
/// <summary>Constructs a bool4x2 matrix from two bool4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool4x2(bool4 c0, bool4 c1)
{
this.c0 = c0;
this.c1 = c1;
}
/// <summary>Constructs a bool4x2 matrix from 8 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool4x2 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool4x2(bool v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Implicitly converts a single bool value to a bool4x2 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool4x2(bool v) { return new bool4x2(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool4x2 matrices.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise equality.</param>
/// <returns>bool4x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator == (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); }
/// <summary>Returns the result of a componentwise equality operation on a bool4x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool4x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator == (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 == rhs, lhs.c1 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool4x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise equality.</param>
/// <returns>bool4x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator == (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs == rhs.c0, lhs == rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on two bool4x2 matrices.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise not equal.</param>
/// <returns>bool4x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator != (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on a bool4x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool4x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator != (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 != rhs, lhs.c1 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool4x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise not equal.</param>
/// <returns>bool4x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator != (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs != rhs.c0, lhs != rhs.c1); }
/// <summary>Returns the result of a componentwise not operation on a bool4x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool4x2 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator ! (bool4x2 val) { return new bool4x2 (!val.c0, !val.c1); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool4x2 matrices.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise bitwise and.</param>
/// <returns>bool4x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator & (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 & rhs.c0, lhs.c1 & rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool4x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool4x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator & (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 & rhs, lhs.c1 & rhs); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool4x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise bitwise and.</param>
/// <returns>bool4x2 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator & (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs & rhs.c0, lhs & rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool4x2 matrices.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise bitwise or.</param>
/// <returns>bool4x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator | (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 | rhs.c0, lhs.c1 | rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool4x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool4x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator | (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 | rhs, lhs.c1 | rhs); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool4x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise bitwise or.</param>
/// <returns>bool4x2 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator | (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs | rhs.c0, lhs | rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool4x2 matrices.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator ^ (bool4x2 lhs, bool4x2 rhs) { return new bool4x2 (lhs.c0 ^ rhs.c0, lhs.c1 ^ rhs.c1); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool4x2 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x2 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator ^ (bool4x2 lhs, bool rhs) { return new bool4x2 (lhs.c0 ^ rhs, lhs.c1 ^ rhs); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool4x2 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool4x2 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x2 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator ^ (bool lhs, bool4x2 rhs) { return new bool4x2 (lhs ^ rhs.c0, lhs ^ rhs.c1); }
/// <summary>Returns the bool4 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool4x2 is equal to a given bool4x2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(bool4x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); }
/// <summary>Returns true if the bool4x2 is equal to a given bool4x2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool4x2 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool4x2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool4x2.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool4x2 matrix constructed from two bool4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <returns>bool4x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 bool4x2(bool4 c0, bool4 c1) { return new bool4x2(c0, c1); }
/// <summary>Returns a bool4x2 matrix constructed from from 8 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <returns>bool4x2 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a bool4x2 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 bool4x2(bool v) { return new bool4x2(v); }
/// <summary>Return the bool2x4 transpose of a bool4x2 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a bool4x2 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint4 vector hash code of a bool4x2 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint4 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

@@ -0,0 +1,324 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 4x3 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool4x3 : System.IEquatable<bool4x3>
{
/// <summary>Column 0 of the matrix.</summary>
public bool4 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool4 c1;
/// <summary>Column 2 of the matrix.</summary>
public bool4 c2;
/// <summary>Constructs a bool4x3 matrix from three bool4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool4x3(bool4 c0, bool4 c1, bool4 c2)
{
this.c0 = c0;
this.c1 = c1;
this.c2 = c2;
}
/// <summary>Constructs a bool4x3 matrix from 12 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <param name="m32">The matrix at row 3, column 2 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool4x3 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool4x3(bool v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Implicitly converts a single bool value to a bool4x3 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool4x3(bool v) { return new bool4x3(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool4x3 matrices.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise equality.</param>
/// <returns>bool4x3 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool4x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool4x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator == (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool4x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise equality.</param>
/// <returns>bool4x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator == (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
/// <summary>Returns the result of a componentwise not equal operation on two bool4x3 matrices.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise not equal.</param>
/// <returns>bool4x3 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool4x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool4x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator != (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool4x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise not equal.</param>
/// <returns>bool4x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator != (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
/// <summary>Returns the result of a componentwise not operation on a bool4x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool4x3 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator ! (bool4x3 val) { return new bool4x3 (!val.c0, !val.c1, !val.c2); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool4x3 matrices.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise bitwise and.</param>
/// <returns>bool4x3 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool4x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool4x3 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator & (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 & rhs, lhs.c1 & rhs, lhs.c2 & rhs); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool4x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise bitwise and.</param>
/// <returns>bool4x3 result of the componentwise bitwise and.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator & (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs & rhs.c0, lhs & rhs.c1, lhs & rhs.c2); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool4x3 matrices.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise bitwise or.</param>
/// <returns>bool4x3 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool4x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool4x3 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator | (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 | rhs, lhs.c1 | rhs, lhs.c2 | rhs); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool4x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise bitwise or.</param>
/// <returns>bool4x3 result of the componentwise bitwise or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator | (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs | rhs.c0, lhs | rhs.c1, lhs | rhs.c2); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool4x3 matrices.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x3 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool4x3 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x3 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x3 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator ^ (bool4x3 lhs, bool rhs) { return new bool4x3 (lhs.c0 ^ rhs, lhs.c1 ^ rhs, lhs.c2 ^ rhs); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool4x3 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool4x3 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x3 result of the componentwise bitwise exclusive or.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator ^ (bool lhs, bool4x3 rhs) { return new bool4x3 (lhs ^ rhs.c0, lhs ^ rhs.c1, lhs ^ rhs.c2); }
/// <summary>Returns the bool4 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool4x3 is equal to a given bool4x3, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(bool4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
/// <summary>Returns true if the bool4x3 is equal to a given bool4x3, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool4x3 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool4x3.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool4x3.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool4x3 matrix constructed from three bool4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <returns>bool4x3 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 bool4x3(bool4 c0, bool4 c1, bool4 c2) { return new bool4x3(c0, c1, c2); }
/// <summary>Returns a bool4x3 matrix constructed from from 12 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <param name="m32">The matrix at row 3, column 2 will be set to this value.</param>
/// <returns>bool4x3 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a bool4x3 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 bool4x3(bool v) { return new bool4x3(v); }
/// <summary>Return the bool3x4 transpose of a bool4x3 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a bool4x3 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint4 vector hash code of a bool4x3 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint4 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

@@ -0,0 +1,342 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 4x4 matrix of bools.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct bool4x4 : System.IEquatable<bool4x4>
{
/// <summary>Column 0 of the matrix.</summary>
public bool4 c0;
/// <summary>Column 1 of the matrix.</summary>
public bool4 c1;
/// <summary>Column 2 of the matrix.</summary>
public bool4 c2;
/// <summary>Column 3 of the matrix.</summary>
public bool4 c3;
/// <summary>Constructs a bool4x4 matrix from four bool4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
[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;
}
/// <summary>Constructs a bool4x4 matrix from 16 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m23">The matrix at row 2, column 3 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <param name="m32">The matrix at row 3, column 2 will be set to this value.</param>
/// <param name="m33">The matrix at row 3, column 3 will be set to this value.</param>
[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);
}
/// <summary>Constructs a bool4x4 matrix from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool4x4(bool v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Implicitly converts a single bool value to a bool4x4 matrix by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator bool4x4(bool v) { return new bool4x4(v); }
/// <summary>Returns the result of a componentwise equality operation on two bool4x4 matrices.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise equality.</param>
/// <returns>bool4x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool4x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise equality.</param>
/// <returns>bool4x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a bool value and a bool4x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise equality.</param>
/// <returns>bool4x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on two bool4x4 matrices.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise not equal.</param>
/// <returns>bool4x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool4x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise not equal.</param>
/// <returns>bool4x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a bool value and a bool4x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise not equal.</param>
/// <returns>bool4x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not operation on a bool4x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise not.</param>
/// <returns>bool4x4 result of the componentwise not.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x4 operator ! (bool4x4 val) { return new bool4x4 (!val.c0, !val.c1, !val.c2, !val.c3); }
/// <summary>Returns the result of a componentwise bitwise and operation on two bool4x4 matrices.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise bitwise and.</param>
/// <returns>bool4x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool4x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise and.</param>
/// <returns>bool4x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise and operation on a bool value and a bool4x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise and.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise bitwise and.</param>
/// <returns>bool4x4 result of the componentwise bitwise and.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on two bool4x4 matrices.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise bitwise or.</param>
/// <returns>bool4x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool4x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise or.</param>
/// <returns>bool4x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise or operation on a bool value and a bool4x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise or.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise bitwise or.</param>
/// <returns>bool4x4 result of the componentwise bitwise or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on two bool4x4 matrices.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool4x4 matrix and a bool value.</summary>
/// <param name="lhs">Left hand side bool4x4 to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the result of a componentwise bitwise exclusive or operation on a bool value and a bool4x4 matrix.</summary>
/// <param name="lhs">Left hand side bool to use to compute componentwise bitwise exclusive or.</param>
/// <param name="rhs">Right hand side bool4x4 to use to compute componentwise bitwise exclusive or.</param>
/// <returns>bool4x4 result of the componentwise bitwise exclusive or.</returns>
[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); }
/// <summary>Returns the bool4 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the bool4x4 is equal to a given bool4x4, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[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); }
/// <summary>Returns true if the bool4x4 is equal to a given bool4x4, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is bool4x4 converted && Equals(converted); }
/// <summary>Returns a hash code for the bool4x4.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the bool4x4.</summary>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a bool4x4 matrix constructed from four bool4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
/// <returns>bool4x4 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x4 bool4x4(bool4 c0, bool4 c1, bool4 c2, bool4 c3) { return new bool4x4(c0, c1, c2, c3); }
/// <summary>Returns a bool4x4 matrix constructed from from 16 bool values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m23">The matrix at row 2, column 3 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <param name="m32">The matrix at row 3, column 2 will be set to this value.</param>
/// <param name="m33">The matrix at row 3, column 3 will be set to this value.</param>
/// <returns>bool4x4 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a bool4x4 matrix constructed from a single bool value by assigning it to every component.</summary>
/// <param name="v">bool to convert to bool4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x4 bool4x4(bool v) { return new bool4x4(v); }
/// <summary>Return the bool4x4 transpose of a bool4x4 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a bool4x4 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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));
}
/// <summary>
/// Returns a uint4 vector hash code of a bool4x4 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint4 hash of the argument.</returns>
[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));
}
}
}

View File

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

View File

@@ -0,0 +1,998 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using System.Diagnostics;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2 component vector of doubles.</summary>
[DebuggerTypeProxy(typeof(double2.DebuggerProxy))]
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double2 : System.IEquatable<double2>, IFormattable
{
/// <summary>x component of the vector.</summary>
public double x;
/// <summary>y component of the vector.</summary>
public double y;
/// <summary>double2 zero value.</summary>
public static readonly double2 zero;
/// <summary>Constructs a double2 vector from two double values.</summary>
/// <param name="x">The constructed vector's x component will be set to this value.</param>
/// <param name="y">The constructed vector's y component will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(double x, double y)
{
this.x = x;
this.y = y;
}
/// <summary>Constructs a double2 vector from a double2 vector.</summary>
/// <param name="xy">The constructed vector's xy components will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(double2 xy)
{
this.x = xy.x;
this.y = xy.y;
}
/// <summary>Constructs a double2 vector from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(double v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a double2 vector from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(bool v)
{
this.x = v ? 1.0 : 0.0;
this.y = v ? 1.0 : 0.0;
}
/// <summary>Constructs a double2 vector from a bool2 vector by componentwise conversion.</summary>
/// <param name="v">bool2 to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(bool2 v)
{
this.x = v.x ? 1.0 : 0.0;
this.y = v.y ? 1.0 : 0.0;
}
/// <summary>Constructs a double2 vector from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(int v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a double2 vector from a int2 vector by componentwise conversion.</summary>
/// <param name="v">int2 to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(int2 v)
{
this.x = v.x;
this.y = v.y;
}
/// <summary>Constructs a double2 vector from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(uint v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a double2 vector from a uint2 vector by componentwise conversion.</summary>
/// <param name="v">uint2 to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(uint2 v)
{
this.x = v.x;
this.y = v.y;
}
/// <summary>Constructs a double2 vector from a single half value by converting it to double and assigning it to every component.</summary>
/// <param name="v">half to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(half v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a double2 vector from a half2 vector by componentwise conversion.</summary>
/// <param name="v">half2 to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(half2 v)
{
this.x = v.x;
this.y = v.y;
}
/// <summary>Constructs a double2 vector from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(float v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a double2 vector from a float2 vector by componentwise conversion.</summary>
/// <param name="v">float2 to convert to double2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2(float2 v)
{
this.x = v.x;
this.y = v.y;
}
/// <summary>Implicitly converts a single double value to a double2 vector by assigning it to every component.</summary>
/// <param name="v">double to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(double v) { return new double2(v); }
/// <summary>Explicitly converts a single bool value to a double2 vector by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double2(bool v) { return new double2(v); }
/// <summary>Explicitly converts a bool2 vector to a double2 vector by componentwise conversion.</summary>
/// <param name="v">bool2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double2(bool2 v) { return new double2(v); }
/// <summary>Implicitly converts a single int value to a double2 vector by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(int v) { return new double2(v); }
/// <summary>Implicitly converts a int2 vector to a double2 vector by componentwise conversion.</summary>
/// <param name="v">int2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(int2 v) { return new double2(v); }
/// <summary>Implicitly converts a single uint value to a double2 vector by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(uint v) { return new double2(v); }
/// <summary>Implicitly converts a uint2 vector to a double2 vector by componentwise conversion.</summary>
/// <param name="v">uint2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(uint2 v) { return new double2(v); }
/// <summary>Implicitly converts a single half value to a double2 vector by converting it to double and assigning it to every component.</summary>
/// <param name="v">half to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(half v) { return new double2(v); }
/// <summary>Implicitly converts a half2 vector to a double2 vector by componentwise conversion.</summary>
/// <param name="v">half2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(half2 v) { return new double2(v); }
/// <summary>Implicitly converts a single float value to a double2 vector by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(float v) { return new double2(v); }
/// <summary>Implicitly converts a float2 vector to a double2 vector by componentwise conversion.</summary>
/// <param name="v">float2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2(float2 v) { return new double2(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise multiplication.</param>
/// <returns>double2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator * (double2 lhs, double2 rhs) { return new double2 (lhs.x * rhs.x, lhs.y * rhs.y); }
/// <summary>Returns the result of a componentwise multiplication operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator * (double2 lhs, double rhs) { return new double2 (lhs.x * rhs, lhs.y * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise multiplication.</param>
/// <returns>double2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator * (double lhs, double2 rhs) { return new double2 (lhs * rhs.x, lhs * rhs.y); }
/// <summary>Returns the result of a componentwise addition operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise addition.</param>
/// <returns>double2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator + (double2 lhs, double2 rhs) { return new double2 (lhs.x + rhs.x, lhs.y + rhs.y); }
/// <summary>Returns the result of a componentwise addition operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator + (double2 lhs, double rhs) { return new double2 (lhs.x + rhs, lhs.y + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise addition.</param>
/// <returns>double2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator + (double lhs, double2 rhs) { return new double2 (lhs + rhs.x, lhs + rhs.y); }
/// <summary>Returns the result of a componentwise subtraction operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise subtraction.</param>
/// <returns>double2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator - (double2 lhs, double2 rhs) { return new double2 (lhs.x - rhs.x, lhs.y - rhs.y); }
/// <summary>Returns the result of a componentwise subtraction operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator - (double2 lhs, double rhs) { return new double2 (lhs.x - rhs, lhs.y - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise subtraction.</param>
/// <returns>double2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator - (double lhs, double2 rhs) { return new double2 (lhs - rhs.x, lhs - rhs.y); }
/// <summary>Returns the result of a componentwise division operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise division.</param>
/// <returns>double2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator / (double2 lhs, double2 rhs) { return new double2 (lhs.x / rhs.x, lhs.y / rhs.y); }
/// <summary>Returns the result of a componentwise division operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator / (double2 lhs, double rhs) { return new double2 (lhs.x / rhs, lhs.y / rhs); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise division.</param>
/// <returns>double2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator / (double lhs, double2 rhs) { return new double2 (lhs / rhs.x, lhs / rhs.y); }
/// <summary>Returns the result of a componentwise modulus operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise modulus.</param>
/// <returns>double2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator % (double2 lhs, double2 rhs) { return new double2 (lhs.x % rhs.x, lhs.y % rhs.y); }
/// <summary>Returns the result of a componentwise modulus operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator % (double2 lhs, double rhs) { return new double2 (lhs.x % rhs, lhs.y % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise modulus.</param>
/// <returns>double2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator % (double lhs, double2 rhs) { return new double2 (lhs % rhs.x, lhs % rhs.y); }
/// <summary>Returns the result of a componentwise increment operation on a double2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double2 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator ++ (double2 val) { return new double2 (++val.x, ++val.y); }
/// <summary>Returns the result of a componentwise decrement operation on a double2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double2 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator -- (double2 val) { return new double2 (--val.x, --val.y); }
/// <summary>Returns the result of a componentwise less than operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise less than.</param>
/// <returns>bool2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator < (double2 lhs, double2 rhs) { return new bool2 (lhs.x < rhs.x, lhs.y < rhs.y); }
/// <summary>Returns the result of a componentwise less than operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator < (double2 lhs, double rhs) { return new bool2 (lhs.x < rhs, lhs.y < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise less than.</param>
/// <returns>bool2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator < (double lhs, double2 rhs) { return new bool2 (lhs < rhs.x, lhs < rhs.y); }
/// <summary>Returns the result of a componentwise less or equal operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise less or equal.</param>
/// <returns>bool2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator <= (double2 lhs, double2 rhs) { return new bool2 (lhs.x <= rhs.x, lhs.y <= rhs.y); }
/// <summary>Returns the result of a componentwise less or equal operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator <= (double2 lhs, double rhs) { return new bool2 (lhs.x <= rhs, lhs.y <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise less or equal.</param>
/// <returns>bool2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator <= (double lhs, double2 rhs) { return new bool2 (lhs <= rhs.x, lhs <= rhs.y); }
/// <summary>Returns the result of a componentwise greater than operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise greater than.</param>
/// <returns>bool2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator > (double2 lhs, double2 rhs) { return new bool2 (lhs.x > rhs.x, lhs.y > rhs.y); }
/// <summary>Returns the result of a componentwise greater than operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator > (double2 lhs, double rhs) { return new bool2 (lhs.x > rhs, lhs.y > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise greater than.</param>
/// <returns>bool2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator > (double lhs, double2 rhs) { return new bool2 (lhs > rhs.x, lhs > rhs.y); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise greater or equal.</param>
/// <returns>bool2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator >= (double2 lhs, double2 rhs) { return new bool2 (lhs.x >= rhs.x, lhs.y >= rhs.y); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator >= (double2 lhs, double rhs) { return new bool2 (lhs.x >= rhs, lhs.y >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise greater or equal.</param>
/// <returns>bool2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator >= (double lhs, double2 rhs) { return new bool2 (lhs >= rhs.x, lhs >= rhs.y); }
/// <summary>Returns the result of a componentwise unary minus operation on a double2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double2 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator - (double2 val) { return new double2 (-val.x, -val.y); }
/// <summary>Returns the result of a componentwise unary plus operation on a double2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double2 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 operator + (double2 val) { return new double2 (+val.x, +val.y); }
/// <summary>Returns the result of a componentwise equality operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (double2 lhs, double2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); }
/// <summary>Returns the result of a componentwise equality operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (double2 lhs, double rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (double lhs, double2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); }
/// <summary>Returns the result of a componentwise not equal operation on two double2 vectors.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (double2 lhs, double2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); }
/// <summary>Returns the result of a componentwise not equal operation on a double2 vector and a double value.</summary>
/// <param name="lhs">Left hand side double2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (double2 lhs, double rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double2 vector.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double2 to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (double lhs, double2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); }
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 xxxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(x, x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 xxxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(x, x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 xxyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(x, x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 xxyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(x, x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 xyxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(x, y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 xyxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(x, y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 xyyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(x, y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 xyyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(x, y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 yxxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(y, x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 yxxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(y, x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 yxyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(y, x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 yxyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(y, x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 yyxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(y, y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 yyxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(y, y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 yyyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(y, y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double4 yyyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double4(y, y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double3 xxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double3(x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double3 xxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double3(x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double3 xyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double3(x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double3 xyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double3(x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double3 yxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double3(y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double3 yxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double3(y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double3 yyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double3(y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double3 yyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double3(y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double2 xx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double2(x, x); }
}
/// <summary>Swizzles the vector.</summary>
[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; }
}
/// <summary>Swizzles the vector.</summary>
[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; }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public double2 yy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new double2(y, y); }
}
/// <summary>Returns the double element at a specified index.</summary>
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; }
}
}
/// <summary>Returns true if the double2 is equal to a given double2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(double2 rhs) { return x == rhs.x && y == rhs.y; }
/// <summary>Returns true if the double2 is equal to a given double2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double2 converted && Equals(converted); }
/// <summary>Returns a hash code for the double2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double2.</summary>
/// <returns>String representation of the value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override string ToString()
{
return string.Format("double2({0}, {1})", x, y);
}
/// <summary>Returns a string representation of the double2 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double2 vector constructed from two double values.</summary>
/// <param name="x">The constructed vector's x component will be set to this value.</param>
/// <param name="y">The constructed vector's y component will be set to this value.</param>
/// <returns>double2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(double x, double y) { return new double2(x, y); }
/// <summary>Returns a double2 vector constructed from a double2 vector.</summary>
/// <param name="xy">The constructed vector's xy components will be set to this value.</param>
/// <returns>double2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(double2 xy) { return new double2(xy); }
/// <summary>Returns a double2 vector constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(double v) { return new double2(v); }
/// <summary>Returns a double2 vector constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(bool v) { return new double2(v); }
/// <summary>Return a double2 vector constructed from a bool2 vector by componentwise conversion.</summary>
/// <param name="v">bool2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(bool2 v) { return new double2(v); }
/// <summary>Returns a double2 vector constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(int v) { return new double2(v); }
/// <summary>Return a double2 vector constructed from a int2 vector by componentwise conversion.</summary>
/// <param name="v">int2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(int2 v) { return new double2(v); }
/// <summary>Returns a double2 vector constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(uint v) { return new double2(v); }
/// <summary>Return a double2 vector constructed from a uint2 vector by componentwise conversion.</summary>
/// <param name="v">uint2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(uint2 v) { return new double2(v); }
/// <summary>Returns a double2 vector constructed from a single half value by converting it to double and assigning it to every component.</summary>
/// <param name="v">half to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(half v) { return new double2(v); }
/// <summary>Return a double2 vector constructed from a half2 vector by componentwise conversion.</summary>
/// <param name="v">half2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(half2 v) { return new double2(v); }
/// <summary>Returns a double2 vector constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(float v) { return new double2(v); }
/// <summary>Return a double2 vector constructed from a float2 vector by componentwise conversion.</summary>
/// <param name="v">float2 to convert to double2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 double2(float2 v) { return new double2(v); }
/// <summary>Returns a uint hash code of a double2 vector.</summary>
/// <param name="v">Vector value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint hash(double2 v)
{
return csum(fold_to_uint(v) * uint2(0x9536A0F5u, 0xAF816615u)) + 0x9AF8D62Du;
}
/// <summary>
/// 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.
/// </summary>
/// <param name="v">Vector value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint2 hashwide(double2 v)
{
return (fold_to_uint(v) * uint2(0xE3600729u, 0x5F17300Du)) + 0x670D6809u;
}
/// <summary>Returns the result of specified shuffling of the components from two double2 vectors into a double value.</summary>
/// <param name="left">double2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">double2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting double.</param>
/// <returns>double result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double shuffle(double2 left, double2 right, ShuffleComponent x)
{
return select_shuffle_component(left, right, x);
}
/// <summary>Returns the result of specified shuffling of the components from two double2 vectors into a double2 vector.</summary>
/// <param name="left">double2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">double2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting double2 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting double2 y component.</param>
/// <returns>double2 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2 shuffle(double2 left, double2 right, ShuffleComponent x, ShuffleComponent y)
{
return double2(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y));
}
/// <summary>Returns the result of specified shuffling of the components from two double2 vectors into a double3 vector.</summary>
/// <param name="left">double2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">double2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting double3 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting double3 y component.</param>
/// <param name="z">The ShuffleComponent to use when setting the resulting double3 z component.</param>
/// <returns>double3 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3 shuffle(double2 left, double2 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z)
{
return double3(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y),
select_shuffle_component(left, right, z));
}
/// <summary>Returns the result of specified shuffling of the components from two double2 vectors into a double4 vector.</summary>
/// <param name="left">double2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">double2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting double4 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting double4 y component.</param>
/// <param name="z">The ShuffleComponent to use when setting the resulting double4 z component.</param>
/// <param name="w">The ShuffleComponent to use when setting the resulting double4 w component.</param>
/// <returns>double4 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4 shuffle(double2 left, double2 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w)
{
return double4(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y),
select_shuffle_component(left, right, z),
select_shuffle_component(left, right, 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);
}
}
}
}

View File

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

View File

@@ -0,0 +1,658 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2x2 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double2x2 : System.IEquatable<double2x2>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double2 c0;
/// <summary>Column 1 of the matrix.</summary>
public double2 c1;
/// <summary>double2x2 identity transform.</summary>
public static readonly double2x2 identity = new double2x2(1.0, 0.0, 0.0, 1.0);
/// <summary>double2x2 zero value.</summary>
public static readonly double2x2 zero;
/// <summary>Constructs a double2x2 matrix from two double2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x2(double2 c0, double2 c1)
{
this.c0 = c0;
this.c1 = c1;
}
/// <summary>Constructs a double2x2 matrix from 4 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double2x2 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x2(double v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double2x2 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x2</param>
[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);
}
/// <summary>Constructs a double2x2 matrix from a bool2x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x2 to convert to double2x2</param>
[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);
}
/// <summary>Constructs a double2x2 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x2(int v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double2x2 matrix from a int2x2 matrix by componentwise conversion.</summary>
/// <param name="v">int2x2 to convert to double2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x2(int2x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Constructs a double2x2 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x2(uint v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double2x2 matrix from a uint2x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x2 to convert to double2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x2(uint2x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Constructs a double2x2 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x2(float v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double2x2 matrix from a float2x2 matrix by componentwise conversion.</summary>
/// <param name="v">float2x2 to convert to double2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x2(float2x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Implicitly converts a single double value to a double2x2 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x2(double v) { return new double2x2(v); }
/// <summary>Explicitly converts a single bool value to a double2x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double2x2(bool v) { return new double2x2(v); }
/// <summary>Explicitly converts a bool2x2 matrix to a double2x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x2 to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double2x2(bool2x2 v) { return new double2x2(v); }
/// <summary>Implicitly converts a single int value to a double2x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x2(int v) { return new double2x2(v); }
/// <summary>Implicitly converts a int2x2 matrix to a double2x2 matrix by componentwise conversion.</summary>
/// <param name="v">int2x2 to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x2(int2x2 v) { return new double2x2(v); }
/// <summary>Implicitly converts a single uint value to a double2x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x2(uint v) { return new double2x2(v); }
/// <summary>Implicitly converts a uint2x2 matrix to a double2x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x2 to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x2(uint2x2 v) { return new double2x2(v); }
/// <summary>Implicitly converts a single float value to a double2x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x2(float v) { return new double2x2(v); }
/// <summary>Implicitly converts a float2x2 matrix to a double2x2 matrix by componentwise conversion.</summary>
/// <param name="v">float2x2 to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x2(float2x2 v) { return new double2x2(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise multiplication.</param>
/// <returns>double2x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator * (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); }
/// <summary>Returns the result of a componentwise multiplication operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double2x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator * (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 * rhs, lhs.c1 * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise multiplication.</param>
/// <returns>double2x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator * (double lhs, double2x2 rhs) { return new double2x2 (lhs * rhs.c0, lhs * rhs.c1); }
/// <summary>Returns the result of a componentwise addition operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise addition.</param>
/// <returns>double2x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator + (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); }
/// <summary>Returns the result of a componentwise addition operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double2x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator + (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 + rhs, lhs.c1 + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise addition.</param>
/// <returns>double2x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator + (double lhs, double2x2 rhs) { return new double2x2 (lhs + rhs.c0, lhs + rhs.c1); }
/// <summary>Returns the result of a componentwise subtraction operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise subtraction.</param>
/// <returns>double2x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator - (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); }
/// <summary>Returns the result of a componentwise subtraction operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double2x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator - (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 - rhs, lhs.c1 - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise subtraction.</param>
/// <returns>double2x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator - (double lhs, double2x2 rhs) { return new double2x2 (lhs - rhs.c0, lhs - rhs.c1); }
/// <summary>Returns the result of a componentwise division operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise division.</param>
/// <returns>double2x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator / (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); }
/// <summary>Returns the result of a componentwise division operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double2x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator / (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 / rhs, lhs.c1 / rhs); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise division.</param>
/// <returns>double2x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator / (double lhs, double2x2 rhs) { return new double2x2 (lhs / rhs.c0, lhs / rhs.c1); }
/// <summary>Returns the result of a componentwise modulus operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise modulus.</param>
/// <returns>double2x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator % (double2x2 lhs, double2x2 rhs) { return new double2x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); }
/// <summary>Returns the result of a componentwise modulus operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double2x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator % (double2x2 lhs, double rhs) { return new double2x2 (lhs.c0 % rhs, lhs.c1 % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise modulus.</param>
/// <returns>double2x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator % (double lhs, double2x2 rhs) { return new double2x2 (lhs % rhs.c0, lhs % rhs.c1); }
/// <summary>Returns the result of a componentwise increment operation on a double2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double2x2 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator ++ (double2x2 val) { return new double2x2 (++val.c0, ++val.c1); }
/// <summary>Returns the result of a componentwise decrement operation on a double2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double2x2 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator -- (double2x2 val) { return new double2x2 (--val.c0, --val.c1); }
/// <summary>Returns the result of a componentwise less than operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise less than.</param>
/// <returns>bool2x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator < (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); }
/// <summary>Returns the result of a componentwise less than operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool2x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator < (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 < rhs, lhs.c1 < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise less than.</param>
/// <returns>bool2x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator < (double lhs, double2x2 rhs) { return new bool2x2 (lhs < rhs.c0, lhs < rhs.c1); }
/// <summary>Returns the result of a componentwise less or equal operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise less or equal.</param>
/// <returns>bool2x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator <= (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); }
/// <summary>Returns the result of a componentwise less or equal operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool2x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator <= (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise less or equal.</param>
/// <returns>bool2x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator <= (double lhs, double2x2 rhs) { return new bool2x2 (lhs <= rhs.c0, lhs <= rhs.c1); }
/// <summary>Returns the result of a componentwise greater than operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise greater than.</param>
/// <returns>bool2x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator > (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); }
/// <summary>Returns the result of a componentwise greater than operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool2x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator > (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 > rhs, lhs.c1 > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise greater than.</param>
/// <returns>bool2x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator > (double lhs, double2x2 rhs) { return new bool2x2 (lhs > rhs.c0, lhs > rhs.c1); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator >= (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool2x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator >= (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator >= (double lhs, double2x2 rhs) { return new bool2x2 (lhs >= rhs.c0, lhs >= rhs.c1); }
/// <summary>Returns the result of a componentwise unary minus operation on a double2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double2x2 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator - (double2x2 val) { return new double2x2 (-val.c0, -val.c1); }
/// <summary>Returns the result of a componentwise unary plus operation on a double2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double2x2 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 operator + (double2x2 val) { return new double2x2 (+val.c0, +val.c1); }
/// <summary>Returns the result of a componentwise equality operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); }
/// <summary>Returns the result of a componentwise equality operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 == rhs, lhs.c1 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (double lhs, double2x2 rhs) { return new bool2x2 (lhs == rhs.c0, lhs == rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on two double2x2 matrices.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (double2x2 lhs, double2x2 rhs) { return new bool2x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on a double2x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (double2x2 lhs, double rhs) { return new bool2x2 (lhs.c0 != rhs, lhs.c1 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double2x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double2x2 to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (double lhs, double2x2 rhs) { return new bool2x2 (lhs != rhs.c0, lhs != rhs.c1); }
/// <summary>Returns the double2 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double2x2 is equal to a given double2x2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(double2x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); }
/// <summary>Returns true if the double2x2 is equal to a given double2x2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double2x2 converted && Equals(converted); }
/// <summary>Returns a hash code for the double2x2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double2x2.</summary>
/// <returns>String representation of the value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override string ToString()
{
return string.Format("double2x2({0}, {1}, {2}, {3})", c0.x, c1.x, c0.y, c1.y);
}
/// <summary>Returns a string representation of the double2x2 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double2x2 matrix constructed from two double2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <returns>double2x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(double2 c0, double2 c1) { return new double2x2(c0, c1); }
/// <summary>Returns a double2x2 matrix constructed from from 4 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <returns>double2x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(double m00, double m01,
double m10, double m11)
{
return new double2x2(m00, m01,
m10, m11);
}
/// <summary>Returns a double2x2 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(double v) { return new double2x2(v); }
/// <summary>Returns a double2x2 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(bool v) { return new double2x2(v); }
/// <summary>Return a double2x2 matrix constructed from a bool2x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x2 to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(bool2x2 v) { return new double2x2(v); }
/// <summary>Returns a double2x2 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(int v) { return new double2x2(v); }
/// <summary>Return a double2x2 matrix constructed from a int2x2 matrix by componentwise conversion.</summary>
/// <param name="v">int2x2 to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(int2x2 v) { return new double2x2(v); }
/// <summary>Returns a double2x2 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(uint v) { return new double2x2(v); }
/// <summary>Return a double2x2 matrix constructed from a uint2x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x2 to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(uint2x2 v) { return new double2x2(v); }
/// <summary>Returns a double2x2 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(float v) { return new double2x2(v); }
/// <summary>Return a double2x2 matrix constructed from a float2x2 matrix by componentwise conversion.</summary>
/// <param name="v">float2x2 to convert to double2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 double2x2(float2x2 v) { return new double2x2(v); }
/// <summary>Return the double2x2 transpose of a double2x2 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x2 transpose(double2x2 v)
{
return double2x2(
v.c0.x, v.c0.y,
v.c1.x, v.c1.y);
}
/// <summary>Returns the double2x2 full inverse of a double2x2 matrix.</summary>
/// <param name="m">Matrix to invert.</param>
/// <returns>The inverted matrix.</returns>
[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);
}
/// <summary>Returns the determinant of a double2x2 matrix.</summary>
/// <param name="m">Matrix to use when computing determinant.</param>
/// <returns>The determinant of the matrix.</returns>
[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;
}
/// <summary>Returns a uint hash code of a double2x2 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint2 vector hash code of a double2x2 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

@@ -0,0 +1,647 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2x3 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double2x3 : System.IEquatable<double2x3>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double2 c0;
/// <summary>Column 1 of the matrix.</summary>
public double2 c1;
/// <summary>Column 2 of the matrix.</summary>
public double2 c2;
/// <summary>double2x3 zero value.</summary>
public static readonly double2x3 zero;
/// <summary>Constructs a double2x3 matrix from three double2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x3(double2 c0, double2 c1, double2 c2)
{
this.c0 = c0;
this.c1 = c1;
this.c2 = c2;
}
/// <summary>Constructs a double2x3 matrix from 6 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double2x3 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x3(double v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double2x3 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x3</param>
[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);
}
/// <summary>Constructs a double2x3 matrix from a bool2x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x3 to convert to double2x3</param>
[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);
}
/// <summary>Constructs a double2x3 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x3(int v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double2x3 matrix from a int2x3 matrix by componentwise conversion.</summary>
/// <param name="v">int2x3 to convert to double2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x3(int2x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Constructs a double2x3 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x3(uint v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double2x3 matrix from a uint2x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x3 to convert to double2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x3(uint2x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Constructs a double2x3 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x3(float v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double2x3 matrix from a float2x3 matrix by componentwise conversion.</summary>
/// <param name="v">float2x3 to convert to double2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x3(float2x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Implicitly converts a single double value to a double2x3 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x3(double v) { return new double2x3(v); }
/// <summary>Explicitly converts a single bool value to a double2x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double2x3(bool v) { return new double2x3(v); }
/// <summary>Explicitly converts a bool2x3 matrix to a double2x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x3 to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double2x3(bool2x3 v) { return new double2x3(v); }
/// <summary>Implicitly converts a single int value to a double2x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x3(int v) { return new double2x3(v); }
/// <summary>Implicitly converts a int2x3 matrix to a double2x3 matrix by componentwise conversion.</summary>
/// <param name="v">int2x3 to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x3(int2x3 v) { return new double2x3(v); }
/// <summary>Implicitly converts a single uint value to a double2x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x3(uint v) { return new double2x3(v); }
/// <summary>Implicitly converts a uint2x3 matrix to a double2x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x3 to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x3(uint2x3 v) { return new double2x3(v); }
/// <summary>Implicitly converts a single float value to a double2x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x3(float v) { return new double2x3(v); }
/// <summary>Implicitly converts a float2x3 matrix to a double2x3 matrix by componentwise conversion.</summary>
/// <param name="v">float2x3 to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x3(float2x3 v) { return new double2x3(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise multiplication.</param>
/// <returns>double2x3 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double2x3 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator * (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise multiplication.</param>
/// <returns>double2x3 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator * (double lhs, double2x3 rhs) { return new double2x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); }
/// <summary>Returns the result of a componentwise addition operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise addition.</param>
/// <returns>double2x3 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double2x3 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator + (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise addition.</param>
/// <returns>double2x3 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator + (double lhs, double2x3 rhs) { return new double2x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); }
/// <summary>Returns the result of a componentwise subtraction operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise subtraction.</param>
/// <returns>double2x3 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double2x3 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator - (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise subtraction.</param>
/// <returns>double2x3 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator - (double lhs, double2x3 rhs) { return new double2x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); }
/// <summary>Returns the result of a componentwise division operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise division.</param>
/// <returns>double2x3 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double2x3 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator / (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise division.</param>
/// <returns>double2x3 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator / (double lhs, double2x3 rhs) { return new double2x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); }
/// <summary>Returns the result of a componentwise modulus operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise modulus.</param>
/// <returns>double2x3 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double2x3 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator % (double2x3 lhs, double rhs) { return new double2x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise modulus.</param>
/// <returns>double2x3 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator % (double lhs, double2x3 rhs) { return new double2x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); }
/// <summary>Returns the result of a componentwise increment operation on a double2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double2x3 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator ++ (double2x3 val) { return new double2x3 (++val.c0, ++val.c1, ++val.c2); }
/// <summary>Returns the result of a componentwise decrement operation on a double2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double2x3 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator -- (double2x3 val) { return new double2x3 (--val.c0, --val.c1, --val.c2); }
/// <summary>Returns the result of a componentwise less than operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise less than.</param>
/// <returns>bool2x3 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool2x3 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator < (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise less than.</param>
/// <returns>bool2x3 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator < (double lhs, double2x3 rhs) { return new bool2x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); }
/// <summary>Returns the result of a componentwise less or equal operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise less or equal.</param>
/// <returns>bool2x3 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool2x3 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator <= (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise less or equal.</param>
/// <returns>bool2x3 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator <= (double lhs, double2x3 rhs) { return new bool2x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); }
/// <summary>Returns the result of a componentwise greater than operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise greater than.</param>
/// <returns>bool2x3 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool2x3 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator > (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise greater than.</param>
/// <returns>bool2x3 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator > (double lhs, double2x3 rhs) { return new bool2x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x3 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool2x3 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator >= (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x3 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator >= (double lhs, double2x3 rhs) { return new bool2x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); }
/// <summary>Returns the result of a componentwise unary minus operation on a double2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double2x3 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator - (double2x3 val) { return new double2x3 (-val.c0, -val.c1, -val.c2); }
/// <summary>Returns the result of a componentwise unary plus operation on a double2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double2x3 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 operator + (double2x3 val) { return new double2x3 (+val.c0, +val.c1, +val.c2); }
/// <summary>Returns the result of a componentwise equality operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator == (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator == (double lhs, double2x3 rhs) { return new bool2x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
/// <summary>Returns the result of a componentwise not equal operation on two double2x3 matrices.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double2x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator != (double2x3 lhs, double rhs) { return new bool2x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double2x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double2x3 to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator != (double lhs, double2x3 rhs) { return new bool2x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
/// <summary>Returns the double2 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double2x3 is equal to a given double2x3, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(double2x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
/// <summary>Returns true if the double2x3 is equal to a given double2x3, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double2x3 converted && Equals(converted); }
/// <summary>Returns a hash code for the double2x3.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double2x3.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the double2x3 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double2x3 matrix constructed from three double2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <returns>double2x3 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(double2 c0, double2 c1, double2 c2) { return new double2x3(c0, c1, c2); }
/// <summary>Returns a double2x3 matrix constructed from from 6 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <returns>double2x3 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a double2x3 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(double v) { return new double2x3(v); }
/// <summary>Returns a double2x3 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(bool v) { return new double2x3(v); }
/// <summary>Return a double2x3 matrix constructed from a bool2x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x3 to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(bool2x3 v) { return new double2x3(v); }
/// <summary>Returns a double2x3 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(int v) { return new double2x3(v); }
/// <summary>Return a double2x3 matrix constructed from a int2x3 matrix by componentwise conversion.</summary>
/// <param name="v">int2x3 to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(int2x3 v) { return new double2x3(v); }
/// <summary>Returns a double2x3 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(uint v) { return new double2x3(v); }
/// <summary>Return a double2x3 matrix constructed from a uint2x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x3 to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(uint2x3 v) { return new double2x3(v); }
/// <summary>Returns a double2x3 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(float v) { return new double2x3(v); }
/// <summary>Return a double2x3 matrix constructed from a float2x3 matrix by componentwise conversion.</summary>
/// <param name="v">float2x3 to convert to double2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x3 double2x3(float2x3 v) { return new double2x3(v); }
/// <summary>Return the double3x2 transpose of a double2x3 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a double2x3 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint2 vector hash code of a double2x3 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

@@ -0,0 +1,669 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2x4 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double2x4 : System.IEquatable<double2x4>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double2 c0;
/// <summary>Column 1 of the matrix.</summary>
public double2 c1;
/// <summary>Column 2 of the matrix.</summary>
public double2 c2;
/// <summary>Column 3 of the matrix.</summary>
public double2 c3;
/// <summary>double2x4 zero value.</summary>
public static readonly double2x4 zero;
/// <summary>Constructs a double2x4 matrix from four double2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
[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;
}
/// <summary>Constructs a double2x4 matrix from 8 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double2x4 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x4(double v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double2x4 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x4</param>
[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);
}
/// <summary>Constructs a double2x4 matrix from a bool2x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x4 to convert to double2x4</param>
[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);
}
/// <summary>Constructs a double2x4 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x4(int v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double2x4 matrix from a int2x4 matrix by componentwise conversion.</summary>
/// <param name="v">int2x4 to convert to double2x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x4(int2x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Constructs a double2x4 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x4(uint v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double2x4 matrix from a uint2x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x4 to convert to double2x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x4(uint2x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Constructs a double2x4 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x4(float v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double2x4 matrix from a float2x4 matrix by componentwise conversion.</summary>
/// <param name="v">float2x4 to convert to double2x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double2x4(float2x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Implicitly converts a single double value to a double2x4 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x4(double v) { return new double2x4(v); }
/// <summary>Explicitly converts a single bool value to a double2x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double2x4(bool v) { return new double2x4(v); }
/// <summary>Explicitly converts a bool2x4 matrix to a double2x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x4 to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double2x4(bool2x4 v) { return new double2x4(v); }
/// <summary>Implicitly converts a single int value to a double2x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x4(int v) { return new double2x4(v); }
/// <summary>Implicitly converts a int2x4 matrix to a double2x4 matrix by componentwise conversion.</summary>
/// <param name="v">int2x4 to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x4(int2x4 v) { return new double2x4(v); }
/// <summary>Implicitly converts a single uint value to a double2x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x4(uint v) { return new double2x4(v); }
/// <summary>Implicitly converts a uint2x4 matrix to a double2x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x4 to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x4(uint2x4 v) { return new double2x4(v); }
/// <summary>Implicitly converts a single float value to a double2x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x4(float v) { return new double2x4(v); }
/// <summary>Implicitly converts a float2x4 matrix to a double2x4 matrix by componentwise conversion.</summary>
/// <param name="v">float2x4 to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double2x4(float2x4 v) { return new double2x4(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise multiplication.</param>
/// <returns>double2x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double2x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise multiplication.</param>
/// <returns>double2x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise addition.</param>
/// <returns>double2x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double2x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise addition.</param>
/// <returns>double2x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise subtraction.</param>
/// <returns>double2x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double2x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise subtraction.</param>
/// <returns>double2x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise division.</param>
/// <returns>double2x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double2x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise division.</param>
/// <returns>double2x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise modulus.</param>
/// <returns>double2x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double2x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise modulus.</param>
/// <returns>double2x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise increment operation on a double2x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double2x4 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 operator ++ (double2x4 val) { return new double2x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); }
/// <summary>Returns the result of a componentwise decrement operation on a double2x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double2x4 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 operator -- (double2x4 val) { return new double2x4 (--val.c0, --val.c1, --val.c2, --val.c3); }
/// <summary>Returns the result of a componentwise less than operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise less than.</param>
/// <returns>bool2x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool2x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise less than.</param>
/// <returns>bool2x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise less or equal.</param>
/// <returns>bool2x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool2x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise less or equal.</param>
/// <returns>bool2x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise greater than.</param>
/// <returns>bool2x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool2x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise greater than.</param>
/// <returns>bool2x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool2x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise unary minus operation on a double2x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double2x4 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 operator - (double2x4 val) { return new double2x4 (-val.c0, -val.c1, -val.c2, -val.c3); }
/// <summary>Returns the result of a componentwise unary plus operation on a double2x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double2x4 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 operator + (double2x4 val) { return new double2x4 (+val.c0, +val.c1, +val.c2, +val.c3); }
/// <summary>Returns the result of a componentwise equality operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise equality.</param>
/// <returns>bool2x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool2x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise equality.</param>
/// <returns>bool2x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on two double2x4 matrices.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise not equal.</param>
/// <returns>bool2x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double2x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double2x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool2x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double2x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double2x4 to use to compute componentwise not equal.</param>
/// <returns>bool2x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the double2 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double2x4 is equal to a given double2x4, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[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); }
/// <summary>Returns true if the double2x4 is equal to a given double2x4, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double2x4 converted && Equals(converted); }
/// <summary>Returns a hash code for the double2x4.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double2x4.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the double2x4 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double2x4 matrix constructed from four double2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
/// <returns>double2x4 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(double2 c0, double2 c1, double2 c2, double2 c3) { return new double2x4(c0, c1, c2, c3); }
/// <summary>Returns a double2x4 matrix constructed from from 8 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <returns>double2x4 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a double2x4 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(double v) { return new double2x4(v); }
/// <summary>Returns a double2x4 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(bool v) { return new double2x4(v); }
/// <summary>Return a double2x4 matrix constructed from a bool2x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x4 to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(bool2x4 v) { return new double2x4(v); }
/// <summary>Returns a double2x4 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(int v) { return new double2x4(v); }
/// <summary>Return a double2x4 matrix constructed from a int2x4 matrix by componentwise conversion.</summary>
/// <param name="v">int2x4 to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(int2x4 v) { return new double2x4(v); }
/// <summary>Returns a double2x4 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(uint v) { return new double2x4(v); }
/// <summary>Return a double2x4 matrix constructed from a uint2x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x4 to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(uint2x4 v) { return new double2x4(v); }
/// <summary>Returns a double2x4 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(float v) { return new double2x4(v); }
/// <summary>Return a double2x4 matrix constructed from a float2x4 matrix by componentwise conversion.</summary>
/// <param name="v">float2x4 to convert to double2x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double2x4 double2x4(float2x4 v) { return new double2x4(v); }
/// <summary>Return the double4x2 transpose of a double2x4 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a double2x4 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint2 vector hash code of a double2x4 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

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

View File

@@ -0,0 +1,632 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 3x2 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double3x2 : System.IEquatable<double3x2>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double3 c0;
/// <summary>Column 1 of the matrix.</summary>
public double3 c1;
/// <summary>double3x2 zero value.</summary>
public static readonly double3x2 zero;
/// <summary>Constructs a double3x2 matrix from two double3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x2(double3 c0, double3 c1)
{
this.c0 = c0;
this.c1 = c1;
}
/// <summary>Constructs a double3x2 matrix from 6 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double3x2 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x2(double v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double3x2 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x2</param>
[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);
}
/// <summary>Constructs a double3x2 matrix from a bool3x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x2 to convert to double3x2</param>
[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);
}
/// <summary>Constructs a double3x2 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x2(int v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double3x2 matrix from a int3x2 matrix by componentwise conversion.</summary>
/// <param name="v">int3x2 to convert to double3x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x2(int3x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Constructs a double3x2 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x2(uint v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double3x2 matrix from a uint3x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x2 to convert to double3x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x2(uint3x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Constructs a double3x2 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x2(float v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double3x2 matrix from a float3x2 matrix by componentwise conversion.</summary>
/// <param name="v">float3x2 to convert to double3x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x2(float3x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Implicitly converts a single double value to a double3x2 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x2(double v) { return new double3x2(v); }
/// <summary>Explicitly converts a single bool value to a double3x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double3x2(bool v) { return new double3x2(v); }
/// <summary>Explicitly converts a bool3x2 matrix to a double3x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x2 to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double3x2(bool3x2 v) { return new double3x2(v); }
/// <summary>Implicitly converts a single int value to a double3x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x2(int v) { return new double3x2(v); }
/// <summary>Implicitly converts a int3x2 matrix to a double3x2 matrix by componentwise conversion.</summary>
/// <param name="v">int3x2 to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x2(int3x2 v) { return new double3x2(v); }
/// <summary>Implicitly converts a single uint value to a double3x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x2(uint v) { return new double3x2(v); }
/// <summary>Implicitly converts a uint3x2 matrix to a double3x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x2 to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x2(uint3x2 v) { return new double3x2(v); }
/// <summary>Implicitly converts a single float value to a double3x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x2(float v) { return new double3x2(v); }
/// <summary>Implicitly converts a float3x2 matrix to a double3x2 matrix by componentwise conversion.</summary>
/// <param name="v">float3x2 to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x2(float3x2 v) { return new double3x2(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise multiplication.</param>
/// <returns>double3x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator * (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); }
/// <summary>Returns the result of a componentwise multiplication operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double3x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator * (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 * rhs, lhs.c1 * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise multiplication.</param>
/// <returns>double3x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator * (double lhs, double3x2 rhs) { return new double3x2 (lhs * rhs.c0, lhs * rhs.c1); }
/// <summary>Returns the result of a componentwise addition operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise addition.</param>
/// <returns>double3x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator + (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); }
/// <summary>Returns the result of a componentwise addition operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double3x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator + (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 + rhs, lhs.c1 + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise addition.</param>
/// <returns>double3x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator + (double lhs, double3x2 rhs) { return new double3x2 (lhs + rhs.c0, lhs + rhs.c1); }
/// <summary>Returns the result of a componentwise subtraction operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise subtraction.</param>
/// <returns>double3x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator - (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); }
/// <summary>Returns the result of a componentwise subtraction operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double3x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator - (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 - rhs, lhs.c1 - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise subtraction.</param>
/// <returns>double3x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator - (double lhs, double3x2 rhs) { return new double3x2 (lhs - rhs.c0, lhs - rhs.c1); }
/// <summary>Returns the result of a componentwise division operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise division.</param>
/// <returns>double3x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator / (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); }
/// <summary>Returns the result of a componentwise division operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double3x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator / (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 / rhs, lhs.c1 / rhs); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise division.</param>
/// <returns>double3x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator / (double lhs, double3x2 rhs) { return new double3x2 (lhs / rhs.c0, lhs / rhs.c1); }
/// <summary>Returns the result of a componentwise modulus operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise modulus.</param>
/// <returns>double3x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator % (double3x2 lhs, double3x2 rhs) { return new double3x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); }
/// <summary>Returns the result of a componentwise modulus operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double3x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator % (double3x2 lhs, double rhs) { return new double3x2 (lhs.c0 % rhs, lhs.c1 % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise modulus.</param>
/// <returns>double3x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator % (double lhs, double3x2 rhs) { return new double3x2 (lhs % rhs.c0, lhs % rhs.c1); }
/// <summary>Returns the result of a componentwise increment operation on a double3x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double3x2 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator ++ (double3x2 val) { return new double3x2 (++val.c0, ++val.c1); }
/// <summary>Returns the result of a componentwise decrement operation on a double3x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double3x2 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator -- (double3x2 val) { return new double3x2 (--val.c0, --val.c1); }
/// <summary>Returns the result of a componentwise less than operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise less than.</param>
/// <returns>bool3x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator < (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); }
/// <summary>Returns the result of a componentwise less than operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool3x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator < (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 < rhs, lhs.c1 < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise less than.</param>
/// <returns>bool3x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator < (double lhs, double3x2 rhs) { return new bool3x2 (lhs < rhs.c0, lhs < rhs.c1); }
/// <summary>Returns the result of a componentwise less or equal operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise less or equal.</param>
/// <returns>bool3x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator <= (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); }
/// <summary>Returns the result of a componentwise less or equal operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool3x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator <= (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise less or equal.</param>
/// <returns>bool3x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator <= (double lhs, double3x2 rhs) { return new bool3x2 (lhs <= rhs.c0, lhs <= rhs.c1); }
/// <summary>Returns the result of a componentwise greater than operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise greater than.</param>
/// <returns>bool3x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator > (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); }
/// <summary>Returns the result of a componentwise greater than operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool3x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator > (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 > rhs, lhs.c1 > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise greater than.</param>
/// <returns>bool3x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator > (double lhs, double3x2 rhs) { return new bool3x2 (lhs > rhs.c0, lhs > rhs.c1); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise greater or equal.</param>
/// <returns>bool3x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator >= (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool3x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator >= (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise greater or equal.</param>
/// <returns>bool3x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator >= (double lhs, double3x2 rhs) { return new bool3x2 (lhs >= rhs.c0, lhs >= rhs.c1); }
/// <summary>Returns the result of a componentwise unary minus operation on a double3x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double3x2 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator - (double3x2 val) { return new double3x2 (-val.c0, -val.c1); }
/// <summary>Returns the result of a componentwise unary plus operation on a double3x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double3x2 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 operator + (double3x2 val) { return new double3x2 (+val.c0, +val.c1); }
/// <summary>Returns the result of a componentwise equality operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise equality.</param>
/// <returns>bool3x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator == (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); }
/// <summary>Returns the result of a componentwise equality operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool3x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator == (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 == rhs, lhs.c1 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise equality.</param>
/// <returns>bool3x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator == (double lhs, double3x2 rhs) { return new bool3x2 (lhs == rhs.c0, lhs == rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on two double3x2 matrices.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise not equal.</param>
/// <returns>bool3x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator != (double3x2 lhs, double3x2 rhs) { return new bool3x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on a double3x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool3x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator != (double3x2 lhs, double rhs) { return new bool3x2 (lhs.c0 != rhs, lhs.c1 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double3x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double3x2 to use to compute componentwise not equal.</param>
/// <returns>bool3x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x2 operator != (double lhs, double3x2 rhs) { return new bool3x2 (lhs != rhs.c0, lhs != rhs.c1); }
/// <summary>Returns the double3 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double3x2 is equal to a given double3x2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(double3x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); }
/// <summary>Returns true if the double3x2 is equal to a given double3x2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double3x2 converted && Equals(converted); }
/// <summary>Returns a hash code for the double3x2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double3x2.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the double3x2 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double3x2 matrix constructed from two double3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <returns>double3x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(double3 c0, double3 c1) { return new double3x2(c0, c1); }
/// <summary>Returns a double3x2 matrix constructed from from 6 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <returns>double3x2 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a double3x2 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(double v) { return new double3x2(v); }
/// <summary>Returns a double3x2 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(bool v) { return new double3x2(v); }
/// <summary>Return a double3x2 matrix constructed from a bool3x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x2 to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(bool3x2 v) { return new double3x2(v); }
/// <summary>Returns a double3x2 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(int v) { return new double3x2(v); }
/// <summary>Return a double3x2 matrix constructed from a int3x2 matrix by componentwise conversion.</summary>
/// <param name="v">int3x2 to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(int3x2 v) { return new double3x2(v); }
/// <summary>Returns a double3x2 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(uint v) { return new double3x2(v); }
/// <summary>Return a double3x2 matrix constructed from a uint3x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x2 to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(uint3x2 v) { return new double3x2(v); }
/// <summary>Returns a double3x2 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(float v) { return new double3x2(v); }
/// <summary>Return a double3x2 matrix constructed from a float3x2 matrix by componentwise conversion.</summary>
/// <param name="v">float3x2 to convert to double3x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x2 double3x2(float3x2 v) { return new double3x2(v); }
/// <summary>Return the double2x3 transpose of a double3x2 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a double3x2 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint3 vector hash code of a double3x2 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint3 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

@@ -0,0 +1,697 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 3x3 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double3x3 : System.IEquatable<double3x3>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double3 c0;
/// <summary>Column 1 of the matrix.</summary>
public double3 c1;
/// <summary>Column 2 of the matrix.</summary>
public double3 c2;
/// <summary>double3x3 identity transform.</summary>
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);
/// <summary>double3x3 zero value.</summary>
public static readonly double3x3 zero;
/// <summary>Constructs a double3x3 matrix from three double3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x3(double3 c0, double3 c1, double3 c2)
{
this.c0 = c0;
this.c1 = c1;
this.c2 = c2;
}
/// <summary>Constructs a double3x3 matrix from 9 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double3x3 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x3(double v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double3x3 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x3</param>
[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);
}
/// <summary>Constructs a double3x3 matrix from a bool3x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x3 to convert to double3x3</param>
[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);
}
/// <summary>Constructs a double3x3 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x3(int v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double3x3 matrix from a int3x3 matrix by componentwise conversion.</summary>
/// <param name="v">int3x3 to convert to double3x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x3(int3x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Constructs a double3x3 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x3(uint v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double3x3 matrix from a uint3x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x3 to convert to double3x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x3(uint3x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Constructs a double3x3 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x3(float v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double3x3 matrix from a float3x3 matrix by componentwise conversion.</summary>
/// <param name="v">float3x3 to convert to double3x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x3(float3x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Implicitly converts a single double value to a double3x3 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x3(double v) { return new double3x3(v); }
/// <summary>Explicitly converts a single bool value to a double3x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double3x3(bool v) { return new double3x3(v); }
/// <summary>Explicitly converts a bool3x3 matrix to a double3x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x3 to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double3x3(bool3x3 v) { return new double3x3(v); }
/// <summary>Implicitly converts a single int value to a double3x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x3(int v) { return new double3x3(v); }
/// <summary>Implicitly converts a int3x3 matrix to a double3x3 matrix by componentwise conversion.</summary>
/// <param name="v">int3x3 to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x3(int3x3 v) { return new double3x3(v); }
/// <summary>Implicitly converts a single uint value to a double3x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x3(uint v) { return new double3x3(v); }
/// <summary>Implicitly converts a uint3x3 matrix to a double3x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x3 to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x3(uint3x3 v) { return new double3x3(v); }
/// <summary>Implicitly converts a single float value to a double3x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x3(float v) { return new double3x3(v); }
/// <summary>Implicitly converts a float3x3 matrix to a double3x3 matrix by componentwise conversion.</summary>
/// <param name="v">float3x3 to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x3(float3x3 v) { return new double3x3(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise multiplication.</param>
/// <returns>double3x3 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double3x3 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator * (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise multiplication.</param>
/// <returns>double3x3 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator * (double lhs, double3x3 rhs) { return new double3x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); }
/// <summary>Returns the result of a componentwise addition operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise addition.</param>
/// <returns>double3x3 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double3x3 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator + (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise addition.</param>
/// <returns>double3x3 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator + (double lhs, double3x3 rhs) { return new double3x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); }
/// <summary>Returns the result of a componentwise subtraction operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise subtraction.</param>
/// <returns>double3x3 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double3x3 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator - (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise subtraction.</param>
/// <returns>double3x3 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator - (double lhs, double3x3 rhs) { return new double3x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); }
/// <summary>Returns the result of a componentwise division operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise division.</param>
/// <returns>double3x3 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double3x3 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator / (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise division.</param>
/// <returns>double3x3 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator / (double lhs, double3x3 rhs) { return new double3x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); }
/// <summary>Returns the result of a componentwise modulus operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise modulus.</param>
/// <returns>double3x3 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double3x3 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator % (double3x3 lhs, double rhs) { return new double3x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise modulus.</param>
/// <returns>double3x3 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator % (double lhs, double3x3 rhs) { return new double3x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); }
/// <summary>Returns the result of a componentwise increment operation on a double3x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double3x3 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator ++ (double3x3 val) { return new double3x3 (++val.c0, ++val.c1, ++val.c2); }
/// <summary>Returns the result of a componentwise decrement operation on a double3x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double3x3 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator -- (double3x3 val) { return new double3x3 (--val.c0, --val.c1, --val.c2); }
/// <summary>Returns the result of a componentwise less than operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise less than.</param>
/// <returns>bool3x3 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool3x3 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator < (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise less than.</param>
/// <returns>bool3x3 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator < (double lhs, double3x3 rhs) { return new bool3x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); }
/// <summary>Returns the result of a componentwise less or equal operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise less or equal.</param>
/// <returns>bool3x3 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool3x3 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator <= (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise less or equal.</param>
/// <returns>bool3x3 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator <= (double lhs, double3x3 rhs) { return new bool3x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); }
/// <summary>Returns the result of a componentwise greater than operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise greater than.</param>
/// <returns>bool3x3 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool3x3 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator > (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise greater than.</param>
/// <returns>bool3x3 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator > (double lhs, double3x3 rhs) { return new bool3x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise greater or equal.</param>
/// <returns>bool3x3 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool3x3 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator >= (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise greater or equal.</param>
/// <returns>bool3x3 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator >= (double lhs, double3x3 rhs) { return new bool3x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); }
/// <summary>Returns the result of a componentwise unary minus operation on a double3x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double3x3 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator - (double3x3 val) { return new double3x3 (-val.c0, -val.c1, -val.c2); }
/// <summary>Returns the result of a componentwise unary plus operation on a double3x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double3x3 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 operator + (double3x3 val) { return new double3x3 (+val.c0, +val.c1, +val.c2); }
/// <summary>Returns the result of a componentwise equality operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise equality.</param>
/// <returns>bool3x3 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool3x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator == (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise equality.</param>
/// <returns>bool3x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator == (double lhs, double3x3 rhs) { return new bool3x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
/// <summary>Returns the result of a componentwise not equal operation on two double3x3 matrices.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise not equal.</param>
/// <returns>bool3x3 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double3x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool3x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator != (double3x3 lhs, double rhs) { return new bool3x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double3x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double3x3 to use to compute componentwise not equal.</param>
/// <returns>bool3x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool3x3 operator != (double lhs, double3x3 rhs) { return new bool3x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
/// <summary>Returns the double3 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double3x3 is equal to a given double3x3, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(double3x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
/// <summary>Returns true if the double3x3 is equal to a given double3x3, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double3x3 converted && Equals(converted); }
/// <summary>Returns a hash code for the double3x3.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double3x3.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the double3x3 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double3x3 matrix constructed from three double3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <returns>double3x3 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(double3 c0, double3 c1, double3 c2) { return new double3x3(c0, c1, c2); }
/// <summary>Returns a double3x3 matrix constructed from from 9 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <returns>double3x3 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a double3x3 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(double v) { return new double3x3(v); }
/// <summary>Returns a double3x3 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(bool v) { return new double3x3(v); }
/// <summary>Return a double3x3 matrix constructed from a bool3x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x3 to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(bool3x3 v) { return new double3x3(v); }
/// <summary>Returns a double3x3 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(int v) { return new double3x3(v); }
/// <summary>Return a double3x3 matrix constructed from a int3x3 matrix by componentwise conversion.</summary>
/// <param name="v">int3x3 to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(int3x3 v) { return new double3x3(v); }
/// <summary>Returns a double3x3 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(uint v) { return new double3x3(v); }
/// <summary>Return a double3x3 matrix constructed from a uint3x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x3 to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(uint3x3 v) { return new double3x3(v); }
/// <summary>Returns a double3x3 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(float v) { return new double3x3(v); }
/// <summary>Return a double3x3 matrix constructed from a float3x3 matrix by componentwise conversion.</summary>
/// <param name="v">float3x3 to convert to double3x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x3 double3x3(float3x3 v) { return new double3x3(v); }
/// <summary>Return the double3x3 transpose of a double3x3 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns the double3x3 full inverse of a double3x3 matrix.</summary>
/// <param name="m">Matrix to invert.</param>
/// <returns>The inverted matrix.</returns>
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;
}
/// <summary>Returns the determinant of a double3x3 matrix.</summary>
/// <param name="m">Matrix to use when computing determinant.</param>
/// <returns>The determinant of the matrix.</returns>
[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;
}
/// <summary>Returns a uint hash code of a double3x3 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint3 vector hash code of a double3x3 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint3 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

@@ -0,0 +1,699 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 3x4 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double3x4 : System.IEquatable<double3x4>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double3 c0;
/// <summary>Column 1 of the matrix.</summary>
public double3 c1;
/// <summary>Column 2 of the matrix.</summary>
public double3 c2;
/// <summary>Column 3 of the matrix.</summary>
public double3 c3;
/// <summary>double3x4 zero value.</summary>
public static readonly double3x4 zero;
/// <summary>Constructs a double3x4 matrix from four double3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
[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;
}
/// <summary>Constructs a double3x4 matrix from 12 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m23">The matrix at row 2, column 3 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double3x4 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x4(double v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double3x4 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x4</param>
[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);
}
/// <summary>Constructs a double3x4 matrix from a bool3x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x4 to convert to double3x4</param>
[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);
}
/// <summary>Constructs a double3x4 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x4(int v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double3x4 matrix from a int3x4 matrix by componentwise conversion.</summary>
/// <param name="v">int3x4 to convert to double3x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x4(int3x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Constructs a double3x4 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x4(uint v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double3x4 matrix from a uint3x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x4 to convert to double3x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x4(uint3x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Constructs a double3x4 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x4(float v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double3x4 matrix from a float3x4 matrix by componentwise conversion.</summary>
/// <param name="v">float3x4 to convert to double3x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double3x4(float3x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Implicitly converts a single double value to a double3x4 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x4(double v) { return new double3x4(v); }
/// <summary>Explicitly converts a single bool value to a double3x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double3x4(bool v) { return new double3x4(v); }
/// <summary>Explicitly converts a bool3x4 matrix to a double3x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x4 to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double3x4(bool3x4 v) { return new double3x4(v); }
/// <summary>Implicitly converts a single int value to a double3x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x4(int v) { return new double3x4(v); }
/// <summary>Implicitly converts a int3x4 matrix to a double3x4 matrix by componentwise conversion.</summary>
/// <param name="v">int3x4 to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x4(int3x4 v) { return new double3x4(v); }
/// <summary>Implicitly converts a single uint value to a double3x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x4(uint v) { return new double3x4(v); }
/// <summary>Implicitly converts a uint3x4 matrix to a double3x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x4 to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x4(uint3x4 v) { return new double3x4(v); }
/// <summary>Implicitly converts a single float value to a double3x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x4(float v) { return new double3x4(v); }
/// <summary>Implicitly converts a float3x4 matrix to a double3x4 matrix by componentwise conversion.</summary>
/// <param name="v">float3x4 to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double3x4(float3x4 v) { return new double3x4(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise multiplication.</param>
/// <returns>double3x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double3x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise multiplication.</param>
/// <returns>double3x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise addition.</param>
/// <returns>double3x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double3x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise addition.</param>
/// <returns>double3x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise subtraction.</param>
/// <returns>double3x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double3x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise subtraction.</param>
/// <returns>double3x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise division.</param>
/// <returns>double3x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double3x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise division.</param>
/// <returns>double3x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise modulus.</param>
/// <returns>double3x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double3x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise modulus.</param>
/// <returns>double3x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise increment operation on a double3x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double3x4 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 operator ++ (double3x4 val) { return new double3x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); }
/// <summary>Returns the result of a componentwise decrement operation on a double3x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double3x4 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 operator -- (double3x4 val) { return new double3x4 (--val.c0, --val.c1, --val.c2, --val.c3); }
/// <summary>Returns the result of a componentwise less than operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise less than.</param>
/// <returns>bool3x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool3x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise less than.</param>
/// <returns>bool3x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise less or equal.</param>
/// <returns>bool3x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool3x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise less or equal.</param>
/// <returns>bool3x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise greater than.</param>
/// <returns>bool3x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool3x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise greater than.</param>
/// <returns>bool3x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise greater or equal.</param>
/// <returns>bool3x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool3x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise greater or equal.</param>
/// <returns>bool3x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise unary minus operation on a double3x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double3x4 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 operator - (double3x4 val) { return new double3x4 (-val.c0, -val.c1, -val.c2, -val.c3); }
/// <summary>Returns the result of a componentwise unary plus operation on a double3x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double3x4 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 operator + (double3x4 val) { return new double3x4 (+val.c0, +val.c1, +val.c2, +val.c3); }
/// <summary>Returns the result of a componentwise equality operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise equality.</param>
/// <returns>bool3x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool3x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise equality.</param>
/// <returns>bool3x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on two double3x4 matrices.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise not equal.</param>
/// <returns>bool3x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double3x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double3x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool3x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double3x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double3x4 to use to compute componentwise not equal.</param>
/// <returns>bool3x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the double3 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double3x4 is equal to a given double3x4, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[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); }
/// <summary>Returns true if the double3x4 is equal to a given double3x4, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double3x4 converted && Equals(converted); }
/// <summary>Returns a hash code for the double3x4.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double3x4.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the double3x4 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double3x4 matrix constructed from four double3 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
/// <returns>double3x4 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(double3 c0, double3 c1, double3 c2, double3 c3) { return new double3x4(c0, c1, c2, c3); }
/// <summary>Returns a double3x4 matrix constructed from from 12 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m23">The matrix at row 2, column 3 will be set to this value.</param>
/// <returns>double3x4 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a double3x4 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(double v) { return new double3x4(v); }
/// <summary>Returns a double3x4 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(bool v) { return new double3x4(v); }
/// <summary>Return a double3x4 matrix constructed from a bool3x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool3x4 to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(bool3x4 v) { return new double3x4(v); }
/// <summary>Returns a double3x4 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(int v) { return new double3x4(v); }
/// <summary>Return a double3x4 matrix constructed from a int3x4 matrix by componentwise conversion.</summary>
/// <param name="v">int3x4 to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(int3x4 v) { return new double3x4(v); }
/// <summary>Returns a double3x4 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(uint v) { return new double3x4(v); }
/// <summary>Return a double3x4 matrix constructed from a uint3x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint3x4 to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(uint3x4 v) { return new double3x4(v); }
/// <summary>Returns a double3x4 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(float v) { return new double3x4(v); }
/// <summary>Return a double3x4 matrix constructed from a float3x4 matrix by componentwise conversion.</summary>
/// <param name="v">float3x4 to convert to double3x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double3x4 double3x4(float3x4 v) { return new double3x4(v); }
/// <summary>Return the double4x3 transpose of a double3x4 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Fast matrix inverse for rigid transforms (orthonormal basis and translation)</summary>
/// <param name="m">Matrix to invert.</param>
/// <returns>The inverted matrix.</returns>
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);
}
/// <summary>Returns a uint hash code of a double3x4 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint3 vector hash code of a double3x4 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint3 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

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

View File

@@ -0,0 +1,639 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 4x2 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double4x2 : System.IEquatable<double4x2>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double4 c0;
/// <summary>Column 1 of the matrix.</summary>
public double4 c1;
/// <summary>double4x2 zero value.</summary>
public static readonly double4x2 zero;
/// <summary>Constructs a double4x2 matrix from two double4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x2(double4 c0, double4 c1)
{
this.c0 = c0;
this.c1 = c1;
}
/// <summary>Constructs a double4x2 matrix from 8 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double4x2 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x2(double v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double4x2 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x2</param>
[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);
}
/// <summary>Constructs a double4x2 matrix from a bool4x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x2 to convert to double4x2</param>
[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);
}
/// <summary>Constructs a double4x2 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x2(int v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double4x2 matrix from a int4x2 matrix by componentwise conversion.</summary>
/// <param name="v">int4x2 to convert to double4x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x2(int4x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Constructs a double4x2 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x2(uint v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double4x2 matrix from a uint4x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x2 to convert to double4x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x2(uint4x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Constructs a double4x2 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x2(float v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a double4x2 matrix from a float4x2 matrix by componentwise conversion.</summary>
/// <param name="v">float4x2 to convert to double4x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x2(float4x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Implicitly converts a single double value to a double4x2 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x2(double v) { return new double4x2(v); }
/// <summary>Explicitly converts a single bool value to a double4x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double4x2(bool v) { return new double4x2(v); }
/// <summary>Explicitly converts a bool4x2 matrix to a double4x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x2 to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double4x2(bool4x2 v) { return new double4x2(v); }
/// <summary>Implicitly converts a single int value to a double4x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x2(int v) { return new double4x2(v); }
/// <summary>Implicitly converts a int4x2 matrix to a double4x2 matrix by componentwise conversion.</summary>
/// <param name="v">int4x2 to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x2(int4x2 v) { return new double4x2(v); }
/// <summary>Implicitly converts a single uint value to a double4x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x2(uint v) { return new double4x2(v); }
/// <summary>Implicitly converts a uint4x2 matrix to a double4x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x2 to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x2(uint4x2 v) { return new double4x2(v); }
/// <summary>Implicitly converts a single float value to a double4x2 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x2(float v) { return new double4x2(v); }
/// <summary>Implicitly converts a float4x2 matrix to a double4x2 matrix by componentwise conversion.</summary>
/// <param name="v">float4x2 to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x2(float4x2 v) { return new double4x2(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise multiplication.</param>
/// <returns>double4x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator * (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); }
/// <summary>Returns the result of a componentwise multiplication operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double4x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator * (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 * rhs, lhs.c1 * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise multiplication.</param>
/// <returns>double4x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator * (double lhs, double4x2 rhs) { return new double4x2 (lhs * rhs.c0, lhs * rhs.c1); }
/// <summary>Returns the result of a componentwise addition operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise addition.</param>
/// <returns>double4x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator + (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); }
/// <summary>Returns the result of a componentwise addition operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double4x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator + (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 + rhs, lhs.c1 + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise addition.</param>
/// <returns>double4x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator + (double lhs, double4x2 rhs) { return new double4x2 (lhs + rhs.c0, lhs + rhs.c1); }
/// <summary>Returns the result of a componentwise subtraction operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise subtraction.</param>
/// <returns>double4x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator - (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); }
/// <summary>Returns the result of a componentwise subtraction operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double4x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator - (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 - rhs, lhs.c1 - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise subtraction.</param>
/// <returns>double4x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator - (double lhs, double4x2 rhs) { return new double4x2 (lhs - rhs.c0, lhs - rhs.c1); }
/// <summary>Returns the result of a componentwise division operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise division.</param>
/// <returns>double4x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator / (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); }
/// <summary>Returns the result of a componentwise division operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double4x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator / (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 / rhs, lhs.c1 / rhs); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise division.</param>
/// <returns>double4x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator / (double lhs, double4x2 rhs) { return new double4x2 (lhs / rhs.c0, lhs / rhs.c1); }
/// <summary>Returns the result of a componentwise modulus operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise modulus.</param>
/// <returns>double4x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator % (double4x2 lhs, double4x2 rhs) { return new double4x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); }
/// <summary>Returns the result of a componentwise modulus operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double4x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator % (double4x2 lhs, double rhs) { return new double4x2 (lhs.c0 % rhs, lhs.c1 % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise modulus.</param>
/// <returns>double4x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator % (double lhs, double4x2 rhs) { return new double4x2 (lhs % rhs.c0, lhs % rhs.c1); }
/// <summary>Returns the result of a componentwise increment operation on a double4x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double4x2 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator ++ (double4x2 val) { return new double4x2 (++val.c0, ++val.c1); }
/// <summary>Returns the result of a componentwise decrement operation on a double4x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double4x2 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator -- (double4x2 val) { return new double4x2 (--val.c0, --val.c1); }
/// <summary>Returns the result of a componentwise less than operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise less than.</param>
/// <returns>bool4x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator < (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); }
/// <summary>Returns the result of a componentwise less than operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool4x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator < (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 < rhs, lhs.c1 < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise less than.</param>
/// <returns>bool4x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator < (double lhs, double4x2 rhs) { return new bool4x2 (lhs < rhs.c0, lhs < rhs.c1); }
/// <summary>Returns the result of a componentwise less or equal operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise less or equal.</param>
/// <returns>bool4x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator <= (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); }
/// <summary>Returns the result of a componentwise less or equal operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool4x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator <= (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise less or equal.</param>
/// <returns>bool4x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator <= (double lhs, double4x2 rhs) { return new bool4x2 (lhs <= rhs.c0, lhs <= rhs.c1); }
/// <summary>Returns the result of a componentwise greater than operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise greater than.</param>
/// <returns>bool4x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator > (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); }
/// <summary>Returns the result of a componentwise greater than operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool4x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator > (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 > rhs, lhs.c1 > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise greater than.</param>
/// <returns>bool4x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator > (double lhs, double4x2 rhs) { return new bool4x2 (lhs > rhs.c0, lhs > rhs.c1); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise greater or equal.</param>
/// <returns>bool4x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator >= (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool4x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator >= (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise greater or equal.</param>
/// <returns>bool4x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator >= (double lhs, double4x2 rhs) { return new bool4x2 (lhs >= rhs.c0, lhs >= rhs.c1); }
/// <summary>Returns the result of a componentwise unary minus operation on a double4x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double4x2 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator - (double4x2 val) { return new double4x2 (-val.c0, -val.c1); }
/// <summary>Returns the result of a componentwise unary plus operation on a double4x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double4x2 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 operator + (double4x2 val) { return new double4x2 (+val.c0, +val.c1); }
/// <summary>Returns the result of a componentwise equality operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise equality.</param>
/// <returns>bool4x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator == (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); }
/// <summary>Returns the result of a componentwise equality operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool4x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator == (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 == rhs, lhs.c1 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise equality.</param>
/// <returns>bool4x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator == (double lhs, double4x2 rhs) { return new bool4x2 (lhs == rhs.c0, lhs == rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on two double4x2 matrices.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise not equal.</param>
/// <returns>bool4x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator != (double4x2 lhs, double4x2 rhs) { return new bool4x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on a double4x2 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool4x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator != (double4x2 lhs, double rhs) { return new bool4x2 (lhs.c0 != rhs, lhs.c1 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double4x2 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double4x2 to use to compute componentwise not equal.</param>
/// <returns>bool4x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x2 operator != (double lhs, double4x2 rhs) { return new bool4x2 (lhs != rhs.c0, lhs != rhs.c1); }
/// <summary>Returns the double4 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double4x2 is equal to a given double4x2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(double4x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); }
/// <summary>Returns true if the double4x2 is equal to a given double4x2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double4x2 converted && Equals(converted); }
/// <summary>Returns a hash code for the double4x2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double4x2.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the double4x2 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double4x2 matrix constructed from two double4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <returns>double4x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(double4 c0, double4 c1) { return new double4x2(c0, c1); }
/// <summary>Returns a double4x2 matrix constructed from from 8 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <returns>double4x2 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a double4x2 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(double v) { return new double4x2(v); }
/// <summary>Returns a double4x2 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(bool v) { return new double4x2(v); }
/// <summary>Return a double4x2 matrix constructed from a bool4x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x2 to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(bool4x2 v) { return new double4x2(v); }
/// <summary>Returns a double4x2 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(int v) { return new double4x2(v); }
/// <summary>Return a double4x2 matrix constructed from a int4x2 matrix by componentwise conversion.</summary>
/// <param name="v">int4x2 to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(int4x2 v) { return new double4x2(v); }
/// <summary>Returns a double4x2 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(uint v) { return new double4x2(v); }
/// <summary>Return a double4x2 matrix constructed from a uint4x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x2 to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(uint4x2 v) { return new double4x2(v); }
/// <summary>Returns a double4x2 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(float v) { return new double4x2(v); }
/// <summary>Return a double4x2 matrix constructed from a float4x2 matrix by componentwise conversion.</summary>
/// <param name="v">float4x2 to convert to double4x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x2 double4x2(float4x2 v) { return new double4x2(v); }
/// <summary>Return the double2x4 transpose of a double4x2 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a double4x2 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint4 vector hash code of a double4x2 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint4 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

@@ -0,0 +1,665 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 4x3 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double4x3 : System.IEquatable<double4x3>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double4 c0;
/// <summary>Column 1 of the matrix.</summary>
public double4 c1;
/// <summary>Column 2 of the matrix.</summary>
public double4 c2;
/// <summary>double4x3 zero value.</summary>
public static readonly double4x3 zero;
/// <summary>Constructs a double4x3 matrix from three double4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x3(double4 c0, double4 c1, double4 c2)
{
this.c0 = c0;
this.c1 = c1;
this.c2 = c2;
}
/// <summary>Constructs a double4x3 matrix from 12 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <param name="m32">The matrix at row 3, column 2 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double4x3 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x3(double v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double4x3 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x3</param>
[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);
}
/// <summary>Constructs a double4x3 matrix from a bool4x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x3 to convert to double4x3</param>
[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);
}
/// <summary>Constructs a double4x3 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x3(int v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double4x3 matrix from a int4x3 matrix by componentwise conversion.</summary>
/// <param name="v">int4x3 to convert to double4x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x3(int4x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Constructs a double4x3 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x3(uint v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double4x3 matrix from a uint4x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x3 to convert to double4x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x3(uint4x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Constructs a double4x3 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x3(float v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a double4x3 matrix from a float4x3 matrix by componentwise conversion.</summary>
/// <param name="v">float4x3 to convert to double4x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x3(float4x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Implicitly converts a single double value to a double4x3 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x3(double v) { return new double4x3(v); }
/// <summary>Explicitly converts a single bool value to a double4x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double4x3(bool v) { return new double4x3(v); }
/// <summary>Explicitly converts a bool4x3 matrix to a double4x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x3 to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double4x3(bool4x3 v) { return new double4x3(v); }
/// <summary>Implicitly converts a single int value to a double4x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x3(int v) { return new double4x3(v); }
/// <summary>Implicitly converts a int4x3 matrix to a double4x3 matrix by componentwise conversion.</summary>
/// <param name="v">int4x3 to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x3(int4x3 v) { return new double4x3(v); }
/// <summary>Implicitly converts a single uint value to a double4x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x3(uint v) { return new double4x3(v); }
/// <summary>Implicitly converts a uint4x3 matrix to a double4x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x3 to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x3(uint4x3 v) { return new double4x3(v); }
/// <summary>Implicitly converts a single float value to a double4x3 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x3(float v) { return new double4x3(v); }
/// <summary>Implicitly converts a float4x3 matrix to a double4x3 matrix by componentwise conversion.</summary>
/// <param name="v">float4x3 to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x3(float4x3 v) { return new double4x3(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise multiplication.</param>
/// <returns>double4x3 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double4x3 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator * (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise multiplication.</param>
/// <returns>double4x3 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator * (double lhs, double4x3 rhs) { return new double4x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); }
/// <summary>Returns the result of a componentwise addition operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise addition.</param>
/// <returns>double4x3 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double4x3 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator + (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise addition.</param>
/// <returns>double4x3 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator + (double lhs, double4x3 rhs) { return new double4x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); }
/// <summary>Returns the result of a componentwise subtraction operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise subtraction.</param>
/// <returns>double4x3 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double4x3 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator - (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise subtraction.</param>
/// <returns>double4x3 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator - (double lhs, double4x3 rhs) { return new double4x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); }
/// <summary>Returns the result of a componentwise division operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise division.</param>
/// <returns>double4x3 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double4x3 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator / (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise division.</param>
/// <returns>double4x3 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator / (double lhs, double4x3 rhs) { return new double4x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); }
/// <summary>Returns the result of a componentwise modulus operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise modulus.</param>
/// <returns>double4x3 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double4x3 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator % (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise modulus.</param>
/// <returns>double4x3 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator % (double lhs, double4x3 rhs) { return new double4x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); }
/// <summary>Returns the result of a componentwise increment operation on a double4x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double4x3 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator ++ (double4x3 val) { return new double4x3 (++val.c0, ++val.c1, ++val.c2); }
/// <summary>Returns the result of a componentwise decrement operation on a double4x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double4x3 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator -- (double4x3 val) { return new double4x3 (--val.c0, --val.c1, --val.c2); }
/// <summary>Returns the result of a componentwise less than operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise less than.</param>
/// <returns>bool4x3 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool4x3 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator < (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise less than.</param>
/// <returns>bool4x3 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator < (double lhs, double4x3 rhs) { return new bool4x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); }
/// <summary>Returns the result of a componentwise less or equal operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise less or equal.</param>
/// <returns>bool4x3 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool4x3 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator <= (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise less or equal.</param>
/// <returns>bool4x3 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator <= (double lhs, double4x3 rhs) { return new bool4x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); }
/// <summary>Returns the result of a componentwise greater than operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise greater than.</param>
/// <returns>bool4x3 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool4x3 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator > (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise greater than.</param>
/// <returns>bool4x3 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator > (double lhs, double4x3 rhs) { return new bool4x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise greater or equal.</param>
/// <returns>bool4x3 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool4x3 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator >= (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise greater or equal.</param>
/// <returns>bool4x3 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator >= (double lhs, double4x3 rhs) { return new bool4x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); }
/// <summary>Returns the result of a componentwise unary minus operation on a double4x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double4x3 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator - (double4x3 val) { return new double4x3 (-val.c0, -val.c1, -val.c2); }
/// <summary>Returns the result of a componentwise unary plus operation on a double4x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double4x3 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 operator + (double4x3 val) { return new double4x3 (+val.c0, +val.c1, +val.c2); }
/// <summary>Returns the result of a componentwise equality operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise equality.</param>
/// <returns>bool4x3 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool4x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator == (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise equality.</param>
/// <returns>bool4x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator == (double lhs, double4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
/// <summary>Returns the result of a componentwise not equal operation on two double4x3 matrices.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise not equal.</param>
/// <returns>bool4x3 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double4x3 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool4x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator != (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double4x3 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double4x3 to use to compute componentwise not equal.</param>
/// <returns>bool4x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool4x3 operator != (double lhs, double4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
/// <summary>Returns the double4 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double4x3 is equal to a given double4x3, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(double4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
/// <summary>Returns true if the double4x3 is equal to a given double4x3, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double4x3 converted && Equals(converted); }
/// <summary>Returns a hash code for the double4x3.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double4x3.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the double4x3 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double4x3 matrix constructed from three double4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <returns>double4x3 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(double4 c0, double4 c1, double4 c2) { return new double4x3(c0, c1, c2); }
/// <summary>Returns a double4x3 matrix constructed from from 12 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <param name="m32">The matrix at row 3, column 2 will be set to this value.</param>
/// <returns>double4x3 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a double4x3 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(double v) { return new double4x3(v); }
/// <summary>Returns a double4x3 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(bool v) { return new double4x3(v); }
/// <summary>Return a double4x3 matrix constructed from a bool4x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x3 to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(bool4x3 v) { return new double4x3(v); }
/// <summary>Returns a double4x3 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(int v) { return new double4x3(v); }
/// <summary>Return a double4x3 matrix constructed from a int4x3 matrix by componentwise conversion.</summary>
/// <param name="v">int4x3 to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(int4x3 v) { return new double4x3(v); }
/// <summary>Returns a double4x3 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(uint v) { return new double4x3(v); }
/// <summary>Return a double4x3 matrix constructed from a uint4x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x3 to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(uint4x3 v) { return new double4x3(v); }
/// <summary>Returns a double4x3 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(float v) { return new double4x3(v); }
/// <summary>Return a double4x3 matrix constructed from a float4x3 matrix by componentwise conversion.</summary>
/// <param name="v">float4x3 to convert to double4x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x3 double4x3(float4x3 v) { return new double4x3(v); }
/// <summary>Return the double3x4 transpose of a double4x3 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a double4x3 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint4 vector hash code of a double4x3 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint4 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

@@ -0,0 +1,824 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 4x4 matrix of doubles.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct double4x4 : System.IEquatable<double4x4>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public double4 c0;
/// <summary>Column 1 of the matrix.</summary>
public double4 c1;
/// <summary>Column 2 of the matrix.</summary>
public double4 c2;
/// <summary>Column 3 of the matrix.</summary>
public double4 c3;
/// <summary>double4x4 identity transform.</summary>
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);
/// <summary>double4x4 zero value.</summary>
public static readonly double4x4 zero;
/// <summary>Constructs a double4x4 matrix from four double4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
[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;
}
/// <summary>Constructs a double4x4 matrix from 16 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m23">The matrix at row 2, column 3 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <param name="m32">The matrix at row 3, column 2 will be set to this value.</param>
/// <param name="m33">The matrix at row 3, column 3 will be set to this value.</param>
[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);
}
/// <summary>Constructs a double4x4 matrix from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x4(double v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double4x4 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x4</param>
[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);
}
/// <summary>Constructs a double4x4 matrix from a bool4x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x4 to convert to double4x4</param>
[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);
}
/// <summary>Constructs a double4x4 matrix from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x4(int v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double4x4 matrix from a int4x4 matrix by componentwise conversion.</summary>
/// <param name="v">int4x4 to convert to double4x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x4(int4x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Constructs a double4x4 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x4(uint v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double4x4 matrix from a uint4x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x4 to convert to double4x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x4(uint4x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Constructs a double4x4 matrix from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x4(float v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
this.c3 = v;
}
/// <summary>Constructs a double4x4 matrix from a float4x4 matrix by componentwise conversion.</summary>
/// <param name="v">float4x4 to convert to double4x4</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double4x4(float4x4 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
this.c3 = v.c3;
}
/// <summary>Implicitly converts a single double value to a double4x4 matrix by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x4(double v) { return new double4x4(v); }
/// <summary>Explicitly converts a single bool value to a double4x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double4x4(bool v) { return new double4x4(v); }
/// <summary>Explicitly converts a bool4x4 matrix to a double4x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x4 to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator double4x4(bool4x4 v) { return new double4x4(v); }
/// <summary>Implicitly converts a single int value to a double4x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x4(int v) { return new double4x4(v); }
/// <summary>Implicitly converts a int4x4 matrix to a double4x4 matrix by componentwise conversion.</summary>
/// <param name="v">int4x4 to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x4(int4x4 v) { return new double4x4(v); }
/// <summary>Implicitly converts a single uint value to a double4x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x4(uint v) { return new double4x4(v); }
/// <summary>Implicitly converts a uint4x4 matrix to a double4x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x4 to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x4(uint4x4 v) { return new double4x4(v); }
/// <summary>Implicitly converts a single float value to a double4x4 matrix by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x4(float v) { return new double4x4(v); }
/// <summary>Implicitly converts a float4x4 matrix to a double4x4 matrix by componentwise conversion.</summary>
/// <param name="v">float4x4 to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator double4x4(float4x4 v) { return new double4x4(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise multiplication.</param>
/// <returns>double4x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise multiplication.</param>
/// <returns>double4x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise multiplication.</param>
/// <returns>double4x4 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise addition.</param>
/// <returns>double4x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise addition.</param>
/// <returns>double4x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise addition.</param>
/// <returns>double4x4 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise subtraction.</param>
/// <returns>double4x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise subtraction.</param>
/// <returns>double4x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise subtraction.</param>
/// <returns>double4x4 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise division.</param>
/// <returns>double4x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise division.</param>
/// <returns>double4x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise division.</param>
/// <returns>double4x4 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise modulus.</param>
/// <returns>double4x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise modulus.</param>
/// <returns>double4x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise modulus.</param>
/// <returns>double4x4 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise increment operation on a double4x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>double4x4 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 operator ++ (double4x4 val) { return new double4x4 (++val.c0, ++val.c1, ++val.c2, ++val.c3); }
/// <summary>Returns the result of a componentwise decrement operation on a double4x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>double4x4 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 operator -- (double4x4 val) { return new double4x4 (--val.c0, --val.c1, --val.c2, --val.c3); }
/// <summary>Returns the result of a componentwise less than operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise less than.</param>
/// <returns>bool4x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less than.</param>
/// <returns>bool4x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise less than.</param>
/// <returns>bool4x4 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise less or equal.</param>
/// <returns>bool4x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise less or equal.</param>
/// <returns>bool4x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise less or equal.</param>
/// <returns>bool4x4 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise greater than.</param>
/// <returns>bool4x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater than.</param>
/// <returns>bool4x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise greater than.</param>
/// <returns>bool4x4 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise greater or equal.</param>
/// <returns>bool4x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise greater or equal.</param>
/// <returns>bool4x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise greater or equal.</param>
/// <returns>bool4x4 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise unary minus operation on a double4x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>double4x4 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 operator - (double4x4 val) { return new double4x4 (-val.c0, -val.c1, -val.c2, -val.c3); }
/// <summary>Returns the result of a componentwise unary plus operation on a double4x4 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>double4x4 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 operator + (double4x4 val) { return new double4x4 (+val.c0, +val.c1, +val.c2, +val.c3); }
/// <summary>Returns the result of a componentwise equality operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise equality.</param>
/// <returns>bool4x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise equality.</param>
/// <returns>bool4x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise equality.</param>
/// <returns>bool4x4 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on two double4x4 matrices.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise not equal.</param>
/// <returns>bool4x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double4x4 matrix and a double value.</summary>
/// <param name="lhs">Left hand side double4x4 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double to use to compute componentwise not equal.</param>
/// <returns>bool4x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a double value and a double4x4 matrix.</summary>
/// <param name="lhs">Left hand side double to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side double4x4 to use to compute componentwise not equal.</param>
/// <returns>bool4x4 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the double4 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the double4x4 is equal to a given double4x4, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[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); }
/// <summary>Returns true if the double4x4 is equal to a given double4x4, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is double4x4 converted && Equals(converted); }
/// <summary>Returns a hash code for the double4x4.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the double4x4.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the double4x4 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a double4x4 matrix constructed from four double4 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <param name="c3">The matrix column c3 will be set to this value.</param>
/// <returns>double4x4 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(double4 c0, double4 c1, double4 c2, double4 c3) { return new double4x4(c0, c1, c2, c3); }
/// <summary>Returns a double4x4 matrix constructed from from 16 double values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m03">The matrix at row 0, column 3 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <param name="m13">The matrix at row 1, column 3 will be set to this value.</param>
/// <param name="m20">The matrix at row 2, column 0 will be set to this value.</param>
/// <param name="m21">The matrix at row 2, column 1 will be set to this value.</param>
/// <param name="m22">The matrix at row 2, column 2 will be set to this value.</param>
/// <param name="m23">The matrix at row 2, column 3 will be set to this value.</param>
/// <param name="m30">The matrix at row 3, column 0 will be set to this value.</param>
/// <param name="m31">The matrix at row 3, column 1 will be set to this value.</param>
/// <param name="m32">The matrix at row 3, column 2 will be set to this value.</param>
/// <param name="m33">The matrix at row 3, column 3 will be set to this value.</param>
/// <returns>double4x4 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a double4x4 matrix constructed from a single double value by assigning it to every component.</summary>
/// <param name="v">double to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(double v) { return new double4x4(v); }
/// <summary>Returns a double4x4 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
/// <param name="v">bool to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(bool v) { return new double4x4(v); }
/// <summary>Return a double4x4 matrix constructed from a bool4x4 matrix by componentwise conversion.</summary>
/// <param name="v">bool4x4 to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(bool4x4 v) { return new double4x4(v); }
/// <summary>Returns a double4x4 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
/// <param name="v">int to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(int v) { return new double4x4(v); }
/// <summary>Return a double4x4 matrix constructed from a int4x4 matrix by componentwise conversion.</summary>
/// <param name="v">int4x4 to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(int4x4 v) { return new double4x4(v); }
/// <summary>Returns a double4x4 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
/// <param name="v">uint to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(uint v) { return new double4x4(v); }
/// <summary>Return a double4x4 matrix constructed from a uint4x4 matrix by componentwise conversion.</summary>
/// <param name="v">uint4x4 to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(uint4x4 v) { return new double4x4(v); }
/// <summary>Returns a double4x4 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
/// <param name="v">float to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(float v) { return new double4x4(v); }
/// <summary>Return a double4x4 matrix constructed from a float4x4 matrix by componentwise conversion.</summary>
/// <param name="v">float4x4 to convert to double4x4</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static double4x4 double4x4(float4x4 v) { return new double4x4(v); }
/// <summary>Return the result of rotating a double3 vector by a double4x4 matrix</summary>
/// <param name ="a">Left hand side matrix argument that specifies the rotation.</param>
/// <param name ="b">Right hand side vector argument to be rotated.</param>
/// <returns>The rotated vector.</returns>
[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;
}
/// <summary>Return the result of transforming a double3 point by a double4x4 matrix</summary>
/// <param name ="a">Left hand side matrix argument that specifies the transformation.</param>
/// <param name ="b">Right hand side point argument to be transformed.</param>
/// <returns>The transformed point.</returns>
[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;
}
/// <summary>Return the double4x4 transpose of a double4x4 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns the double4x4 full inverse of a double4x4 matrix.</summary>
/// <param name="m">Matrix to invert.</param>
/// <returns>The inverted matrix.</returns>
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;
}
/// <summary>Fast matrix inverse for rigid transforms (orthonormal basis and translation)</summary>
/// <param name="m">Matrix to invert.</param>
/// <returns>The inverted matrix.</returns>
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);
}
/// <summary>Returns the determinant of a double4x4 matrix.</summary>
/// <param name="m">Matrix to use when computing determinant.</param>
/// <returns>The determinant of the matrix.</returns>
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;
}
/// <summary>Returns a uint hash code of a double4x4 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint4 vector hash code of a double4x4 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint4 hash of the argument.</returns>
[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;
}
}
}

View File

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

View File

@@ -0,0 +1,998 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using System.Diagnostics;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2 component vector of floats.</summary>
[DebuggerTypeProxy(typeof(float2.DebuggerProxy))]
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct float2 : System.IEquatable<float2>, IFormattable
{
/// <summary>x component of the vector.</summary>
public float x;
/// <summary>y component of the vector.</summary>
public float y;
/// <summary>float2 zero value.</summary>
public static readonly float2 zero;
/// <summary>Constructs a float2 vector from two float values.</summary>
/// <param name="x">The constructed vector's x component will be set to this value.</param>
/// <param name="y">The constructed vector's y component will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(float x, float y)
{
this.x = x;
this.y = y;
}
/// <summary>Constructs a float2 vector from a float2 vector.</summary>
/// <param name="xy">The constructed vector's xy components will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(float2 xy)
{
this.x = xy.x;
this.y = xy.y;
}
/// <summary>Constructs a float2 vector from a single float value by assigning it to every component.</summary>
/// <param name="v">float to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(float v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a float2 vector from a single bool value by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(bool v)
{
this.x = v ? 1.0f : 0.0f;
this.y = v ? 1.0f : 0.0f;
}
/// <summary>Constructs a float2 vector from a bool2 vector by componentwise conversion.</summary>
/// <param name="v">bool2 to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(bool2 v)
{
this.x = v.x ? 1.0f : 0.0f;
this.y = v.y ? 1.0f : 0.0f;
}
/// <summary>Constructs a float2 vector from a single int value by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(int v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a float2 vector from a int2 vector by componentwise conversion.</summary>
/// <param name="v">int2 to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(int2 v)
{
this.x = v.x;
this.y = v.y;
}
/// <summary>Constructs a float2 vector from a single uint value by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(uint v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a float2 vector from a uint2 vector by componentwise conversion.</summary>
/// <param name="v">uint2 to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(uint2 v)
{
this.x = v.x;
this.y = v.y;
}
/// <summary>Constructs a float2 vector from a single half value by converting it to float and assigning it to every component.</summary>
/// <param name="v">half to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(half v)
{
this.x = v;
this.y = v;
}
/// <summary>Constructs a float2 vector from a half2 vector by componentwise conversion.</summary>
/// <param name="v">half2 to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(half2 v)
{
this.x = v.x;
this.y = v.y;
}
/// <summary>Constructs a float2 vector from a single double value by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(double v)
{
this.x = (float)v;
this.y = (float)v;
}
/// <summary>Constructs a float2 vector from a double2 vector by componentwise conversion.</summary>
/// <param name="v">double2 to convert to float2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2(double2 v)
{
this.x = (float)v.x;
this.y = (float)v.y;
}
/// <summary>Implicitly converts a single float value to a float2 vector by assigning it to every component.</summary>
/// <param name="v">float to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2(float v) { return new float2(v); }
/// <summary>Explicitly converts a single bool value to a float2 vector by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2(bool v) { return new float2(v); }
/// <summary>Explicitly converts a bool2 vector to a float2 vector by componentwise conversion.</summary>
/// <param name="v">bool2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2(bool2 v) { return new float2(v); }
/// <summary>Implicitly converts a single int value to a float2 vector by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2(int v) { return new float2(v); }
/// <summary>Implicitly converts a int2 vector to a float2 vector by componentwise conversion.</summary>
/// <param name="v">int2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2(int2 v) { return new float2(v); }
/// <summary>Implicitly converts a single uint value to a float2 vector by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2(uint v) { return new float2(v); }
/// <summary>Implicitly converts a uint2 vector to a float2 vector by componentwise conversion.</summary>
/// <param name="v">uint2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2(uint2 v) { return new float2(v); }
/// <summary>Implicitly converts a single half value to a float2 vector by converting it to float and assigning it to every component.</summary>
/// <param name="v">half to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2(half v) { return new float2(v); }
/// <summary>Implicitly converts a half2 vector to a float2 vector by componentwise conversion.</summary>
/// <param name="v">half2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2(half2 v) { return new float2(v); }
/// <summary>Explicitly converts a single double value to a float2 vector by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2(double v) { return new float2(v); }
/// <summary>Explicitly converts a double2 vector to a float2 vector by componentwise conversion.</summary>
/// <param name="v">double2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2(double2 v) { return new float2(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise multiplication.</param>
/// <returns>float2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator * (float2 lhs, float2 rhs) { return new float2 (lhs.x * rhs.x, lhs.y * rhs.y); }
/// <summary>Returns the result of a componentwise multiplication operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise multiplication.</param>
/// <returns>float2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator * (float2 lhs, float rhs) { return new float2 (lhs.x * rhs, lhs.y * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise multiplication.</param>
/// <returns>float2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator * (float lhs, float2 rhs) { return new float2 (lhs * rhs.x, lhs * rhs.y); }
/// <summary>Returns the result of a componentwise addition operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise addition.</param>
/// <returns>float2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator + (float2 lhs, float2 rhs) { return new float2 (lhs.x + rhs.x, lhs.y + rhs.y); }
/// <summary>Returns the result of a componentwise addition operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise addition.</param>
/// <returns>float2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator + (float2 lhs, float rhs) { return new float2 (lhs.x + rhs, lhs.y + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise addition.</param>
/// <returns>float2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator + (float lhs, float2 rhs) { return new float2 (lhs + rhs.x, lhs + rhs.y); }
/// <summary>Returns the result of a componentwise subtraction operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise subtraction.</param>
/// <returns>float2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator - (float2 lhs, float2 rhs) { return new float2 (lhs.x - rhs.x, lhs.y - rhs.y); }
/// <summary>Returns the result of a componentwise subtraction operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise subtraction.</param>
/// <returns>float2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator - (float2 lhs, float rhs) { return new float2 (lhs.x - rhs, lhs.y - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise subtraction.</param>
/// <returns>float2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator - (float lhs, float2 rhs) { return new float2 (lhs - rhs.x, lhs - rhs.y); }
/// <summary>Returns the result of a componentwise division operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise division.</param>
/// <returns>float2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator / (float2 lhs, float2 rhs) { return new float2 (lhs.x / rhs.x, lhs.y / rhs.y); }
/// <summary>Returns the result of a componentwise division operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise division.</param>
/// <returns>float2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator / (float2 lhs, float rhs) { return new float2 (lhs.x / rhs, lhs.y / rhs); }
/// <summary>Returns the result of a componentwise division operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise division.</param>
/// <returns>float2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator / (float lhs, float2 rhs) { return new float2 (lhs / rhs.x, lhs / rhs.y); }
/// <summary>Returns the result of a componentwise modulus operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise modulus.</param>
/// <returns>float2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator % (float2 lhs, float2 rhs) { return new float2 (lhs.x % rhs.x, lhs.y % rhs.y); }
/// <summary>Returns the result of a componentwise modulus operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise modulus.</param>
/// <returns>float2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator % (float2 lhs, float rhs) { return new float2 (lhs.x % rhs, lhs.y % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise modulus.</param>
/// <returns>float2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator % (float lhs, float2 rhs) { return new float2 (lhs % rhs.x, lhs % rhs.y); }
/// <summary>Returns the result of a componentwise increment operation on a float2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>float2 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator ++ (float2 val) { return new float2 (++val.x, ++val.y); }
/// <summary>Returns the result of a componentwise decrement operation on a float2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>float2 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator -- (float2 val) { return new float2 (--val.x, --val.y); }
/// <summary>Returns the result of a componentwise less than operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise less than.</param>
/// <returns>bool2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator < (float2 lhs, float2 rhs) { return new bool2 (lhs.x < rhs.x, lhs.y < rhs.y); }
/// <summary>Returns the result of a componentwise less than operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise less than.</param>
/// <returns>bool2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator < (float2 lhs, float rhs) { return new bool2 (lhs.x < rhs, lhs.y < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise less than.</param>
/// <returns>bool2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator < (float lhs, float2 rhs) { return new bool2 (lhs < rhs.x, lhs < rhs.y); }
/// <summary>Returns the result of a componentwise less or equal operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise less or equal.</param>
/// <returns>bool2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator <= (float2 lhs, float2 rhs) { return new bool2 (lhs.x <= rhs.x, lhs.y <= rhs.y); }
/// <summary>Returns the result of a componentwise less or equal operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise less or equal.</param>
/// <returns>bool2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator <= (float2 lhs, float rhs) { return new bool2 (lhs.x <= rhs, lhs.y <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise less or equal.</param>
/// <returns>bool2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator <= (float lhs, float2 rhs) { return new bool2 (lhs <= rhs.x, lhs <= rhs.y); }
/// <summary>Returns the result of a componentwise greater than operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise greater than.</param>
/// <returns>bool2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator > (float2 lhs, float2 rhs) { return new bool2 (lhs.x > rhs.x, lhs.y > rhs.y); }
/// <summary>Returns the result of a componentwise greater than operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise greater than.</param>
/// <returns>bool2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator > (float2 lhs, float rhs) { return new bool2 (lhs.x > rhs, lhs.y > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise greater than.</param>
/// <returns>bool2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator > (float lhs, float2 rhs) { return new bool2 (lhs > rhs.x, lhs > rhs.y); }
/// <summary>Returns the result of a componentwise greater or equal operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise greater or equal.</param>
/// <returns>bool2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator >= (float2 lhs, float2 rhs) { return new bool2 (lhs.x >= rhs.x, lhs.y >= rhs.y); }
/// <summary>Returns the result of a componentwise greater or equal operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise greater or equal.</param>
/// <returns>bool2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator >= (float2 lhs, float rhs) { return new bool2 (lhs.x >= rhs, lhs.y >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise greater or equal.</param>
/// <returns>bool2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator >= (float lhs, float2 rhs) { return new bool2 (lhs >= rhs.x, lhs >= rhs.y); }
/// <summary>Returns the result of a componentwise unary minus operation on a float2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>float2 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator - (float2 val) { return new float2 (-val.x, -val.y); }
/// <summary>Returns the result of a componentwise unary plus operation on a float2 vector.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>float2 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 operator + (float2 val) { return new float2 (+val.x, +val.y); }
/// <summary>Returns the result of a componentwise equality operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (float2 lhs, float2 rhs) { return new bool2 (lhs.x == rhs.x, lhs.y == rhs.y); }
/// <summary>Returns the result of a componentwise equality operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (float2 lhs, float rhs) { return new bool2 (lhs.x == rhs, lhs.y == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise equality.</param>
/// <returns>bool2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator == (float lhs, float2 rhs) { return new bool2 (lhs == rhs.x, lhs == rhs.y); }
/// <summary>Returns the result of a componentwise not equal operation on two float2 vectors.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (float2 lhs, float2 rhs) { return new bool2 (lhs.x != rhs.x, lhs.y != rhs.y); }
/// <summary>Returns the result of a componentwise not equal operation on a float2 vector and a float value.</summary>
/// <param name="lhs">Left hand side float2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (float2 lhs, float rhs) { return new bool2 (lhs.x != rhs, lhs.y != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a float value and a float2 vector.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float2 to use to compute componentwise not equal.</param>
/// <returns>bool2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2 operator != (float lhs, float2 rhs) { return new bool2 (lhs != rhs.x, lhs != rhs.y); }
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 xxxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(x, x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 xxxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(x, x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 xxyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(x, x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 xxyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(x, x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 xyxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(x, y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 xyxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(x, y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 xyyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(x, y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 xyyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(x, y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 yxxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(y, x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 yxxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(y, x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 yxyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(y, x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 yxyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(y, x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 yyxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(y, y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 yyxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(y, y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 yyyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(y, y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float4 yyyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float4(y, y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float3 xxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float3(x, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float3 xxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float3(x, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float3 xyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float3(x, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float3 xyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float3(x, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float3 yxx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float3(y, x, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float3 yxy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float3(y, x, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float3 yyx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float3(y, y, x); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float3 yyy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float3(y, y, y); }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float2 xx
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float2(x, x); }
}
/// <summary>Swizzles the vector.</summary>
[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; }
}
/// <summary>Swizzles the vector.</summary>
[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; }
}
/// <summary>Swizzles the vector.</summary>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public float2 yy
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get { return new float2(y, y); }
}
/// <summary>Returns the float element at a specified index.</summary>
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; }
}
}
/// <summary>Returns true if the float2 is equal to a given float2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(float2 rhs) { return x == rhs.x && y == rhs.y; }
/// <summary>Returns true if the float2 is equal to a given float2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is float2 converted && Equals(converted); }
/// <summary>Returns a hash code for the float2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the float2.</summary>
/// <returns>String representation of the value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override string ToString()
{
return string.Format("float2({0}f, {1}f)", x, y);
}
/// <summary>Returns a string representation of the float2 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a float2 vector constructed from two float values.</summary>
/// <param name="x">The constructed vector's x component will be set to this value.</param>
/// <param name="y">The constructed vector's y component will be set to this value.</param>
/// <returns>float2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(float x, float y) { return new float2(x, y); }
/// <summary>Returns a float2 vector constructed from a float2 vector.</summary>
/// <param name="xy">The constructed vector's xy components will be set to this value.</param>
/// <returns>float2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(float2 xy) { return new float2(xy); }
/// <summary>Returns a float2 vector constructed from a single float value by assigning it to every component.</summary>
/// <param name="v">float to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(float v) { return new float2(v); }
/// <summary>Returns a float2 vector constructed from a single bool value by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(bool v) { return new float2(v); }
/// <summary>Return a float2 vector constructed from a bool2 vector by componentwise conversion.</summary>
/// <param name="v">bool2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(bool2 v) { return new float2(v); }
/// <summary>Returns a float2 vector constructed from a single int value by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(int v) { return new float2(v); }
/// <summary>Return a float2 vector constructed from a int2 vector by componentwise conversion.</summary>
/// <param name="v">int2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(int2 v) { return new float2(v); }
/// <summary>Returns a float2 vector constructed from a single uint value by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(uint v) { return new float2(v); }
/// <summary>Return a float2 vector constructed from a uint2 vector by componentwise conversion.</summary>
/// <param name="v">uint2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(uint2 v) { return new float2(v); }
/// <summary>Returns a float2 vector constructed from a single half value by converting it to float and assigning it to every component.</summary>
/// <param name="v">half to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(half v) { return new float2(v); }
/// <summary>Return a float2 vector constructed from a half2 vector by componentwise conversion.</summary>
/// <param name="v">half2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(half2 v) { return new float2(v); }
/// <summary>Returns a float2 vector constructed from a single double value by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(double v) { return new float2(v); }
/// <summary>Return a float2 vector constructed from a double2 vector by componentwise conversion.</summary>
/// <param name="v">double2 to convert to float2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 float2(double2 v) { return new float2(v); }
/// <summary>Returns a uint hash code of a float2 vector.</summary>
/// <param name="v">Vector value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint hash(float2 v)
{
return csum(asuint(v) * uint2(0xFA3A3285u, 0xAD55999Du)) + 0xDCDD5341u;
}
/// <summary>
/// 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.
/// </summary>
/// <param name="v">Vector value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint2 hashwide(float2 v)
{
return (asuint(v) * uint2(0x94DDD769u, 0xA1E92D39u)) + 0x4583C801u;
}
/// <summary>Returns the result of specified shuffling of the components from two float2 vectors into a float value.</summary>
/// <param name="left">float2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">float2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting float.</param>
/// <returns>float result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float shuffle(float2 left, float2 right, ShuffleComponent x)
{
return select_shuffle_component(left, right, x);
}
/// <summary>Returns the result of specified shuffling of the components from two float2 vectors into a float2 vector.</summary>
/// <param name="left">float2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">float2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting float2 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting float2 y component.</param>
/// <returns>float2 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2 shuffle(float2 left, float2 right, ShuffleComponent x, ShuffleComponent y)
{
return float2(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y));
}
/// <summary>Returns the result of specified shuffling of the components from two float2 vectors into a float3 vector.</summary>
/// <param name="left">float2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">float2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting float3 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting float3 y component.</param>
/// <param name="z">The ShuffleComponent to use when setting the resulting float3 z component.</param>
/// <returns>float3 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float3 shuffle(float2 left, float2 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z)
{
return float3(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y),
select_shuffle_component(left, right, z));
}
/// <summary>Returns the result of specified shuffling of the components from two float2 vectors into a float4 vector.</summary>
/// <param name="left">float2 to use as the left argument of the shuffle operation.</param>
/// <param name="right">float2 to use as the right argument of the shuffle operation.</param>
/// <param name="x">The ShuffleComponent to use when setting the resulting float4 x component.</param>
/// <param name="y">The ShuffleComponent to use when setting the resulting float4 y component.</param>
/// <param name="z">The ShuffleComponent to use when setting the resulting float4 z component.</param>
/// <param name="w">The ShuffleComponent to use when setting the resulting float4 w component.</param>
/// <returns>float4 result of the shuffle operation.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float4 shuffle(float2 left, float2 right, ShuffleComponent x, ShuffleComponent y, ShuffleComponent z, ShuffleComponent w)
{
return float4(
select_shuffle_component(left, right, x),
select_shuffle_component(left, right, y),
select_shuffle_component(left, right, z),
select_shuffle_component(left, right, 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);
}
}
}
}

View File

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

View File

@@ -0,0 +1,658 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2x2 matrix of floats.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct float2x2 : System.IEquatable<float2x2>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public float2 c0;
/// <summary>Column 1 of the matrix.</summary>
public float2 c1;
/// <summary>float2x2 identity transform.</summary>
public static readonly float2x2 identity = new float2x2(1.0f, 0.0f, 0.0f, 1.0f);
/// <summary>float2x2 zero value.</summary>
public static readonly float2x2 zero;
/// <summary>Constructs a float2x2 matrix from two float2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x2(float2 c0, float2 c1)
{
this.c0 = c0;
this.c1 = c1;
}
/// <summary>Constructs a float2x2 matrix from 4 float values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
[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);
}
/// <summary>Constructs a float2x2 matrix from a single float value by assigning it to every component.</summary>
/// <param name="v">float to convert to float2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x2(float v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a float2x2 matrix from a single bool value by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2x2</param>
[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);
}
/// <summary>Constructs a float2x2 matrix from a bool2x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x2 to convert to float2x2</param>
[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);
}
/// <summary>Constructs a float2x2 matrix from a single int value by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x2(int v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a float2x2 matrix from a int2x2 matrix by componentwise conversion.</summary>
/// <param name="v">int2x2 to convert to float2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x2(int2x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Constructs a float2x2 matrix from a single uint value by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x2(uint v)
{
this.c0 = v;
this.c1 = v;
}
/// <summary>Constructs a float2x2 matrix from a uint2x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x2 to convert to float2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x2(uint2x2 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
}
/// <summary>Constructs a float2x2 matrix from a single double value by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x2(double v)
{
this.c0 = (float2)v;
this.c1 = (float2)v;
}
/// <summary>Constructs a float2x2 matrix from a double2x2 matrix by componentwise conversion.</summary>
/// <param name="v">double2x2 to convert to float2x2</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x2(double2x2 v)
{
this.c0 = (float2)v.c0;
this.c1 = (float2)v.c1;
}
/// <summary>Implicitly converts a single float value to a float2x2 matrix by assigning it to every component.</summary>
/// <param name="v">float to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x2(float v) { return new float2x2(v); }
/// <summary>Explicitly converts a single bool value to a float2x2 matrix by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2x2(bool v) { return new float2x2(v); }
/// <summary>Explicitly converts a bool2x2 matrix to a float2x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x2 to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2x2(bool2x2 v) { return new float2x2(v); }
/// <summary>Implicitly converts a single int value to a float2x2 matrix by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x2(int v) { return new float2x2(v); }
/// <summary>Implicitly converts a int2x2 matrix to a float2x2 matrix by componentwise conversion.</summary>
/// <param name="v">int2x2 to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x2(int2x2 v) { return new float2x2(v); }
/// <summary>Implicitly converts a single uint value to a float2x2 matrix by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x2(uint v) { return new float2x2(v); }
/// <summary>Implicitly converts a uint2x2 matrix to a float2x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x2 to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x2(uint2x2 v) { return new float2x2(v); }
/// <summary>Explicitly converts a single double value to a float2x2 matrix by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2x2(double v) { return new float2x2(v); }
/// <summary>Explicitly converts a double2x2 matrix to a float2x2 matrix by componentwise conversion.</summary>
/// <param name="v">double2x2 to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2x2(double2x2 v) { return new float2x2(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise multiplication.</param>
/// <returns>float2x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator * (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1); }
/// <summary>Returns the result of a componentwise multiplication operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise multiplication.</param>
/// <returns>float2x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator * (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 * rhs, lhs.c1 * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise multiplication.</param>
/// <returns>float2x2 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator * (float lhs, float2x2 rhs) { return new float2x2 (lhs * rhs.c0, lhs * rhs.c1); }
/// <summary>Returns the result of a componentwise addition operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise addition.</param>
/// <returns>float2x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator + (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1); }
/// <summary>Returns the result of a componentwise addition operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise addition.</param>
/// <returns>float2x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator + (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 + rhs, lhs.c1 + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise addition.</param>
/// <returns>float2x2 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator + (float lhs, float2x2 rhs) { return new float2x2 (lhs + rhs.c0, lhs + rhs.c1); }
/// <summary>Returns the result of a componentwise subtraction operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise subtraction.</param>
/// <returns>float2x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator - (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1); }
/// <summary>Returns the result of a componentwise subtraction operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise subtraction.</param>
/// <returns>float2x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator - (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 - rhs, lhs.c1 - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise subtraction.</param>
/// <returns>float2x2 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator - (float lhs, float2x2 rhs) { return new float2x2 (lhs - rhs.c0, lhs - rhs.c1); }
/// <summary>Returns the result of a componentwise division operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise division.</param>
/// <returns>float2x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator / (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1); }
/// <summary>Returns the result of a componentwise division operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise division.</param>
/// <returns>float2x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator / (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 / rhs, lhs.c1 / rhs); }
/// <summary>Returns the result of a componentwise division operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise division.</param>
/// <returns>float2x2 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator / (float lhs, float2x2 rhs) { return new float2x2 (lhs / rhs.c0, lhs / rhs.c1); }
/// <summary>Returns the result of a componentwise modulus operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise modulus.</param>
/// <returns>float2x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator % (float2x2 lhs, float2x2 rhs) { return new float2x2 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1); }
/// <summary>Returns the result of a componentwise modulus operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise modulus.</param>
/// <returns>float2x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator % (float2x2 lhs, float rhs) { return new float2x2 (lhs.c0 % rhs, lhs.c1 % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise modulus.</param>
/// <returns>float2x2 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator % (float lhs, float2x2 rhs) { return new float2x2 (lhs % rhs.c0, lhs % rhs.c1); }
/// <summary>Returns the result of a componentwise increment operation on a float2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>float2x2 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator ++ (float2x2 val) { return new float2x2 (++val.c0, ++val.c1); }
/// <summary>Returns the result of a componentwise decrement operation on a float2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>float2x2 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator -- (float2x2 val) { return new float2x2 (--val.c0, --val.c1); }
/// <summary>Returns the result of a componentwise less than operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise less than.</param>
/// <returns>bool2x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator < (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1); }
/// <summary>Returns the result of a componentwise less than operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise less than.</param>
/// <returns>bool2x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator < (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 < rhs, lhs.c1 < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise less than.</param>
/// <returns>bool2x2 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator < (float lhs, float2x2 rhs) { return new bool2x2 (lhs < rhs.c0, lhs < rhs.c1); }
/// <summary>Returns the result of a componentwise less or equal operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise less or equal.</param>
/// <returns>bool2x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator <= (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1); }
/// <summary>Returns the result of a componentwise less or equal operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise less or equal.</param>
/// <returns>bool2x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator <= (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 <= rhs, lhs.c1 <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise less or equal.</param>
/// <returns>bool2x2 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator <= (float lhs, float2x2 rhs) { return new bool2x2 (lhs <= rhs.c0, lhs <= rhs.c1); }
/// <summary>Returns the result of a componentwise greater than operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise greater than.</param>
/// <returns>bool2x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator > (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1); }
/// <summary>Returns the result of a componentwise greater than operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise greater than.</param>
/// <returns>bool2x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator > (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 > rhs, lhs.c1 > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise greater than.</param>
/// <returns>bool2x2 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator > (float lhs, float2x2 rhs) { return new bool2x2 (lhs > rhs.c0, lhs > rhs.c1); }
/// <summary>Returns the result of a componentwise greater or equal operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator >= (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1); }
/// <summary>Returns the result of a componentwise greater or equal operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise greater or equal.</param>
/// <returns>bool2x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator >= (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 >= rhs, lhs.c1 >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x2 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator >= (float lhs, float2x2 rhs) { return new bool2x2 (lhs >= rhs.c0, lhs >= rhs.c1); }
/// <summary>Returns the result of a componentwise unary minus operation on a float2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>float2x2 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator - (float2x2 val) { return new float2x2 (-val.c0, -val.c1); }
/// <summary>Returns the result of a componentwise unary plus operation on a float2x2 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>float2x2 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 operator + (float2x2 val) { return new float2x2 (+val.c0, +val.c1); }
/// <summary>Returns the result of a componentwise equality operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1); }
/// <summary>Returns the result of a componentwise equality operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 == rhs, lhs.c1 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise equality.</param>
/// <returns>bool2x2 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator == (float lhs, float2x2 rhs) { return new bool2x2 (lhs == rhs.c0, lhs == rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on two float2x2 matrices.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (float2x2 lhs, float2x2 rhs) { return new bool2x2 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1); }
/// <summary>Returns the result of a componentwise not equal operation on a float2x2 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x2 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (float2x2 lhs, float rhs) { return new bool2x2 (lhs.c0 != rhs, lhs.c1 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a float value and a float2x2 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float2x2 to use to compute componentwise not equal.</param>
/// <returns>bool2x2 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x2 operator != (float lhs, float2x2 rhs) { return new bool2x2 (lhs != rhs.c0, lhs != rhs.c1); }
/// <summary>Returns the float2 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the float2x2 is equal to a given float2x2, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(float2x2 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1); }
/// <summary>Returns true if the float2x2 is equal to a given float2x2, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is float2x2 converted && Equals(converted); }
/// <summary>Returns a hash code for the float2x2.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the float2x2.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the float2x2 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a float2x2 matrix constructed from two float2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <returns>float2x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(float2 c0, float2 c1) { return new float2x2(c0, c1); }
/// <summary>Returns a float2x2 matrix constructed from from 4 float values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <returns>float2x2 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(float m00, float m01,
float m10, float m11)
{
return new float2x2(m00, m01,
m10, m11);
}
/// <summary>Returns a float2x2 matrix constructed from a single float value by assigning it to every component.</summary>
/// <param name="v">float to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(float v) { return new float2x2(v); }
/// <summary>Returns a float2x2 matrix constructed from a single bool value by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(bool v) { return new float2x2(v); }
/// <summary>Return a float2x2 matrix constructed from a bool2x2 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x2 to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(bool2x2 v) { return new float2x2(v); }
/// <summary>Returns a float2x2 matrix constructed from a single int value by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(int v) { return new float2x2(v); }
/// <summary>Return a float2x2 matrix constructed from a int2x2 matrix by componentwise conversion.</summary>
/// <param name="v">int2x2 to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(int2x2 v) { return new float2x2(v); }
/// <summary>Returns a float2x2 matrix constructed from a single uint value by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(uint v) { return new float2x2(v); }
/// <summary>Return a float2x2 matrix constructed from a uint2x2 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x2 to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(uint2x2 v) { return new float2x2(v); }
/// <summary>Returns a float2x2 matrix constructed from a single double value by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(double v) { return new float2x2(v); }
/// <summary>Return a float2x2 matrix constructed from a double2x2 matrix by componentwise conversion.</summary>
/// <param name="v">double2x2 to convert to float2x2</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 float2x2(double2x2 v) { return new float2x2(v); }
/// <summary>Return the float2x2 transpose of a float2x2 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x2 transpose(float2x2 v)
{
return float2x2(
v.c0.x, v.c0.y,
v.c1.x, v.c1.y);
}
/// <summary>Returns the float2x2 full inverse of a float2x2 matrix.</summary>
/// <param name="m">Matrix to invert.</param>
/// <returns>The inverted matrix.</returns>
[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);
}
/// <summary>Returns the determinant of a float2x2 matrix.</summary>
/// <param name="m">Matrix to use when computing determinant.</param>
/// <returns>The determinant of the matrix.</returns>
[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;
}
/// <summary>Returns a uint hash code of a float2x2 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint hash(float2x2 v)
{
return csum(asuint(v.c0) * uint2(0x9C9F0823u, 0x5A9CA13Bu) +
asuint(v.c1) * uint2(0xAFCDD5EFu, 0xA88D187Du)) + 0xCF6EBA1Du;
}
/// <summary>
/// Returns a uint2 vector hash code of a float2x2 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint2 hashwide(float2x2 v)
{
return (asuint(v.c0) * uint2(0x9D88E5A1u, 0xEADF0775u) +
asuint(v.c1) * uint2(0x747A9D7Bu, 0x4111F799u)) + 0xB5F05AF1u;
}
}
}

View File

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

View File

@@ -0,0 +1,647 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.CompilerServices;
using Unity.IL2CPP.CompilerServices;
#pragma warning disable 0660, 0661
namespace Unity.Mathematics
{
/// <summary>A 2x3 matrix of floats.</summary>
[System.Serializable]
[Il2CppEagerStaticClassConstruction]
public partial struct float2x3 : System.IEquatable<float2x3>, IFormattable
{
/// <summary>Column 0 of the matrix.</summary>
public float2 c0;
/// <summary>Column 1 of the matrix.</summary>
public float2 c1;
/// <summary>Column 2 of the matrix.</summary>
public float2 c2;
/// <summary>float2x3 zero value.</summary>
public static readonly float2x3 zero;
/// <summary>Constructs a float2x3 matrix from three float2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x3(float2 c0, float2 c1, float2 c2)
{
this.c0 = c0;
this.c1 = c1;
this.c2 = c2;
}
/// <summary>Constructs a float2x3 matrix from 6 float values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
[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);
}
/// <summary>Constructs a float2x3 matrix from a single float value by assigning it to every component.</summary>
/// <param name="v">float to convert to float2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x3(float v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a float2x3 matrix from a single bool value by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2x3</param>
[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);
}
/// <summary>Constructs a float2x3 matrix from a bool2x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x3 to convert to float2x3</param>
[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);
}
/// <summary>Constructs a float2x3 matrix from a single int value by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x3(int v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a float2x3 matrix from a int2x3 matrix by componentwise conversion.</summary>
/// <param name="v">int2x3 to convert to float2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x3(int2x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Constructs a float2x3 matrix from a single uint value by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x3(uint v)
{
this.c0 = v;
this.c1 = v;
this.c2 = v;
}
/// <summary>Constructs a float2x3 matrix from a uint2x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x3 to convert to float2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x3(uint2x3 v)
{
this.c0 = v.c0;
this.c1 = v.c1;
this.c2 = v.c2;
}
/// <summary>Constructs a float2x3 matrix from a single double value by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x3(double v)
{
this.c0 = (float2)v;
this.c1 = (float2)v;
this.c2 = (float2)v;
}
/// <summary>Constructs a float2x3 matrix from a double2x3 matrix by componentwise conversion.</summary>
/// <param name="v">double2x3 to convert to float2x3</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float2x3(double2x3 v)
{
this.c0 = (float2)v.c0;
this.c1 = (float2)v.c1;
this.c2 = (float2)v.c2;
}
/// <summary>Implicitly converts a single float value to a float2x3 matrix by assigning it to every component.</summary>
/// <param name="v">float to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x3(float v) { return new float2x3(v); }
/// <summary>Explicitly converts a single bool value to a float2x3 matrix by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2x3(bool v) { return new float2x3(v); }
/// <summary>Explicitly converts a bool2x3 matrix to a float2x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x3 to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2x3(bool2x3 v) { return new float2x3(v); }
/// <summary>Implicitly converts a single int value to a float2x3 matrix by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x3(int v) { return new float2x3(v); }
/// <summary>Implicitly converts a int2x3 matrix to a float2x3 matrix by componentwise conversion.</summary>
/// <param name="v">int2x3 to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x3(int2x3 v) { return new float2x3(v); }
/// <summary>Implicitly converts a single uint value to a float2x3 matrix by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x3(uint v) { return new float2x3(v); }
/// <summary>Implicitly converts a uint2x3 matrix to a float2x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x3 to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float2x3(uint2x3 v) { return new float2x3(v); }
/// <summary>Explicitly converts a single double value to a float2x3 matrix by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2x3(double v) { return new float2x3(v); }
/// <summary>Explicitly converts a double2x3 matrix to a float2x3 matrix by componentwise conversion.</summary>
/// <param name="v">double2x3 to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static explicit operator float2x3(double2x3 v) { return new float2x3(v); }
/// <summary>Returns the result of a componentwise multiplication operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise multiplication.</param>
/// <returns>float2x3 result of the componentwise multiplication.</returns>
[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); }
/// <summary>Returns the result of a componentwise multiplication operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise multiplication.</param>
/// <returns>float2x3 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator * (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); }
/// <summary>Returns the result of a componentwise multiplication operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise multiplication.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise multiplication.</param>
/// <returns>float2x3 result of the componentwise multiplication.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator * (float lhs, float2x3 rhs) { return new float2x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); }
/// <summary>Returns the result of a componentwise addition operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise addition.</param>
/// <returns>float2x3 result of the componentwise addition.</returns>
[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); }
/// <summary>Returns the result of a componentwise addition operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise addition.</param>
/// <returns>float2x3 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator + (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); }
/// <summary>Returns the result of a componentwise addition operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise addition.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise addition.</param>
/// <returns>float2x3 result of the componentwise addition.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator + (float lhs, float2x3 rhs) { return new float2x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); }
/// <summary>Returns the result of a componentwise subtraction operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise subtraction.</param>
/// <returns>float2x3 result of the componentwise subtraction.</returns>
[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); }
/// <summary>Returns the result of a componentwise subtraction operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise subtraction.</param>
/// <returns>float2x3 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator - (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); }
/// <summary>Returns the result of a componentwise subtraction operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise subtraction.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise subtraction.</param>
/// <returns>float2x3 result of the componentwise subtraction.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator - (float lhs, float2x3 rhs) { return new float2x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); }
/// <summary>Returns the result of a componentwise division operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise division.</param>
/// <returns>float2x3 result of the componentwise division.</returns>
[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); }
/// <summary>Returns the result of a componentwise division operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise division.</param>
/// <returns>float2x3 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator / (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); }
/// <summary>Returns the result of a componentwise division operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise division.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise division.</param>
/// <returns>float2x3 result of the componentwise division.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator / (float lhs, float2x3 rhs) { return new float2x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); }
/// <summary>Returns the result of a componentwise modulus operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise modulus.</param>
/// <returns>float2x3 result of the componentwise modulus.</returns>
[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); }
/// <summary>Returns the result of a componentwise modulus operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise modulus.</param>
/// <returns>float2x3 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator % (float2x3 lhs, float rhs) { return new float2x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); }
/// <summary>Returns the result of a componentwise modulus operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise modulus.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise modulus.</param>
/// <returns>float2x3 result of the componentwise modulus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator % (float lhs, float2x3 rhs) { return new float2x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); }
/// <summary>Returns the result of a componentwise increment operation on a float2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise increment.</param>
/// <returns>float2x3 result of the componentwise increment.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator ++ (float2x3 val) { return new float2x3 (++val.c0, ++val.c1, ++val.c2); }
/// <summary>Returns the result of a componentwise decrement operation on a float2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise decrement.</param>
/// <returns>float2x3 result of the componentwise decrement.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator -- (float2x3 val) { return new float2x3 (--val.c0, --val.c1, --val.c2); }
/// <summary>Returns the result of a componentwise less than operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise less than.</param>
/// <returns>bool2x3 result of the componentwise less than.</returns>
[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); }
/// <summary>Returns the result of a componentwise less than operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise less than.</param>
/// <returns>bool2x3 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator < (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); }
/// <summary>Returns the result of a componentwise less than operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise less than.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise less than.</param>
/// <returns>bool2x3 result of the componentwise less than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator < (float lhs, float2x3 rhs) { return new bool2x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); }
/// <summary>Returns the result of a componentwise less or equal operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise less or equal.</param>
/// <returns>bool2x3 result of the componentwise less or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise less or equal operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise less or equal.</param>
/// <returns>bool2x3 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator <= (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); }
/// <summary>Returns the result of a componentwise less or equal operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise less or equal.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise less or equal.</param>
/// <returns>bool2x3 result of the componentwise less or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator <= (float lhs, float2x3 rhs) { return new bool2x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); }
/// <summary>Returns the result of a componentwise greater than operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise greater than.</param>
/// <returns>bool2x3 result of the componentwise greater than.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater than operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise greater than.</param>
/// <returns>bool2x3 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator > (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); }
/// <summary>Returns the result of a componentwise greater than operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise greater than.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise greater than.</param>
/// <returns>bool2x3 result of the componentwise greater than.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator > (float lhs, float2x3 rhs) { return new bool2x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); }
/// <summary>Returns the result of a componentwise greater or equal operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x3 result of the componentwise greater or equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise greater or equal operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise greater or equal.</param>
/// <returns>bool2x3 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator >= (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); }
/// <summary>Returns the result of a componentwise greater or equal operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise greater or equal.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise greater or equal.</param>
/// <returns>bool2x3 result of the componentwise greater or equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator >= (float lhs, float2x3 rhs) { return new bool2x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); }
/// <summary>Returns the result of a componentwise unary minus operation on a float2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary minus.</param>
/// <returns>float2x3 result of the componentwise unary minus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator - (float2x3 val) { return new float2x3 (-val.c0, -val.c1, -val.c2); }
/// <summary>Returns the result of a componentwise unary plus operation on a float2x3 matrix.</summary>
/// <param name="val">Value to use when computing the componentwise unary plus.</param>
/// <returns>float2x3 result of the componentwise unary plus.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 operator + (float2x3 val) { return new float2x3 (+val.c0, +val.c1, +val.c2); }
/// <summary>Returns the result of a componentwise equality operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[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); }
/// <summary>Returns the result of a componentwise equality operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator == (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
/// <summary>Returns the result of a componentwise equality operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise equality.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise equality.</param>
/// <returns>bool2x3 result of the componentwise equality.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator == (float lhs, float2x3 rhs) { return new bool2x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
/// <summary>Returns the result of a componentwise not equal operation on two float2x3 matrices.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[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); }
/// <summary>Returns the result of a componentwise not equal operation on a float2x3 matrix and a float value.</summary>
/// <param name="lhs">Left hand side float2x3 to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator != (float2x3 lhs, float rhs) { return new bool2x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
/// <summary>Returns the result of a componentwise not equal operation on a float value and a float2x3 matrix.</summary>
/// <param name="lhs">Left hand side float to use to compute componentwise not equal.</param>
/// <param name="rhs">Right hand side float2x3 to use to compute componentwise not equal.</param>
/// <returns>bool2x3 result of the componentwise not equal.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool2x3 operator != (float lhs, float2x3 rhs) { return new bool2x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
/// <summary>Returns the float2 element at a specified index.</summary>
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]; }
}
}
/// <summary>Returns true if the float2x3 is equal to a given float2x3, false otherwise.</summary>
/// <param name="rhs">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool Equals(float2x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
/// <summary>Returns true if the float2x3 is equal to a given float2x3, false otherwise.</summary>
/// <param name="o">Right hand side argument to compare equality with.</param>
/// <returns>The result of the equality comparison.</returns>
public override bool Equals(object o) { return o is float2x3 converted && Equals(converted); }
/// <summary>Returns a hash code for the float2x3.</summary>
/// <returns>The computed hash code.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public override int GetHashCode() { return (int)math.hash(this); }
/// <summary>Returns a string representation of the float2x3.</summary>
/// <returns>String representation of the value.</returns>
[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);
}
/// <summary>Returns a string representation of the float2x3 using a specified format and culture-specific format information.</summary>
/// <param name="format">Format string to use during string formatting.</param>
/// <param name="formatProvider">Format provider to use during string formatting.</param>
/// <returns>String representation of the value.</returns>
[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
{
/// <summary>Returns a float2x3 matrix constructed from three float2 vectors.</summary>
/// <param name="c0">The matrix column c0 will be set to this value.</param>
/// <param name="c1">The matrix column c1 will be set to this value.</param>
/// <param name="c2">The matrix column c2 will be set to this value.</param>
/// <returns>float2x3 constructed from arguments.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(float2 c0, float2 c1, float2 c2) { return new float2x3(c0, c1, c2); }
/// <summary>Returns a float2x3 matrix constructed from from 6 float values given in row-major order.</summary>
/// <param name="m00">The matrix at row 0, column 0 will be set to this value.</param>
/// <param name="m01">The matrix at row 0, column 1 will be set to this value.</param>
/// <param name="m02">The matrix at row 0, column 2 will be set to this value.</param>
/// <param name="m10">The matrix at row 1, column 0 will be set to this value.</param>
/// <param name="m11">The matrix at row 1, column 1 will be set to this value.</param>
/// <param name="m12">The matrix at row 1, column 2 will be set to this value.</param>
/// <returns>float2x3 constructed from arguments.</returns>
[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);
}
/// <summary>Returns a float2x3 matrix constructed from a single float value by assigning it to every component.</summary>
/// <param name="v">float to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(float v) { return new float2x3(v); }
/// <summary>Returns a float2x3 matrix constructed from a single bool value by converting it to float and assigning it to every component.</summary>
/// <param name="v">bool to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(bool v) { return new float2x3(v); }
/// <summary>Return a float2x3 matrix constructed from a bool2x3 matrix by componentwise conversion.</summary>
/// <param name="v">bool2x3 to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(bool2x3 v) { return new float2x3(v); }
/// <summary>Returns a float2x3 matrix constructed from a single int value by converting it to float and assigning it to every component.</summary>
/// <param name="v">int to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(int v) { return new float2x3(v); }
/// <summary>Return a float2x3 matrix constructed from a int2x3 matrix by componentwise conversion.</summary>
/// <param name="v">int2x3 to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(int2x3 v) { return new float2x3(v); }
/// <summary>Returns a float2x3 matrix constructed from a single uint value by converting it to float and assigning it to every component.</summary>
/// <param name="v">uint to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(uint v) { return new float2x3(v); }
/// <summary>Return a float2x3 matrix constructed from a uint2x3 matrix by componentwise conversion.</summary>
/// <param name="v">uint2x3 to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(uint2x3 v) { return new float2x3(v); }
/// <summary>Returns a float2x3 matrix constructed from a single double value by converting it to float and assigning it to every component.</summary>
/// <param name="v">double to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(double v) { return new float2x3(v); }
/// <summary>Return a float2x3 matrix constructed from a double2x3 matrix by componentwise conversion.</summary>
/// <param name="v">double2x3 to convert to float2x3</param>
/// <returns>Converted value.</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float2x3 float2x3(double2x3 v) { return new float2x3(v); }
/// <summary>Return the float3x2 transpose of a float2x3 matrix.</summary>
/// <param name="v">Value to transpose.</param>
/// <returns>Transposed value.</returns>
[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);
}
/// <summary>Returns a uint hash code of a float2x3 matrix.</summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint hash of the argument.</returns>
[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;
}
/// <summary>
/// Returns a uint2 vector hash code of a float2x3 matrix.
/// 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.
/// </summary>
/// <param name="v">Matrix value to hash.</param>
/// <returns>uint2 hash of the argument.</returns>
[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;
}
}
}

Some files were not shown because too many files have changed in this diff Show More