mirror of https://github.com/PrimeDecomp/prime.git
Match and link CLight *FINALLY*
This commit is contained in:
parent
a110979970
commit
ff90f64231
|
@ -50,6 +50,7 @@ COMPLETE_OBJECTS = [
|
||||||
"Kyoto/Basics/COsContextDolphin",
|
"Kyoto/Basics/COsContextDolphin",
|
||||||
"Kyoto/Basics/CSWDataDolphin",
|
"Kyoto/Basics/CSWDataDolphin",
|
||||||
"Kyoto/Audio/CSfxHandle",
|
"Kyoto/Audio/CSfxHandle",
|
||||||
|
"Kyoto/Graphics/CLight",
|
||||||
"Kyoto/Graphics/CGX",
|
"Kyoto/Graphics/CGX",
|
||||||
"Kyoto/Particles/CIntElement",
|
"Kyoto/Particles/CIntElement",
|
||||||
"Kyoto/Particles/CWarp",
|
"Kyoto/Particles/CWarp",
|
||||||
|
|
|
@ -507,7 +507,7 @@ KYOTO_1 :=\
|
||||||
$(BUILD_DIR)/asm/Kyoto/Text/CWordInstruction.o\
|
$(BUILD_DIR)/asm/Kyoto/Text/CWordInstruction.o\
|
||||||
$(BUILD_DIR)/asm/Kyoto/Text/CBlockInstruction.o\
|
$(BUILD_DIR)/asm/Kyoto/Text/CBlockInstruction.o\
|
||||||
$(BUILD_DIR)/asm/Kyoto/Text/CFont.o\
|
$(BUILD_DIR)/asm/Kyoto/Text/CFont.o\
|
||||||
$(BUILD_DIR)/asm/Kyoto/Graphics/CLight.o\
|
$(BUILD_DIR)/src/Kyoto/Graphics/CLight.o\
|
||||||
$(BUILD_DIR)/asm/Kyoto/Graphics/CCubeModel.o\
|
$(BUILD_DIR)/asm/Kyoto/Graphics/CCubeModel.o\
|
||||||
$(BUILD_DIR)/src/Kyoto/Graphics/CGX.o\
|
$(BUILD_DIR)/src/Kyoto/Graphics/CGX.o\
|
||||||
$(BUILD_DIR)/asm/Kyoto/Graphics/CTevCombiners.o\
|
$(BUILD_DIR)/asm/Kyoto/Graphics/CTevCombiners.o\
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
|
#include <float.h>
|
||||||
|
|
||||||
#include "Kyoto/Graphics/CLight.hpp"
|
#include "Kyoto/Graphics/CLight.hpp"
|
||||||
|
|
||||||
#include "Kyoto/Math/CMath.hpp"
|
#include "Kyoto/Math/CMath.hpp"
|
||||||
#include "rstl/math.hpp"
|
#include "rstl/math.hpp"
|
||||||
|
|
||||||
|
static const float gkEpsilon32 = FLT_EPSILON;
|
||||||
|
|
||||||
const CVector3f CLight::kDefaultPosition(0.f, 0.f, 0.f);
|
const CVector3f CLight::kDefaultPosition(0.f, 0.f, 0.f);
|
||||||
const CVector3f CLight::kDefaultDirection(0.f, -1.f, 0.f);
|
const CVector3f CLight::kDefaultDirection(0.f, -1.f, 0.f);
|
||||||
|
|
||||||
static const float gkEpsilon32 = FLT_EPSILON;
|
|
||||||
|
|
||||||
CLight::CLight(ELightType type, const CVector3f& position, const CVector3f& direction,
|
CLight::CLight(ELightType type, const CVector3f& position, const CVector3f& direction,
|
||||||
const CColor& color, float cutoff)
|
const CColor& color, float cutoff)
|
||||||
: x0_pos(position)
|
: x0_pos(position)
|
||||||
|
@ -52,10 +54,12 @@ CLight CLight::BuildLocalAmbient(const CVector3f& pos, const CColor& col) {
|
||||||
return CLight(kLT_LocalAmbient, pos, kDefaultDirection, col, 180.f);
|
return CLight(kLT_LocalAmbient, pos, kDefaultDirection, col, 180.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CLight CLight::BuildDirectional(const CVector3f& direction, const CColor& col) {
|
CLight CLight::BuildDirectional(const CVector3f& direction, const CColor& col) {
|
||||||
return CLight(kLT_Directional, kDefaultPosition, direction, col, 180.f);
|
return CLight(kLT_Directional, kDefaultPosition, direction, col, 180.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CLight CLight::BuildPoint(const CVector3f& pos, const CColor& color) {
|
CLight CLight::BuildPoint(const CVector3f& pos, const CColor& color) {
|
||||||
return CLight(kLT_Point, pos, kDefaultDirection, color, 180.f);
|
return CLight(kLT_Point, pos, kDefaultDirection, color, 180.f);
|
||||||
}
|
}
|
||||||
|
@ -71,6 +75,7 @@ CLight CLight::BuildCustom(const CVector3f& pos, const CVector3f& dir, const CCo
|
||||||
return CLight(pos, dir, color, distC, distL, distQ, angleC, angleL, angleQ);
|
return CLight(pos, dir, color, distC, distL, distQ, angleC, angleL, angleQ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CLight::SetAttenuation(float constant, float linear, float quadratic) {
|
void CLight::SetAttenuation(float constant, float linear, float quadratic) {
|
||||||
x24_distC = constant;
|
x24_distC = constant;
|
||||||
x28_distL = linear;
|
x28_distL = linear;
|
||||||
|
@ -79,6 +84,7 @@ void CLight::SetAttenuation(float constant, float linear, float quadratic) {
|
||||||
x4c_24_intensityDirty = true;
|
x4c_24_intensityDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CLight::SetAngleAttenuation(float constant, float linear, float quadratic) {
|
void CLight::SetAngleAttenuation(float constant, float linear, float quadratic) {
|
||||||
x30_angleC = constant;
|
x30_angleC = constant;
|
||||||
x34_angleL = linear;
|
x34_angleL = linear;
|
||||||
|
@ -105,9 +111,10 @@ float CLight::GetRadius() const {
|
||||||
return x44_cachedRadius;
|
return x44_cachedRadius;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float CLight::CalculateLightRadius() const {
|
float CLight::CalculateLightRadius() const {
|
||||||
if (x28_distL < gkEpsilon32 && x2c_distQ < gkEpsilon32) {
|
if (x28_distL < gkEpsilon32 && x2c_distQ < gkEpsilon32) {
|
||||||
return FLT_MAX;
|
return 3.0E36f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float intensity = GetIntensity();
|
float intensity = GetIntensity();
|
||||||
|
@ -140,6 +147,11 @@ float CLight::GetIntensity() const {
|
||||||
}
|
}
|
||||||
return x48_cachedIntensity;
|
return x48_cachedIntensity;
|
||||||
}
|
}
|
||||||
|
// Hack for float ordering
|
||||||
|
static void StrippedFunc() {
|
||||||
|
static float f1 = -1.f;
|
||||||
|
static float f2 = 0.f;
|
||||||
|
}
|
||||||
|
|
||||||
CVector3f CLight::GetNormalIndependentLightingAtPoint(const CVector3f& point) const {
|
CVector3f CLight::GetNormalIndependentLightingAtPoint(const CVector3f& point) const {
|
||||||
CVector3f floatCol(x18_color.GetRed(), x18_color.GetGreen(), x18_color.GetBlue());
|
CVector3f floatCol(x18_color.GetRed(), x18_color.GetGreen(), x18_color.GetBlue());
|
||||||
|
|
Loading…
Reference in New Issue