#pragma once
#include "Light.h"
class PointLight :
    public Light
{
public:
    PointLight(Vertex lightPosition);
    PointLight(Vertex lightPosition, float a, float b, float c);
    PointLight(Vertex lightPosition, float a, float b, float c, int red, int green, int blue);
    PointLight(const PointLight& other);

    void SetLightPosition(float x, float y, float z);
    void SetLightPosition(Vertex Position);
    Vertex GetLightPosition() const;

    void SetAttenuation(float a, float b, float c);
    void SetAttenuationA(float value);
    void SetAttenuationB(float value);
    void SetAttenuationC(float value);
    float GetAttenuationA();
    float GetAttenuationB();
    float GetAttenuationC();

    COLORREF CalculateLightShared(const Model& currentModel, const Vertex& currentVertex, const Vector3D& currentNormal, COLORREF colorIn);

    COLORREF CalculateLight(const Model& currentModel, const Polygon3D& currentPolygon, COLORREF colorIn);
    COLORREF CalculateLight(const Model& currentModel, const Vertex& currentVertex, COLORREF colorIn);

    PointLight& operator= (const PointLight& rhs);

private:
    Vertex _lightPosition;

    float _attenuationA;
    float _attenuationB;
    float _attenuationC;

    void Copy(const PointLight& other);
};

