| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #pragma once
- #include "BsCorePrerequisites.h"
- #include "Renderer/BsLight.h"
- #include "Scene/BsComponent.h"
- namespace bs
- {
- /** @addtogroup Components
- * @{
- */
- /**
- * @copydoc Light
- *
- * @note Wraps Light as a Component.
- */
- class BS_CORE_EXPORT BS_SCRIPT_EXPORT(m:Rendering,n:Light) CLight : public Component
- {
- public:
- CLight(const HSceneObject& parent, LightType type = LightType::Radial, Color color = Color::White,
- float intensity = 100.0f, float range = 1.0f, bool castsShadows = false, Degree spotAngle = Degree(45),
- Degree spotFalloffAngle = Degree(40));
- virtual ~CLight();
- /** @copydoc Light::setType */
- BS_SCRIPT_EXPORT(n:Type,pr:setter)
- void setType(LightType type) { mInternal->setType(type); }
- /** @copydoc Light::getType */
- BS_SCRIPT_EXPORT(n:Type,pr:getter)
- LightType getType() const { return mInternal->getType(); }
- /** @copydoc Light::setCastsShadow */
- BS_SCRIPT_EXPORT(n:CastsShadow,pr:setter)
- void setCastsShadow(bool castsShadow) { mInternal->setCastsShadow(castsShadow); }
- /** @copydoc Light::getCastsShadow */
- BS_SCRIPT_EXPORT(n:CastsShadow,pr:getter)
- bool getCastsShadow() const { return mInternal->getCastsShadow(); }
- /** @copydoc Light::setShadowBias */
- BS_SCRIPT_EXPORT(n:ShadowBias,pr:setter)
- void setShadowBias(float bias) { mInternal->setShadowBias(bias); }
- /** @copydoc Light::setShadowBias() */
- BS_SCRIPT_EXPORT(n:ShadowBias,pr:getter)
- float getShadowBias() const { return mInternal->getShadowBias(); }
- /** @copydoc Light::setColor */
- BS_SCRIPT_EXPORT(n:Color,pr:setter)
- void setColor(const Color& color) { mInternal->setColor(color); }
- /** @copydoc Light::getColor */
- BS_SCRIPT_EXPORT(n:Color,pr:getter)
- Color getColor() const { return mInternal->getColor(); }
- /** @copydoc Light::setAttenuationRadius */
- BS_SCRIPT_EXPORT(n:AttenuationRadius,pr:setter)
- void setAttenuationRadius(float radius) { mInternal->setAttenuationRadius(radius); }
- /** @copydoc Light::getAttenuationRadius */
- BS_SCRIPT_EXPORT(n:AttenuationRadius,pr:getter)
- float getAttenuationRadius() const { return mInternal->getAttenuationRadius(); }
- /** @copydoc Light::setSourceRadius */
- BS_SCRIPT_EXPORT(n:SourceRadius,pr:setter)
- void setSourceRadius(float radius) { mInternal->setSourceRadius(radius); }
- /** @copydoc Light::getSourceRadius */
- BS_SCRIPT_EXPORT(n:SourceRadius,pr:getter)
- float getSourceRadius() const { return mInternal->getSourceRadius(); }
- /** @copydoc Light::setIntensity */
- BS_SCRIPT_EXPORT(n:Intensity,pr:setter)
- void setIntensity(float intensity) { mInternal->setIntensity(intensity); }
- /** @copydoc Light::getIntensity */
- BS_SCRIPT_EXPORT(n:Intensity,pr:getter)
- float getIntensity() const { return mInternal->getIntensity(); }
- /** @copydoc Light::setSpotAngle */
- BS_SCRIPT_EXPORT(n:SpotAngle,pr:setter)
- void setSpotAngle(const Degree& spotAngle) { mInternal->setSpotAngle(spotAngle); }
- /** @copydoc Light::getSpotAngle */
- BS_SCRIPT_EXPORT(n:SpotAngle,pr:getter)
- Degree getSpotAngle() const { return mInternal->getSpotAngle(); }
- /** @copydoc Light::setSpotFalloffAngle */
- BS_SCRIPT_EXPORT(n:SpotAngleFalloff,pr:setter)
- void setSpotFalloffAngle(const Degree& spotAngle) { mInternal->setSpotFalloffAngle(spotAngle); }
- /** @copydoc Light::getSpotFalloffAngle */
- BS_SCRIPT_EXPORT(n:SpotAngleFalloff,pr:getter)
- Degree getSpotFalloffAngle() const { return mInternal->getSpotFalloffAngle(); }
- /** @copydoc Light::setUseAutoAttenuation */
- BS_SCRIPT_EXPORT(n:UseAutoAttenuation,pr:setter)
- void setUseAutoAttenuation(bool enabled) { mInternal->setUseAutoAttenuation(enabled); }
- /** @copydoc Light::getUseAutoAttenuation */
- BS_SCRIPT_EXPORT(n:UseAutoAttenuation,pr:getter)
- bool getUseAutoAttenuation() const { return mInternal->getUseAutoAttenuation(); }
- /** @copydoc Light::getBounds */
- BS_SCRIPT_EXPORT(n:Bounds,pr:getter)
- Sphere getBounds() const;
- /** @name Internal
- * @{
- */
- /** Returns the light that this component wraps. */
- SPtr<Light> _getLight() const { return mInternal; }
- /** @} */
- protected:
- mutable SPtr<Light> mInternal;
- // Only valid during construction
- LightType mType;
- Color mColor;
- float mIntensity;
- float mRange;
- bool mCastsShadows;
- Degree mSpotAngle;
- Degree mSpotFalloffAngle;
- /************************************************************************/
- /* COMPONENT OVERRIDES */
- /************************************************************************/
- protected:
- friend class SceneObject;
- /** @copydoc Component::onInitialized */
- void onInitialized() override;
- /** @copydoc Component::onDestroyed */
- void onDestroyed() override;
- /** @copydoc Component::update */
- void update() override { }
- /************************************************************************/
- /* RTTI */
- /************************************************************************/
- public:
- friend class CLightRTTI;
- static RTTITypeBase* getRTTIStatic();
- RTTITypeBase* getRTTI() const override;
- protected:
- CLight(); // Serialization only
- };
- /** @} */
- }
|