#pragma once #include "V8Tree/Instance.h" #include "V8DataModel/Effect.h" namespace RBX { extern const char* const sLight; class Light : public DescribedNonCreatable , public Effect { public: explicit Light(const char* name); virtual ~Light(); bool getEnabled() const { return enabled; } void setEnabled(bool enabled); bool getShadows() const { return shadows; } void setShadows(bool shadows); Color3 getColor() const { return color; } void setColor(Color3 color); float getBrightness() const { return brightness; } void setBrightness(float brightness); static Reflection::PropDescriptor prop_Enabled; static Reflection::PropDescriptor prop_Shadows; static Reflection::PropDescriptor prop_Color; static Reflection::PropDescriptor prop_Brightness; protected: bool askSetParent(const Instance* parent) const; bool askAddChild(const Instance* instance) const; private: bool enabled; bool shadows; Color3 color; float brightness; }; extern const char* const sPointLight; class PointLight : public DescribedCreatable { public: PointLight(); virtual ~PointLight(); float getRange() const { return range; } void setRange(float range); static Reflection::PropDescriptor prop_Range; private: float range; }; extern const char* const sSpotLight; class SpotLight : public DescribedCreatable { public: SpotLight(); virtual ~SpotLight(); float getRange() const { return range; } void setRange(float range); float getAngle() const { return angle; } void setAngle(float angle); NormalId getFace() const { return face; } void setFace(RBX::NormalId value); static Reflection::PropDescriptor prop_Range; static Reflection::PropDescriptor prop_Angle; static Reflection::EnumPropDescriptor prop_Face; private: float range; float angle; NormalId face; }; extern const char* const sSurfaceLight; class SurfaceLight : public DescribedCreatable { public: SurfaceLight(); virtual ~SurfaceLight(); float getRange() const { return range; } void setRange(float range); float getAngle() const { return angle; } void setAngle(float angle); NormalId getFace() const { return face; } void setFace(RBX::NormalId value); static Reflection::PropDescriptor prop_Range; static Reflection::PropDescriptor prop_Angle; static Reflection::EnumPropDescriptor prop_Face; private: float range; float angle; NormalId face; }; } // namespace RBX