mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 18:56:16 +03:00
70 lines
1.6 KiB
C++
70 lines
1.6 KiB
C++
#pragma once
|
|
#include "../component.h"
|
|
#include "../shader/common_header.h"
|
|
|
|
namespace engine
|
|
{
|
|
class SkyComponent;
|
|
|
|
struct TimeOfDay
|
|
{
|
|
DEFAULT_COMPARE_ARCHIVE(TimeOfDay)
|
|
|
|
public:
|
|
TimeOfDay();
|
|
bool uiDraw(bool bLocalTime);
|
|
|
|
public:
|
|
int year;
|
|
int month;
|
|
int day;
|
|
int hour;
|
|
int minute;
|
|
int second;
|
|
};
|
|
|
|
extern AtmosphereParametersInputs defaultAtmosphereParameters();
|
|
extern CloudParametersInputs defaultCloudParameters(float earthRadius = -1.0f);
|
|
extern CascadeShadowConfig defaultCascadeConfig();
|
|
extern RaytraceShadowConfig defaultRaytraceShadowConfig();
|
|
|
|
extern SkyLightInfo defaultSun();
|
|
|
|
class SkyComponent : public Component
|
|
{
|
|
REGISTER_BODY_DECLARE(Component);
|
|
|
|
public:
|
|
SkyComponent() = default;
|
|
SkyComponent(std::shared_ptr<SceneNode> sceneNode) : Component(sceneNode)
|
|
{
|
|
|
|
}
|
|
|
|
virtual ~SkyComponent() = default;
|
|
|
|
virtual void tick(const RuntimeModuleTickData& tickData) override;
|
|
|
|
virtual bool uiDrawComponent() override;
|
|
static const UIComponentReflectionDetailed& uiComponentReflection();
|
|
|
|
math::vec3 getSunDirection() const;
|
|
|
|
SkyLightInfo getSunInfo() const { return m_sun; }
|
|
const AtmosphereParametersInputs& getAtmosphereParameters() const { return m_atmosphere; }
|
|
const CloudParametersInputs& getCloudParameters() const { return m_cloud; }
|
|
bool collectSkyLight(class RenderScene& renderScene);
|
|
|
|
protected:
|
|
bool m_bLocalTime = true;
|
|
TimeOfDay m_tod;
|
|
|
|
AtmosphereParametersInputs m_atmosphere = defaultAtmosphereParameters();
|
|
CloudParametersInputs m_cloud = defaultCloudParameters();
|
|
|
|
SkyLightInfo m_sun = defaultSun();
|
|
SkyLightInfo m_prevFrameSun = defaultSun();
|
|
|
|
};
|
|
}
|