thunderbrew/src/model/CM2Light.cpp
2023-01-02 13:17:18 -06:00

79 lines
1.6 KiB
C++

#include "model/CM2Light.hpp"
#include "model/CM2Scene.hpp"
void CM2Light::Initialize(CM2Scene* scene) {
this->m_scene = scene;
// TODO
}
void CM2Light::Link() {
if (!this->m_visible || !this->m_scene) {
return;
}
if (this->m_type == M2LIGHT_1) {
// TODO
} else {
if (!(this->m_scene->m_flags & 0x1)) {
this->m_lightPrev = &this->m_scene->m_lightList;
this->m_lightNext = this->m_scene->m_lightList;
this->m_scene->m_lightList = this;
if (this->m_lightNext) {
this->m_lightNext->m_lightPrev = &this->m_lightNext;
}
}
}
}
void CM2Light::SetDirection(const C3Vector& dir) {
this->m_dir = dir;
if (this->m_dir.SquaredMag() > 0.00000023841858) {
this->m_dir.Normalize();
}
}
void CM2Light::SetLightType(M2LIGHTTYPE lightType) {
if (this->m_type == lightType) {
return;
}
this->m_type = lightType;
if (this->m_visible && this->m_scene) {
this->Unlink();
this->Link();
}
}
void CM2Light::SetVisible(int32_t visible) {
if (this->m_visible == visible) {
return;
}
this->m_visible = visible;
if (this->m_scene) {
if (this->m_visible) {
this->Link();
} else {
this->Unlink();
}
}
}
void CM2Light::Unlink() {
if (this->m_lightPrev) {
*this->m_lightPrev = this->m_lightNext;
}
if (this->m_lightNext) {
this->m_lightNext->m_lightPrev = this->m_lightPrev;
}
this->m_lightPrev = nullptr;
this->m_lightNext = nullptr;
}