diff --git a/Source/Engine/Core/Math/Half.cpp b/Source/Engine/Core/Math/Half.cpp
index 40ab1144c..b17721cd6 100644
--- a/Source/Engine/Core/Math/Half.cpp
+++ b/Source/Engine/Core/Math/Half.cpp
@@ -12,9 +12,9 @@ static_assert(sizeof(Half2) == 4, "Invalid Half2 type size.");
static_assert(sizeof(Half3) == 6, "Invalid Half3 type size.");
static_assert(sizeof(Half4) == 8, "Invalid Half4 type size.");
-Half2 Half2::Zero(0, 0);
-Half3 Half3::Zero(0, 0, 0);
-Half4 Half4::Zero(0, 0, 0, 0);
+Half2 Half2::Zero(0.0f, 0.0f);
+Half3 Half3::Zero(0.0f, 0.0f, 0.0f);
+Half4 Half4::Zero(0.0f, 0.0f, 0.0f, 0.0f);
Half2::Half2(const Vector2& v)
{
diff --git a/Source/Engine/Core/Math/Half.h b/Source/Engine/Core/Math/Half.h
index dcdd6beee..f6fa3d4c5 100644
--- a/Source/Engine/Core/Math/Half.h
+++ b/Source/Engine/Core/Math/Half.h
@@ -45,7 +45,6 @@ class FLAXENGINE_API Float16Compressor
static const int32 minD = minC - subC - 1;
public:
-
static Half Compress(const float value)
{
#if USE_SSE_HALF_CONVERSION
@@ -102,14 +101,12 @@ public:
struct FLAXENGINE_API Half2
{
public:
-
///
/// Zero vector
///
static Half2 Zero;
public:
-
///
/// Gets or sets the X component of the vector.
///
@@ -121,7 +118,6 @@ public:
Half Y;
public:
-
///
/// Default constructor
///
@@ -129,6 +125,17 @@ public:
{
}
+ ///
+ /// Init
+ ///
+ /// X component
+ /// Y component
+ Half2(Half x, Half y)
+ : X(x)
+ , Y(y)
+ {
+ }
+
///
/// Init
///
@@ -147,7 +154,6 @@ public:
Half2(const Vector2& v);
public:
-
///
/// Convert to Vector2
///
@@ -161,14 +167,12 @@ public:
struct FLAXENGINE_API Half3
{
public:
-
///
/// Zero vector
///
static Half3 Zero;
public:
-
///
/// Gets or sets the X component of the vector.
///
@@ -185,11 +189,17 @@ public:
Half Z;
public:
-
Half3()
{
}
+ Half3(Half x, Half y, Half z)
+ : X(x)
+ , Y(y)
+ , Z(z)
+ {
+ }
+
Half3(const float x, const float y, const float z)
{
X = Float16Compressor::Compress(x);
@@ -200,7 +210,6 @@ public:
Half3(const Vector3& v);
public:
-
Vector3 ToVector3() const;
};
@@ -210,14 +219,12 @@ public:
struct FLAXENGINE_API Half4
{
public:
-
///
/// Zero vector
///
static Half4 Zero;
public:
-
///
/// Gets or sets the X component of the vector.
///
@@ -239,11 +246,18 @@ public:
Half W;
public:
-
Half4()
{
}
+ Half4(Half x, Half y, Half z, Half w)
+ : X(x)
+ , Y(y)
+ , Z(z)
+ , W(w)
+ {
+ }
+
Half4(const float x, const float y, const float z)
{
X = Float16Compressor::Compress(x);
@@ -265,7 +279,6 @@ public:
explicit Half4(const Rectangle& rect);
public:
-
Vector2 ToVector2() const;
Vector3 ToVector3() const;
Vector4 ToVector4() const;
diff --git a/Source/Engine/Graphics/Models/Mesh.cpp b/Source/Engine/Graphics/Models/Mesh.cpp
index e7078543f..01a61d5eb 100644
--- a/Source/Engine/Graphics/Models/Mesh.cpp
+++ b/Source/Engine/Graphics/Models/Mesh.cpp
@@ -89,12 +89,12 @@ namespace
}
else
{
- auto v = Half2(0, 0);
+ auto v = Half2::Zero;
for (uint32 i = 0; i < vertexCount; i++)
vb1[i].TexCoord = v;
}
{
- auto v = Half2(0, 0);
+ auto v = Half2::Zero;
for (uint32 i = 0; i < vertexCount; i++)
vb1[i].LightmapUVs = v;
}
diff --git a/Source/Engine/Graphics/Models/SkinnedMesh.cpp b/Source/Engine/Graphics/Models/SkinnedMesh.cpp
index 67f3683bd..062f7eaea 100644
--- a/Source/Engine/Graphics/Models/SkinnedMesh.cpp
+++ b/Source/Engine/Graphics/Models/SkinnedMesh.cpp
@@ -404,7 +404,7 @@ bool UpdateMesh(SkinnedMesh* mesh, MonoArray* verticesObj, MonoArray* trianglesO
}
else
{
- auto v = Half2(0, 0);
+ auto v = Half2::Zero;
for (uint32 i = 0; i < vertexCount; i++)
vb[i].TexCoord = v;
}