mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-17 23:39:18 +02:00
Add models seasonal variants
This commit is contained in:
@@ -318,6 +318,10 @@ bool TAnimModel::Load(cParser *parser, bool ter)
|
|||||||
LightsOff[5] = pModel->GetFromName("Light_Off05");
|
LightsOff[5] = pModel->GetFromName("Light_Off05");
|
||||||
LightsOff[6] = pModel->GetFromName("Light_Off06");
|
LightsOff[6] = pModel->GetFromName("Light_Off06");
|
||||||
LightsOff[7] = pModel->GetFromName("Light_Off07");
|
LightsOff[7] = pModel->GetFromName("Light_Off07");
|
||||||
|
sm_winter_variant = pModel->GetFromName("winter_variant");
|
||||||
|
sm_spring_variant = pModel->GetFromName("spring_variant");
|
||||||
|
sm_summer_variant = pModel->GetFromName("summer_variant");
|
||||||
|
sm_autumn_variant = pModel->GetFromName("autumn_variant");
|
||||||
}
|
}
|
||||||
for (int i = 0; i < iMaxNumLights; ++i)
|
for (int i = 0; i < iMaxNumLights; ++i)
|
||||||
if (LightsOn[i] || LightsOff[i]) // Ra: zlikwidowałem wymóg istnienia obu
|
if (LightsOn[i] || LightsOff[i]) // Ra: zlikwidowałem wymóg istnienia obu
|
||||||
@@ -494,9 +498,59 @@ void TAnimModel::RaAnimate( unsigned int const Framestamp ) {
|
|||||||
m_framestamp = Framestamp;
|
m_framestamp = Framestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// aktualizujemy submodele w zaleznosci od aktualnej porty roku
|
||||||
|
void TAnimModel::on_season_update() {
|
||||||
|
if (Global.Season == "winter:") // pokazujemy wariant zimowy
|
||||||
|
{
|
||||||
|
if (this->sm_winter_variant != nullptr)
|
||||||
|
this->sm_winter_variant->SetVisibilityLevel(1.f, true, false);
|
||||||
|
if (this->sm_spring_variant != nullptr)
|
||||||
|
this->sm_spring_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_summer_variant != nullptr)
|
||||||
|
this->sm_summer_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_autumn_variant != nullptr)
|
||||||
|
this->sm_autumn_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
}
|
||||||
|
else if (Global.Season == "spring:") // pokazujemy wariant wiosenny
|
||||||
|
{
|
||||||
|
if (this->sm_winter_variant != nullptr)
|
||||||
|
this->sm_winter_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_spring_variant != nullptr)
|
||||||
|
this->sm_spring_variant->SetVisibilityLevel(1.f, true, false);
|
||||||
|
if (this->sm_summer_variant != nullptr)
|
||||||
|
this->sm_summer_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_autumn_variant != nullptr)
|
||||||
|
this->sm_autumn_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
}
|
||||||
|
else if (Global.Season == "summer:") // pokazujemy wariant letni
|
||||||
|
{
|
||||||
|
if (this->sm_winter_variant != nullptr)
|
||||||
|
this->sm_winter_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_spring_variant != nullptr)
|
||||||
|
this->sm_spring_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_summer_variant != nullptr)
|
||||||
|
this->sm_summer_variant->SetVisibilityLevel(1.f, true, false);
|
||||||
|
if (this->sm_autumn_variant != nullptr)
|
||||||
|
this->sm_autumn_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
}
|
||||||
|
else if (Global.Season == "autumn:") // pokazujemy wariant jesienny
|
||||||
|
{
|
||||||
|
if (this->sm_winter_variant != nullptr)
|
||||||
|
this->sm_winter_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_spring_variant != nullptr)
|
||||||
|
this->sm_spring_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_summer_variant != nullptr)
|
||||||
|
this->sm_summer_variant->SetVisibilityLevel(0.f, true, false);
|
||||||
|
if (this->sm_autumn_variant != nullptr)
|
||||||
|
this->sm_autumn_variant->SetVisibilityLevel(1.f, true, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TAnimModel::RaPrepare()
|
void TAnimModel::RaPrepare()
|
||||||
{ // ustawia światła i animacje we wzorcu modelu przed renderowaniem egzemplarza
|
{ // ustawia światła i animacje we wzorcu modelu przed renderowaniem egzemplarza
|
||||||
bool state; // stan światła
|
bool state; // stan światła
|
||||||
|
if (Global.UpdateMaterials)
|
||||||
|
on_season_update();
|
||||||
for (int i = 0; i < iNumLights; ++i)
|
for (int i = 0; i < iNumLights; ++i)
|
||||||
{
|
{
|
||||||
auto const lightmode { static_cast<int>( std::abs( lsLights[ i ] ) ) };
|
auto const lightmode { static_cast<int>( std::abs( lsLights[ i ] ) ) };
|
||||||
|
|||||||
19
AnimModel.h
19
AnimModel.h
@@ -25,12 +25,14 @@ const int iMaxNumLights = 8;
|
|||||||
float const DefaultDarkThresholdLevel { 0.325f };
|
float const DefaultDarkThresholdLevel { 0.325f };
|
||||||
|
|
||||||
// typy stanu świateł
|
// typy stanu świateł
|
||||||
enum TLightState {
|
enum TLightState
|
||||||
ls_Off = 0, // zgaszone
|
{
|
||||||
ls_On = 1, // zapalone
|
ls_Off = 0, // zgaszone
|
||||||
ls_Blink = 2, // migające
|
ls_On = 1, // zapalone
|
||||||
ls_Dark = 3, // Ra: zapalajce się automatycznie, gdy zrobi się ciemno
|
ls_Blink = 2, // migające
|
||||||
ls_Home = 4 // like ls_dark but off late at night
|
ls_Dark = 3, // Ra: zapalajce się automatycznie, gdy zrobi się ciemno
|
||||||
|
ls_Home = 4, // like ls_dark but off late at night
|
||||||
|
ls_winter = 5 // turned on when its winter
|
||||||
};
|
};
|
||||||
|
|
||||||
class TAnimVocaloidFrame
|
class TAnimVocaloidFrame
|
||||||
@@ -125,6 +127,7 @@ public:
|
|||||||
int TerrainCount();
|
int TerrainCount();
|
||||||
TSubModel * TerrainSquare(int n);
|
TSubModel * TerrainSquare(int n);
|
||||||
int Flags();
|
int Flags();
|
||||||
|
void on_season_update();
|
||||||
inline
|
inline
|
||||||
material_data const *
|
material_data const *
|
||||||
Material() const {
|
Material() const {
|
||||||
@@ -174,6 +177,10 @@ public:
|
|||||||
int iNumLights { 0 };
|
int iNumLights { 0 };
|
||||||
std::array<TSubModel *, iMaxNumLights> LightsOn {}; // Ra: te wskaźniki powinny być w ramach TModel3d
|
std::array<TSubModel *, iMaxNumLights> LightsOn {}; // Ra: te wskaźniki powinny być w ramach TModel3d
|
||||||
std::array<TSubModel *, iMaxNumLights> LightsOff {};
|
std::array<TSubModel *, iMaxNumLights> LightsOff {};
|
||||||
|
TSubModel *sm_winter_variant {}; // submodel zimowego wariantu
|
||||||
|
TSubModel *sm_spring_variant {}; // submodel wiosennego wariantu
|
||||||
|
TSubModel *sm_summer_variant {}; // submodel letniego wariantu
|
||||||
|
TSubModel *sm_autumn_variant {}; // submodel jesiennego wariantu
|
||||||
std::array<float, iMaxNumLights> lsLights {}; // ls_Off
|
std::array<float, iMaxNumLights> lsLights {}; // ls_Off
|
||||||
std::array<glm::vec3, iMaxNumLights> m_lightcolors; // -1 in constructor
|
std::array<glm::vec3, iMaxNumLights> m_lightcolors; // -1 in constructor
|
||||||
std::array<float, iMaxNumLights> m_lighttimers {};
|
std::array<float, iMaxNumLights> m_lighttimers {};
|
||||||
|
|||||||
Reference in New Issue
Block a user