123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841 |
- using System;
- using System.Diagnostics.CodeAnalysis;
- using System.Runtime.CompilerServices;
- using Godot.NativeInterop;
- namespace Godot;
- #nullable enable
- [SuppressMessage("ReSharper", "RedundantNameQualifier")]
- public partial struct Variant : IDisposable
- {
- internal godot_variant.movable NativeVar;
- private object? _obj;
- private Disposer? _disposer;
- private sealed class Disposer : IDisposable
- {
- private godot_variant.movable _native;
- private WeakReference<IDisposable>? _weakReferenceToSelf;
- public Disposer(in godot_variant.movable nativeVar)
- {
- _native = nativeVar;
- _weakReferenceToSelf = DisposablesTracker.RegisterDisposable(this);
- }
- ~Disposer()
- {
- Dispose(false);
- }
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- private void Dispose(bool disposing)
- {
- _native.DangerousSelfRef.Dispose();
- if (_weakReferenceToSelf != null)
- {
- DisposablesTracker.UnregisterDisposable(_weakReferenceToSelf);
- }
- }
- }
- private Variant(in godot_variant nativeVar)
- {
- NativeVar = (godot_variant.movable)nativeVar;
- _obj = null;
- switch (nativeVar.Type)
- {
- case Type.Nil:
- case Type.Bool:
- case Type.Int:
- case Type.Float:
- case Type.Vector2:
- case Type.Vector2i:
- case Type.Rect2:
- case Type.Rect2i:
- case Type.Vector3:
- case Type.Vector3i:
- case Type.Plane:
- case Type.Quaternion:
- case Type.Color:
- case Type.Rid:
- _disposer = null;
- break;
- default:
- {
- _disposer = new Disposer(NativeVar);
- break;
- }
- }
- }
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- // Explicit name to make it very clear
- public static Variant CreateTakingOwnershipOfDisposableValue(in godot_variant nativeValueToOwn) =>
- new(nativeValueToOwn);
- // Explicit name to make it very clear
- public static Variant CreateCopyingBorrowed(in godot_variant nativeValueToOwn) =>
- new(NativeFuncs.godotsharp_variant_new_copy(nativeValueToOwn));
- /// <summary>
- /// Constructs a new <see cref="Godot.NativeInterop.godot_variant"/> from this instance.
- /// The caller is responsible of disposing the new instance to avoid memory leaks.
- /// </summary>
- public godot_variant CopyNativeVariant() =>
- NativeFuncs.godotsharp_variant_new_copy((godot_variant)NativeVar);
- public void Dispose()
- {
- _disposer?.Dispose();
- NativeVar = default;
- _obj = null;
- }
- // TODO: Consider renaming Variant.Type to VariantType and this property to Type. VariantType would also avoid ambiguity with System.Type.
- public Type VariantType => NativeVar.DangerousSelfRef.Type;
- public override string ToString() => AsString();
- public object? Obj
- {
- get
- {
- if (_obj == null)
- _obj = Marshaling.ConvertVariantToManagedObject((godot_variant)NativeVar);
- return _obj;
- }
- }
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public bool AsBool() =>
- VariantUtils.ConvertToBool((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public char AsChar() =>
- (char)VariantUtils.ConvertToUInt16((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public sbyte AsSByte() =>
- VariantUtils.ConvertToInt8((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public short AsInt16() =>
- VariantUtils.ConvertToInt16((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public int AsInt32() =>
- VariantUtils.ConvertToInt32((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public long AsInt64() =>
- VariantUtils.ConvertToInt64((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public byte AsByte() =>
- VariantUtils.ConvertToUInt8((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public ushort AsUInt16() =>
- VariantUtils.ConvertToUInt16((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public uint AsUInt32() =>
- VariantUtils.ConvertToUInt32((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public ulong AsUInt64() =>
- VariantUtils.ConvertToUInt64((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public float AsSingle() =>
- VariantUtils.ConvertToFloat32((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public double AsDouble() =>
- VariantUtils.ConvertToFloat64((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public string AsString() =>
- VariantUtils.ConvertToStringObject((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Vector2 AsVector2() =>
- VariantUtils.ConvertToVector2((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Vector2i AsVector2i() =>
- VariantUtils.ConvertToVector2i((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rect2 AsRect2() =>
- VariantUtils.ConvertToRect2((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Rect2i AsRect2i() =>
- VariantUtils.ConvertToRect2i((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Transform2D AsTransform2D() =>
- VariantUtils.ConvertToTransform2D((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Vector3 AsVector3() =>
- VariantUtils.ConvertToVector3((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Vector3i AsVector3i() =>
- VariantUtils.ConvertToVector3i((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Basis AsBasis() =>
- VariantUtils.ConvertToBasis((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Quaternion AsQuaternion() =>
- VariantUtils.ConvertToQuaternion((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Transform3D AsTransform3D() =>
- VariantUtils.ConvertToTransform3D((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Vector4 AsVector4() =>
- VariantUtils.ConvertToVector4((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Vector4i AsVector4i() =>
- VariantUtils.ConvertToVector4i((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Projection AsProjection() =>
- VariantUtils.ConvertToProjection((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public AABB AsAABB() =>
- VariantUtils.ConvertToAABB((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Color AsColor() =>
- VariantUtils.ConvertToColor((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Plane AsPlane() =>
- VariantUtils.ConvertToPlane((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Callable AsCallable() =>
- VariantUtils.ConvertToCallableManaged((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public SignalInfo AsSignalInfo() =>
- VariantUtils.ConvertToSignalInfo((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public byte[] AsByteArray() =>
- VariantUtils.ConvertAsPackedByteArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public int[] AsInt32Array() =>
- VariantUtils.ConvertAsPackedInt32ArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public long[] AsInt64Array() =>
- VariantUtils.ConvertAsPackedInt64ArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public float[] AsFloat32Array() =>
- VariantUtils.ConvertAsPackedFloat32ArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public double[] AsFloat64Array() =>
- VariantUtils.ConvertAsPackedFloat64ArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public string[] AsStringArray() =>
- VariantUtils.ConvertAsPackedStringArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Vector2[] AsVector2Array() =>
- VariantUtils.ConvertAsPackedVector2ArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Vector3[] AsVector3Array() =>
- VariantUtils.ConvertAsPackedVector3ArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Color[] AsColorArray() =>
- VariantUtils.ConvertAsPackedColorArrayToSystemArray((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public T[] AsGodotObjectArray<T>()
- where T : Godot.Object =>
- VariantUtils.ConvertToSystemArrayOfGodotObject<T>((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Collections.Dictionary<TKey, TValue> AsGodotDictionary<TKey, TValue>() =>
- VariantUtils.ConvertToDictionaryObject<TKey, TValue>((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Collections.Array<T> AsGodotArray<T>() =>
- VariantUtils.ConvertToArrayObject<T>((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public StringName[] AsSystemArrayOfStringName() =>
- VariantUtils.ConvertToSystemArrayOfStringName((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public NodePath[] AsSystemArrayOfNodePath() =>
- VariantUtils.ConvertToSystemArrayOfNodePath((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public RID[] AsSystemArrayOfRID() =>
- VariantUtils.ConvertToSystemArrayOfRID((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Godot.Object AsGodotObject() =>
- VariantUtils.ConvertToGodotObject((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public StringName AsStringName() =>
- VariantUtils.ConvertToStringNameObject((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public NodePath AsNodePath() =>
- VariantUtils.ConvertToNodePathObject((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public RID AsRID() =>
- VariantUtils.ConvertToRID((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Collections.Dictionary AsGodotDictionary() =>
- VariantUtils.ConvertToDictionaryObject((godot_variant)NativeVar);
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public Collections.Array AsGodotArray() =>
- VariantUtils.ConvertToArrayObject((godot_variant)NativeVar);
- // Explicit conversion operators to supported types
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator bool(Variant from) => from.AsBool();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator char(Variant from) => from.AsChar();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator sbyte(Variant from) => from.AsSByte();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator short(Variant from) => from.AsInt16();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator int(Variant from) => from.AsInt32();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator long(Variant from) => from.AsInt64();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator byte(Variant from) => from.AsByte();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator ushort(Variant from) => from.AsUInt16();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator uint(Variant from) => from.AsUInt32();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator ulong(Variant from) => from.AsUInt64();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator float(Variant from) => from.AsSingle();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator double(Variant from) => from.AsDouble();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator string(Variant from) => from.AsString();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Vector2(Variant from) => from.AsVector2();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Vector2i(Variant from) => from.AsVector2i();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Rect2(Variant from) => from.AsRect2();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Rect2i(Variant from) => from.AsRect2i();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Transform2D(Variant from) => from.AsTransform2D();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Vector3(Variant from) => from.AsVector3();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Vector3i(Variant from) => from.AsVector3i();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Basis(Variant from) => from.AsBasis();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Quaternion(Variant from) => from.AsQuaternion();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Transform3D(Variant from) => from.AsTransform3D();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Vector4(Variant from) => from.AsVector4();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Vector4i(Variant from) => from.AsVector4i();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Projection(Variant from) => from.AsProjection();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator AABB(Variant from) => from.AsAABB();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Color(Variant from) => from.AsColor();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Plane(Variant from) => from.AsPlane();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Callable(Variant from) => from.AsCallable();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator SignalInfo(Variant from) => from.AsSignalInfo();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator byte[](Variant from) => from.AsByteArray();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator int[](Variant from) => from.AsInt32Array();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator long[](Variant from) => from.AsInt64Array();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator float[](Variant from) => from.AsFloat32Array();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator double[](Variant from) => from.AsFloat64Array();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator string[](Variant from) => from.AsStringArray();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Vector2[](Variant from) => from.AsVector2Array();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Vector3[](Variant from) => from.AsVector3Array();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Color[](Variant from) => from.AsColorArray();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator StringName[](Variant from) => from.AsSystemArrayOfStringName();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator NodePath[](Variant from) => from.AsSystemArrayOfNodePath();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator RID[](Variant from) => from.AsSystemArrayOfRID();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Godot.Object(Variant from) => from.AsGodotObject();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator StringName(Variant from) => from.AsStringName();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator NodePath(Variant from) => from.AsNodePath();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator RID(Variant from) => from.AsRID();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Collections.Dictionary(Variant from) => from.AsGodotDictionary();
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static explicit operator Collections.Array(Variant from) => from.AsGodotArray();
- // While we provide implicit conversion operators, normal methods are still needed for
- // casts that are not done implicitly (e.g.: raw array to Span, enum to integer, etc).
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(bool from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(char from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(sbyte from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(short from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(int from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(long from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(byte from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(ushort from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(uint from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(ulong from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(float from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(double from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(string from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Vector2 from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Vector2i from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Rect2 from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Rect2i from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Transform2D from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Vector3 from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Vector3i from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Basis from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Quaternion from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Transform3D from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Vector4 from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Vector4i from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Projection from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(AABB from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Color from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Plane from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Callable from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(SignalInfo from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<byte> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<int> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<long> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<float> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<double> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<string> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<Vector2> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<Vector3> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<Color> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Godot.Object[] from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom<TKey, TValue>(Collections.Dictionary<TKey, TValue> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromDictionary(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom<T>(Collections.Array<T> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromArray(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<StringName> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<NodePath> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Span<RID> from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Godot.Object from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(StringName from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(NodePath from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(RID from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Collections.Dictionary from) => from;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static Variant CreateFrom(Collections.Array from) => from;
- // Implicit conversion operators
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(bool from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromBool(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(char from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(sbyte from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(short from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(int from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(long from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(byte from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(ushort from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(uint from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(ulong from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromInt(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(float from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromFloat(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(double from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromFloat(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(string from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromString(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Vector2 from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromVector2(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Vector2i from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromVector2i(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Rect2 from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromRect2(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Rect2i from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromRect2i(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Transform2D from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromTransform2D(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Vector3 from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromVector3(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Vector3i from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromVector3i(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Basis from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromBasis(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Quaternion from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromQuaternion(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Transform3D from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromTransform3D(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Vector4 from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromVector4(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Vector4i from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromVector4i(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Projection from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromProjection(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(AABB from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromAABB(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Color from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromColor(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Plane from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPlane(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Callable from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromCallable(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(SignalInfo from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromSignalInfo(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<byte> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedByteArray(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<int> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedInt32Array(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<long> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedInt64Array(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<float> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedFloat32Array(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<double> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedFloat64Array(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<string> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedStringArray(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<Vector2> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedVector2Array(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<Vector3> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedVector3Array(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<Color> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromPackedColorArray(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Godot.Object[] from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromSystemArrayOfGodotObject(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<StringName> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromSystemArrayOfStringName(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<NodePath> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromSystemArrayOfNodePath(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Span<RID> from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromSystemArrayOfRID(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Godot.Object from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromGodotObject(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(StringName from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromStringName(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(NodePath from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromNodePath(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(RID from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromRID(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Collections.Dictionary from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromDictionary(from));
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static implicit operator Variant(Collections.Array from) =>
- CreateTakingOwnershipOfDisposableValue(VariantUtils.CreateFromArray(from));
- }
|