1 | //************************************ bs::framework - Copyright 2018 Marko Pintera **************************************// |
2 | //*********** Licensed under the MIT license. See LICENSE.md for full terms. This notice is not to be removed. ***********// |
3 | #include "Components/BsCLight.h" |
4 | #include "Private/RTTI/BsCLightRTTI.h" |
5 | #include "Scene/BsSceneManager.h" |
6 | |
7 | namespace bs |
8 | { |
9 | CLight::CLight() |
10 | { |
11 | setFlag(ComponentFlag::AlwaysRun, true); |
12 | setName("Light" ); |
13 | } |
14 | |
15 | CLight::CLight(const HSceneObject& parent, LightType type, Color color, |
16 | float intensity, float range, bool castsShadows, Degree spotAngle, Degree spotFalloffAngle) |
17 | : Component(parent), mType(type), mColor(color), mIntensity(intensity), mRange(range), |
18 | mCastsShadows(castsShadows), mSpotAngle(spotAngle), mSpotFalloffAngle(spotFalloffAngle) |
19 | { |
20 | setFlag(ComponentFlag::AlwaysRun, true); |
21 | setName("Light" ); |
22 | } |
23 | |
24 | CLight::~CLight() |
25 | { } |
26 | |
27 | Sphere CLight::getBounds() const |
28 | { |
29 | mInternal->_updateState(*SO()); |
30 | |
31 | return mInternal->getBounds(); |
32 | } |
33 | |
34 | void CLight::onInitialized() |
35 | { |
36 | // If mInternal already exists this means this object was deserialized, |
37 | // so all we need to do is initialize it. |
38 | if (mInternal != nullptr) |
39 | mInternal->initialize(); |
40 | else |
41 | { |
42 | mInternal = Light::create( |
43 | mType, |
44 | mColor, |
45 | mIntensity, |
46 | mRange, |
47 | mCastsShadows, |
48 | mSpotAngle, |
49 | mSpotFalloffAngle); |
50 | } |
51 | |
52 | gSceneManager()._bindActor(mInternal, sceneObject()); |
53 | } |
54 | |
55 | void CLight::onDestroyed() |
56 | { |
57 | gSceneManager()._unbindActor(mInternal); |
58 | mInternal->destroy(); |
59 | } |
60 | |
61 | RTTITypeBase* CLight::getRTTIStatic() |
62 | { |
63 | return CLightRTTI::instance(); |
64 | } |
65 | |
66 | RTTITypeBase* CLight::getRTTI() const |
67 | { |
68 | return CLight::getRTTIStatic(); |
69 | } |
70 | } |
71 | |