Enzo
Loading...
Searching...
No Matches
PointLight.h
1#pragma once
2#include "Engine/Primitives/Primitive.h"
3
4namespace enzo::geo {
5
13class PointLight : public Primitive
14{
15 public:
16 PointLight(std::string_view path = "/pointLight");
17 PointLight(const PointLight& other);
18 PointLight& operator=(const PointLight& rhs);
19 ~PointLight() override = default;
20
21 PrimType getType() const override { return PrimType::POINT_LIGHT; }
22 std::shared_ptr<Primitive> clone() const override
23 {
24 return std::make_shared<PointLight>(*this);
25 }
26 TransformClass transformType() const override { return TransformClass::PRIMITIVE; }
27 void applyTransform(const Matrix4& mat, TransformClass transformClass) override;
28
29 Matrix4 getTransform() const;
30 void setTransform(const Matrix4& xform);
31 Vector3 getColor() const;
32 void setColor(const Vector3& color);
33 floatT getIntensity() const;
34 void setIntensity(floatT intensity);
35
36 private:
37 attr::AttributeHandle<Matrix4> transformHandle_;
38 attr::AttributeHandle<Vector3> colorHandle_;
39 attr::AttributeHandle<floatT> intensityHandle_;
40};
41} // namespace enzo::geo