-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSpotLight.cpp
More file actions
56 lines (48 loc) · 1.84 KB
/
SpotLight.cpp
File metadata and controls
56 lines (48 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "SpotLight.h"
#include <iostream>
SpotLight::SpotLight()
:PointLight()
, SpotLightDirection{ glm::vec3(1.f, 1.f, 1.f) },
Cutoff{ 0.f },
IsLightOn{ true }
{
SpotLightDirection = glm::normalize(SpotLightDirection);
ProcessedCutoff = cosf(glm::radians(Cutoff));
}
SpotLight::SpotLight
(glm::vec4 AmbientLightParams,
GLfloat DiffuseIntensity,
GLuint sMapWidth,
GLuint sMapHeight,
glm::vec3 LightPositionParams,
glm::vec3 EquationCoeffs,
GLfloat nPlane,
GLfloat fPlane,
glm::vec3 DirectionParams,
GLfloat EdgeValue)
:
PointLight(AmbientLightParams, DiffuseIntensity, sMapWidth,sMapHeight,LightPositionParams, EquationCoeffs,nPlane,fPlane),
SpotLightDirection{ DirectionParams },
Cutoff{ EdgeValue },
IsLightOn{true}
{
ProcessedCutoff = cosf(glm::radians(Cutoff));
SpotLightDirection = glm::normalize(SpotLightDirection);
}
void SpotLight::UseLight(GLuint AmbientColorLocation, GLuint AmbientIntensityLocation, GLuint DiffuseIntensityUniformLocation, GLuint LightPositionUniformLocation, GLuint CoeffAUniformLocation, GLuint CoeffBUniformLocation, GLuint CoeffCUniformLocation, GLuint DirectionUniformLocation, GLuint CutoffUniformLocation,GLuint LightStatus)
{
PointLight::UseLight(AmbientColorLocation,AmbientIntensityLocation,DiffuseIntensityUniformLocation,LightPositionUniformLocation, CoeffAUniformLocation, CoeffBUniformLocation, CoeffCUniformLocation);
glUniform3f(DirectionUniformLocation, SpotLightDirection.x, SpotLightDirection.y, SpotLightDirection.z);
glUniform1f(CutoffUniformLocation, ProcessedCutoff);
glUniform1i(LightStatus, IsLightOn);
}
void SpotLight::SetLocationAndDirection(glm::vec3 Poisiton, glm::vec3 lDirection)
{
LightPosition = Poisiton;
SpotLightDirection = lDirection;
SpotLightDirection = glm::normalize(SpotLightDirection);
}
void SpotLight::SetLightStatus(bool LightStatus)
{
IsLightOn = LightStatus;
}