chore: improve api for vector packing for models

This commit is contained in:
Jan
2024-08-10 13:54:46 +02:00
parent 1f5050befa
commit f653530714
17 changed files with 201 additions and 239 deletions

View File

@ -4,32 +4,32 @@
using namespace IW3;
PackedTexCoords Common::Vec2PackTexCoords(const vec2_t* in)
PackedTexCoords Common::Vec2PackTexCoords(const float (&in)[2])
{
return PackedTexCoords{Pack32::Vec2PackTexCoords(reinterpret_cast<const float*>(in))};
return PackedTexCoords{pack32::Vec2PackTexCoordsVU(in)};
}
PackedUnitVec Common::Vec3PackUnitVec(const vec3_t* in)
PackedUnitVec Common::Vec3PackUnitVec(const float (&in)[3])
{
return PackedUnitVec{Pack32::Vec3PackUnitVec(reinterpret_cast<const float*>(in))};
return PackedUnitVec{pack32::Vec3PackUnitVecScaleBased(in)};
}
GfxColor Common::Vec4PackGfxColor(const vec4_t* in)
GfxColor Common::Vec4PackGfxColor(const float (&in)[4])
{
return GfxColor{Pack32::Vec4PackGfxColor(reinterpret_cast<const float*>(in))};
return GfxColor{pack32::Vec4PackGfxColor(in)};
}
void Common::Vec2UnpackTexCoords(const PackedTexCoords& in, vec2_t* out)
void Common::Vec2UnpackTexCoords(const PackedTexCoords& in, float (&out)[2])
{
Pack32::Vec2UnpackTexCoordsVU(in.packed, reinterpret_cast<float*>(out));
pack32::Vec2UnpackTexCoordsVU(in.packed, out);
}
void Common::Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out)
void Common::Vec3UnpackUnitVec(const PackedUnitVec& in, float (&out)[3])
{
Pack32::Vec3UnpackUnitVecScaleBased(in.packed, reinterpret_cast<float*>(out));
pack32::Vec3UnpackUnitVecScaleBased(in.packed, out);
}
void Common::Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out)
void Common::Vec4UnpackGfxColor(const GfxColor& in, float (&out)[4])
{
Pack32::Vec4UnpackGfxColor(in.packed, reinterpret_cast<float*>(out));
pack32::Vec4UnpackGfxColor(in.packed, out);
}

View File

@ -21,11 +21,11 @@ namespace IW3
return result;
}
static PackedTexCoords Vec2PackTexCoords(const vec2_t* in);
static PackedUnitVec Vec3PackUnitVec(const vec3_t* in);
static GfxColor Vec4PackGfxColor(const vec4_t* in);
static void Vec2UnpackTexCoords(const PackedTexCoords& in, vec2_t* out);
static void Vec3UnpackUnitVec(const PackedUnitVec& in, vec3_t* out);
static void Vec4UnpackGfxColor(const GfxColor& in, vec4_t* out);
static PackedTexCoords Vec2PackTexCoords(const float (&in)[2]);
static PackedUnitVec Vec3PackUnitVec(const float (&in)[3]);
static GfxColor Vec4PackGfxColor(const float (&in)[4]);
static void Vec2UnpackTexCoords(const PackedTexCoords& in, float (&out)[2]);
static void Vec3UnpackUnitVec(const PackedUnitVec& in, float (&out)[3]);
static void Vec4UnpackGfxColor(const GfxColor& in, float (&out)[4]);
};
} // namespace IW3