#pragma once
#include "Light.h"

class DirectionalLight :
    public Light
{
public:
    DirectionalLight(Vector3D lightDirection);
    DirectionalLight(Vector3D lightDirection, int red, int green, int blue);
    DirectionalLight(const DirectionalLight& other);

    void SetLightDirection(float x, float y, float z);
    void SetLightDirection(Vector3D direction);
    Vector3D GetLightDirection() const;
    
    COLORREF CalculateLightShared(const Model& currentModel, 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);

    DirectionalLight& operator= (const DirectionalLight& rhs);

private:    
    Vector3D _lightDirection;
    Vector3D _normalizedLightDirection;

    void Copy(const DirectionalLight& other);
};

