fix: fix 2 issues

- rename float to CKFLOAT in VxMatrix.
- move CKLightData struct to CKDefine.hpp because it not a private struct used by CKLight, but a CKRasterizer struct.
This commit is contained in:
yyc12345 2024-12-25 08:28:42 +08:00
parent 4bfc4782b5
commit c235524403
4 changed files with 39 additions and 32 deletions

View File

@ -141,6 +141,28 @@ namespace LibCmo::CK2 {
CKFileExtension m_Ext; /**< File Extension of the image being described by this structure */
};
/**
* @brief Light Structure passed to CKRasterizerContext::SetLight()
* @details
* This struct is a part of CKRasterizer.
* I put it in there just for the convenience of CKLight.
*/
struct CKLightData {
VxMath::VXLIGHT_TYPE m_Type; /**< Point, Spot, Directionnal */
VxMath::VxColor m_Diffuse; /**< Diffuse Color */
VxMath::VxColor m_Specular; /**< Specular Color (Unused...) */
VxMath::VxColor m_Ambient; /**< Ambient Color (Unused...) */
VxMath::VxVector3 m_Position; /**< World Position */
VxMath::VxVector3 m_Direction; /**< Direction */
CKFLOAT m_Range; /**< Range */
CKFLOAT m_Falloff;
CKFLOAT m_Attenuation0;
CKFLOAT m_Attenuation1;
CKFLOAT m_Attenuation2;
CKFLOAT m_InnerSpotCone; /**< Only for spot lights */
CKFLOAT m_OuterSpotCone; /**< Only for spot lights */
};
#pragma endregion

View File

