GPU-Accelerated Coverage  0.1.0
Compute coverage tours for known environment with articulated objects on GPU
Light.h
1 /*
2  * Copyright (c) 2018, Stefan Osswald
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright notice, this
9  * list of conditions and the following disclaimer.
10  *
11  * * Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * * Neither the name of the copyright holder nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef INCLUDE_ARTICULATION_LIGHT_H_
32 #define INCLUDE_ARTICULATION_LIGHT_H_
33 
34 #include <assimp/scene.h>
35 #include <glm/detail/type_vec3.hpp>
36 
37 namespace gpu_coverage {
38 
39 // Forward declarations
40 class Node;
41 
45 class Light {
46 public:
53  Light(const aiLight * const light, const size_t id, Node * node);
54 
58  virtual ~Light();
59 
64  void toDot(FILE *dot);
65 
70  size_t getId() const {
71  return id;
72  }
73 
80  const std::string& getName() const {
81  return name;
82  }
83 
88  Node* getNode() const {
89  return node;
90  }
91 
96  const glm::vec3& getDiffuse() const {
97  return diffuse;
98  }
99 
104  const glm::vec3& getAmbient() const {
105  return ambient;
106  }
107 
112  const glm::vec3& getSpecular() const {
113  return specular;
114  }
115 
120  aiLightSourceType getType() const {
121  return type;
122  }
123 
124 protected:
125  const size_t id;
126  const std::string name;
127  Node * const node;
128  const aiLightSourceType type;
129  const glm::vec3 diffuse;
130  const glm::vec3 ambient;
131  const glm::vec3 specular;
132 };
133 
134 } /* namespace gpu_coverage */
135 
136 #endif /* INCLUDE_ARTICULATION_LIGHT_H_ */
Node *const node
Scene graph node where this light source is attached, see getNode().
Definition: Light.h:127
virtual ~Light()
Destructor.
const glm::vec3 ambient
Ambient light color, see getAmbient().
Definition: Light.h:130
const glm::vec3 specular
Specular light color, see getSpecular().
Definition: Light.h:131
const aiLightSourceType type
Type of this light source, see getType()
Definition: Light.h:128
Light(const aiLight *const light, const size_t id, Node *node)
Constructor.
const std::string name
Name of this light source, see getName().
Definition: Light.h:126
size_t getId() const
Returns the unique ID of this light source.
Definition: Light.h:70
Represents a light source, corresponds to Assimp&#39;s aiLight structure.
Definition: Light.h:45
Scene graph node, corresponding to Assimp&#39;s aiNode.
Definition: Node.h:52
const glm::vec3 & getSpecular() const
Returns the specular light color.
Definition: Light.h:112
Node * getNode() const
Returns the scene graph node that this bone is attached to.
Definition: Light.h:88
void toDot(FILE *dot)
Write Graphviz Dot node representing this light source to file for debugging.
const glm::vec3 & getAmbient() const
Returns the ambient light color.
Definition: Light.h:104
Definition: AbstractCamera.h:41
aiLightSourceType getType() const
Returns the type of the light source.
Definition: Light.h:120
const std::string & getName() const
Returns the name of this light source for logging.
Definition: Light.h:80
const glm::vec3 diffuse
Diffuse light color, see getDiffuse().
Definition: Light.h:129
const size_t id
Unique ID, see getId().
Definition: Light.h:125
const glm::vec3 & getDiffuse() const
Returns the diffuse light color.
Definition: Light.h:96