mirror of https://github.com/AxioDL/metaforce.git
CLight: Mark caching member variables as mutable
Member variables acting as caches is one of the areas where marking variables as mutable makes sense. We can do this to allow for the elimination of const_cast in some member functions.
This commit is contained in:
parent
9483b64c91
commit
e821f736de
|
@ -27,20 +27,20 @@ float CLight::CalculateLightRadius() const {
|
||||||
|
|
||||||
float CLight::GetIntensity() const {
|
float CLight::GetIntensity() const {
|
||||||
if (x4c_24_intensityDirty) {
|
if (x4c_24_intensityDirty) {
|
||||||
const_cast<CLight*>(this)->x4c_24_intensityDirty = false;
|
x4c_24_intensityDirty = false;
|
||||||
float coef = 1.f;
|
float coef = 1.f;
|
||||||
if (x1c_type == ELightType::Custom)
|
if (x1c_type == ELightType::Custom) {
|
||||||
coef = x30_angleC;
|
coef = x30_angleC;
|
||||||
const_cast<CLight*>(this)->x48_cachedIntensity =
|
}
|
||||||
coef * std::max(x18_color.r(), std::max(x18_color.g(), x18_color.b()));
|
x48_cachedIntensity = coef * std::max(x18_color.r(), std::max(x18_color.g(), x18_color.b()));
|
||||||
}
|
}
|
||||||
return x48_cachedIntensity;
|
return x48_cachedIntensity;
|
||||||
}
|
}
|
||||||
|
|
||||||
float CLight::GetRadius() const {
|
float CLight::GetRadius() const {
|
||||||
if (x4c_25_radiusDirty) {
|
if (x4c_25_radiusDirty) {
|
||||||
const_cast<CLight*>(this)->x44_cachedRadius = CalculateLightRadius();
|
x44_cachedRadius = CalculateLightRadius();
|
||||||
const_cast<CLight*>(this)->x4c_25_radiusDirty = false;
|
x4c_25_radiusDirty = false;
|
||||||
}
|
}
|
||||||
return x44_cachedRadius;
|
return x44_cachedRadius;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,10 +35,10 @@ class CLight {
|
||||||
float x38_angleQ = 0.f;
|
float x38_angleQ = 0.f;
|
||||||
u32 x3c_priority = 0;
|
u32 x3c_priority = 0;
|
||||||
u32 x40_lightId = 0; // Serves as unique key
|
u32 x40_lightId = 0; // Serves as unique key
|
||||||
float x44_cachedRadius = 0.f;
|
mutable float x44_cachedRadius = 0.f;
|
||||||
float x48_cachedIntensity = 0.f;
|
mutable float x48_cachedIntensity = 0.f;
|
||||||
bool x4c_24_intensityDirty : 1;
|
mutable bool x4c_24_intensityDirty : 1;
|
||||||
bool x4c_25_radiusDirty : 1;
|
mutable bool x4c_25_radiusDirty : 1;
|
||||||
|
|
||||||
float CalculateLightRadius() const;
|
float CalculateLightRadius() const;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue