prime/include/MetroidPrime/CActorLights.hpp

64 lines
1.9 KiB
C++
Raw Normal View History

2022-08-13 01:26:00 +00:00
#ifndef _CACTORLIGHTS_HPP
#define _CACTORLIGHTS_HPP
#include "types.h"
2022-08-16 02:14:28 +00:00
#include "MetroidPrime/TGameTypes.hpp"
#include "Kyoto/Graphics/CColor.hpp"
#include "Kyoto/Graphics/CLight.hpp"
2022-08-16 02:14:28 +00:00
#include "Kyoto/Math/CVector3f.hpp"
#include "rstl/reserved_vector.hpp"
class CGameArea;
class CStateManager;
class CAABox;
2022-08-16 02:14:28 +00:00
2022-08-13 01:26:00 +00:00
class CActorLights {
public:
2022-10-06 08:53:35 +00:00
CActorLights(uint areaUpdateFramePeriod, const CVector3f& actorPosBias, int maxDynamicLights, int maxAreaLights,
bool ambientChannelOverflow, bool layer2, bool disableWorldLights, float positionUpdateThreshold);
2022-08-13 01:26:00 +00:00
~CActorLights();
2022-08-16 02:14:28 +00:00
void BuildConstantAmbientLighting();
bool BuildAreaLightList(const CStateManager& mgr, const CGameArea& area, const CAABox& bounds);
void BuildDynamicLightList(const CStateManager& mgr, const CAABox& bounds);
bool GetNeedsRelight() const { return x298_24_dirty == TRUE; }
2022-08-16 02:14:28 +00:00
private:
rstl::reserved_vector< CLight, 4 > x0_areaLights;
rstl::reserved_vector< CLight, 4 > x144_dynamicLights;
CVector3f x288_ambientColor;
TAreaId x294_aid;
bool x298_24_dirty : 1;
bool x298_25_castShadows : 1;
bool x298_26_hasAreaLights : 1;
bool x298_27_findShadowLight : 1;
bool x298_28_inArea : 1;
bool x298_29_ambienceGenerated : 1;
bool x298_30_layer2 : 1;
bool x298_31_disableWorldLights : 1;
bool x299_24_inBrightLight : 1;
bool x299_25_useBrightLightLag : 1;
bool x299_26_ambientOnly : 1;
bool x29a_findNearestDynamicLights;
int x29c_shadowLightArrIdx;
int x2a0_shadowLightIdx;
uint x2a4_lastUpdateFrame;
uint x2a8_areaUpdateFramePeriod;
2022-08-16 02:14:28 +00:00
CVector3f x2ac_actorPosBias;
int x2b8_maxAreaLights;
int x2bc_maxDynamicLights;
2022-08-16 02:14:28 +00:00
CVector3f x2c0_lastActorPos;
f32 x2cc_actorPositionDeltaUpdateThreshold;
f32 x2d0_shadowDynamicRangeThreshold;
f32 x2d4_worldLightingLevel;
int x2d8_brightLightIdx;
uint x2dc_brightLightLag;
2022-08-13 01:26:00 +00:00
};
2022-08-16 02:14:28 +00:00
CHECK_SIZEOF(CActorLights, 0x2e0)
2022-08-13 01:26:00 +00:00
2022-09-18 06:05:46 +00:00
#endif