Fix missing casting from scalar Variant types to Enum

This commit is contained in:
Wojtek Figat
2024-10-28 14:32:19 +01:00
parent 082d97248d
commit f88eeeb313
2 changed files with 36 additions and 0 deletions

View File

@@ -3174,6 +3174,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3196,6 +3197,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3218,6 +3220,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3240,6 +3243,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3262,6 +3266,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3284,6 +3289,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3306,6 +3312,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3328,6 +3335,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3350,6 +3358,7 @@ bool Variant::CanCast(const Variant& v, const VariantType& to)
case VariantType::Double2:
case VariantType::Double3:
case VariantType::Double4:
case VariantType::Enum:
return true;
default:
return false;
@@ -3482,6 +3491,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Double3(v.AsBool ? 1.0 : 0.0));
case VariantType::Double4:
return Variant(Double4(v.AsBool ? 1.0 : 0.0));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -3518,6 +3529,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Double3((double)v.AsInt16));
case VariantType::Double4:
return Variant(Double4((double)v.AsInt16));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -3548,6 +3561,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Float4((float)v.AsInt));
case VariantType::Color:
return Variant(Color((float)v.AsInt));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -3584,6 +3599,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Double3((double)v.AsUint16));
case VariantType::Double4:
return Variant(Double4((double)v.AsUint16));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -3620,6 +3637,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Double3((double)v.AsUint));
case VariantType::Double4:
return Variant(Double4((double)v.AsUint));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -3656,6 +3675,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Double3((double)v.AsInt64));
case VariantType::Double4:
return Variant(Double4((double)v.AsInt64));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -3692,6 +3713,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Double3((double)v.AsInt));
case VariantType::Double4:
return Variant(Double4((double)v.AsInt));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -3728,6 +3751,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Double3(v.AsFloat));
case VariantType::Double4:
return Variant(Double4(v.AsFloat));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -3764,6 +3789,8 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
return Variant(Double3(v.AsDouble));
case VariantType::Double4:
return Variant(Double4(v.AsDouble));
case VariantType::Enum:
return Enum(to, (int64)v.AsBool);
default: ;
}
break;
@@ -4131,6 +4158,14 @@ void Variant::FreeStructure()
Allocator::Free(AsBlob.Data);
}
Variant Variant::Enum(const VariantType& type, const uint64 value)
{
Variant v;
v.SetType(type);
v.AsUint64 = value;
return MoveTemp(v);
}
uint32 GetHash(const Variant& key)
{
switch (key.Type.Type)

View File

@@ -421,6 +421,7 @@ private:
void AllocStructure();
void CopyStructure(void* src);
void FreeStructure();
static Variant Enum(const VariantType& type, const uint64 value);
};
namespace Math