/************************************************************************************//*! \file Light.hxx \author Tng Kah Wei, kahwei.tng, 390009620 \par email: kahwei.tng\@digipen.edu \date Nov 8, 2022 \brief Contains the definition of the managed Light class with the declaration of functions for working with it. Note: This file is written in C++17/CLI. Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or disclosure of this file or its contents without the prior written consent of DigiPen Institute of Technology is prohibited. *//*************************************************************************************/ #pragma once // Project Includes #include "Components/Component.hxx" #include "Math/Vector3.hxx" // External Dependencies #include "Graphics/MiddleEnd/Lights/SHLightComponent.h" namespace SHADE { /// /// CLR version of the SHADE Engine's SHLightComponent. /// public ref class Light : public Component { internal: /*-----------------------------------------------------------------------------*/ /* Constructors */ /*-----------------------------------------------------------------------------*/ /// /// Constructs a Light Component that represents a native Light component tied to /// the specified Entity. /// /// Entity that this Component will be tied to. Light(Entity entity); public: /*-----------------------------------------------------------------------------*/ /* Constants */ /*-----------------------------------------------------------------------------*/ /// /// Supported types of the Light Component. /// enum class Type { /// /// Light applied uniformly across the scene at a specified direction. /// Directional, /// /// Light that originates from a certain point in all directions. /// Not implemented yet. /// Point, /// /// Light that originates from a certain point within a angle. /// Not implemented yet. /// Spot, /// /// Light applied to all objects. Has no source point. /// Ambient }; /*-----------------------------------------------------------------------------*/ /* Properties */ /*-----------------------------------------------------------------------------*/ /// /// Position of the light. Only works for Point Light (unimplemented). /// [System::ObsoleteAttribute("Not implemented yet.", true)] property Vector3 Position { Vector3 get(); void set(Vector3 val); } /// /// Type of lighting that this Light component will apply onto the scene. /// property Type LightType { Type get(); void set(Type val); } /// /// Direction of the light. Only applicable for Directional Lights. /// property Vector3 Direction { Vector3 get(); void set(Vector3 val); } /// /// Colour of the Light. /// property SHADE::Color Color { SHADE::Color get(); void set(SHADE::Color val); } /// /// Culling mask that is used to control what types of Materials would be /// affected by this Light. /// property System::UInt32 CullingMask { System::UInt32 get(); void set(System::UInt32 val); } /// /// Intensity of the Light /// property float Strength { float get(); void set(float val); } }; }