@ -60,21 +60,6 @@ namespace LibCmo::CK2::ObjImpls {
void SetLightPower(CKFLOAT power = 1.0f);
protected:
struct CKLightData {
VxMath::VXLIGHT_TYPE m_Type;
VxMath::VxColor m_Diffuse;
VxMath::VxColor m_Specular;
VxMath::VxColor m_Ambient;
VxMath::VxVector3 m_Position;
VxMath::VxVector3 m_Direction;
CKFLOAT m_Range;
CKFLOAT m_Falloff;
CKFLOAT m_Attenuation0;
CKFLOAT m_Attenuation1;
CKFLOAT m_Attenuation2;
CKFLOAT m_InnerSpotCone;
CKFLOAT m_OuterSpotCone;
};
enum class LightFlags : CKDWORD {
None = 0,
Active = 0x100u, /**< if set, this light is active. */

View File

@ -442,7 +442,7 @@ namespace LibCmo::VxMath {
Clear();
m_Data[0][0] = m_Data[1][1] = m_Data[2][2] = m_Data[3][3] = 1.0f;
}
void VxMatrix::Perspective(float Fov, float Aspect, float Near_plane, float Far_plane) {
void VxMatrix::Perspective(CKFLOAT Fov, CKFLOAT Aspect, CKFLOAT Near_plane, CKFLOAT Far_plane) {
Clear();
m_Data[0][0] = std::cosf(Fov * 0.5f) / std::sinf(Fov * 0.5f);
m_Data[1][1] = m_Data[0][0] * Aspect;
@ -450,10 +450,10 @@ namespace LibCmo::VxMath {
m_Data[3][2] = -m_Data[2][2] * Near_plane;
m_Data[2][3] = 1;
}
void VxMatrix::PerspectiveRect(float Left, float Right, float Top, float Bottom, float Near_plane, float Far_plane) {
void VxMatrix::PerspectiveRect(CKFLOAT Left, CKFLOAT Right, CKFLOAT Top, CKFLOAT Bottom, CKFLOAT Near_plane, CKFLOAT Far_plane) {
Clear();
float RL = 1.0f / (Right - Left);
float TB = 1.0f / (Top - Bottom);
CKFLOAT RL = 1.0f / (Right - Left);
CKFLOAT TB = 1.0f / (Top - Bottom);
m_Data[0][0] = 2.0f * Near_plane * RL;
m_Data[1][1] = 2.0f * Near_plane * TB;
m_Data[2][0] = -(Right + Left) * RL;
@ -462,20 +462,20 @@ namespace LibCmo::VxMath {
m_Data[3][2] = -m_Data[2][2] * Near_plane;
m_Data[2][3] = 1;
}
void VxMatrix::Orthographic(float Zoom, float Aspect, float Near_plane, float Far_plane) {
void VxMatrix::Orthographic(CKFLOAT Zoom, CKFLOAT Aspect, CKFLOAT Near_plane, CKFLOAT Far_plane) {
Clear();
float iz = 1.0f / (Far_plane - Near_plane);
CKFLOAT iz = 1.0f / (Far_plane - Near_plane);
m_Data[0][0] = Zoom;
m_Data[1][1] = Zoom * Aspect;
m_Data[2][2] = iz;
m_Data[3][2] = -Near_plane * iz;
m_Data[3][3] = 1.0f;
}
void VxMatrix::OrthographicRect(float Left, float Right, float Top, float Bottom, float Near_plane, float Far_plane) {
void VxMatrix::OrthographicRect(CKFLOAT Left, CKFLOAT Right, CKFLOAT Top, CKFLOAT Bottom, CKFLOAT Near_plane, CKFLOAT Far_plane) {
Clear();
float ix = 1.0f / (Right - Left);
float iy = 1.0f / (Top - Bottom);
float iz = 1.0f / (Far_plane - Near_plane);
CKFLOAT ix = 1.0f / (Right - Left);
CKFLOAT iy = 1.0f / (Top - Bottom);
CKFLOAT iz = 1.0f / (Far_plane - Near_plane);
m_Data[0][0] = 2.0f * ix;
m_Data[1][1] = -2.0f * iy;
m_Data[2][2] = iz;
@ -492,15 +492,15 @@ namespace LibCmo::VxMath {
namespace NSVxVector {
float DotProduct(const VxVector2& lhs, const VxVector2& rhs) {
CKFLOAT DotProduct(const VxVector2& lhs, const VxVector2& rhs) {
return lhs * rhs;
}
float DotProduct(const VxVector3& lhs, const VxVector3& rhs) {
CKFLOAT DotProduct(const VxVector3& lhs, const VxVector3& rhs) {
return lhs * rhs;
}
float DotProduct(const VxVector4& lhs, const VxVector4& rhs) {
CKFLOAT DotProduct(const VxVector4& lhs, const VxVector4& rhs) {
return lhs * rhs;
}

View File

@ -221,7 +221,7 @@ namespace LibCmo::VxMath {
*
* @see PerspectiveRect, Orthographic, OrthographicRect
*/
void Perspective(float Fov, float Aspect, float Near_plane, float Far_plane);
void Perspective(CKFLOAT Fov, CKFLOAT Aspect, CKFLOAT Near_plane, CKFLOAT Far_plane);
/**
* @brief Constructs a perspective projection matrix given a view rectangle.
* @param[in] Left Left clipping plane value.
@ -246,7 +246,7 @@ namespace LibCmo::VxMath {
*
* @see Perspective, Orthographic, OrthographicRect
*/
void PerspectiveRect(float Left, float Right, float Top, float Bottom, float Near_plane, float Far_plane);
void PerspectiveRect(CKFLOAT Left, CKFLOAT Right, CKFLOAT Top, CKFLOAT Bottom, CKFLOAT Near_plane, CKFLOAT Far_plane);
/**
* @brief Constructs a orthographic projection matrix.
* @param[in] Zoom Zoom factor.
@ -265,7 +265,7 @@ namespace LibCmo::VxMath {
*
* @see Perspective, OrthographicRect
*/
void Orthographic(float Zoom, float Aspect, float Near_plane, float Far_plane);
void Orthographic(CKFLOAT Zoom, CKFLOAT Aspect, CKFLOAT Near_plane, CKFLOAT Far_plane);
/**
* @brief Constructs a orthographic projection matrix.
* @param[in] Left Left clipping plane value.
@ -290,7 +290,7 @@ namespace LibCmo::VxMath {
*
* @see Perspective, Orthographic
*/
void OrthographicRect(float Left, float Right, float Top, float Bottom, float Near_plane, float Far_plane);
void OrthographicRect(CKFLOAT Left, CKFLOAT Right, CKFLOAT Top, CKFLOAT Bottom, CKFLOAT Near_plane, CKFLOAT Far_plane);
/* ===== END USER CUSTOM ===== */
};