Инструмент взаимодействует со светом
This commit is contained in:
		
							parent
							
								
									ff73d64e06
								
							
						
					
					
						commit
						de0a6beea8
					
				| @ -32,13 +32,18 @@ class Bulb | ||||
| }; | ||||
| 
 | ||||
| // Класс лампочки (точечный источник с возможностью отладочного вывода)
 | ||||
| class BulbDebug | ||||
| class BulbDebug : public I_Movable | ||||
| { | ||||
|     public: | ||||
|         BulbDebug(Bulb* ref = NULL); // Конструктор с привязкой к источнику
 | ||||
|         | ||||
|         void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Отрисовка отладочной лампы и сферы
 | ||||
| 
 | ||||
|         virtual void dPosition(const glm::vec3& dvec); // Сдвинуть объект на dvec
 | ||||
|         virtual void dRotation(const glm::vec3& dvec); // Повернуть объект на dvec
 | ||||
|         virtual void dScale(const glm::vec3& dvec); // Увеличить объект на dvec
 | ||||
|         virtual const glm::vec3 getPos(); // Получить позицию объекта
 | ||||
| 
 | ||||
|         Bulb* data; | ||||
|     private: | ||||
|         static GrouptedModel bulb_model; | ||||
|  | ||||
| @ -158,3 +158,40 @@ void Bulb::recalc_pov() | ||||
|     vp[4] = shadowProj * glm::lookAt(position, position + glm::vec3( 0.0f,  0.0f,  1.0f), glm::vec3(0.0f, -1.0f,  0.0f)); | ||||
|     vp[5] = shadowProj * glm::lookAt(position, position + glm::vec3( 0.0f,  0.0f, -1.0f), glm::vec3(0.0f, -1.0f,  0.0f)); | ||||
| } | ||||
| 
 | ||||
| // Сдвинуть объект на dvec
 | ||||
| void BulbDebug::dPosition(const glm::vec3& dvec) | ||||
| { | ||||
|     if (data) | ||||
|         data->position += dvec; | ||||
| } | ||||
| 
 | ||||
| #include <glm/gtx/rotate_vector.hpp> | ||||
| // Повернуть объект на dvec
 | ||||
| void BulbDebug::dRotation(const glm::vec3& dvec) | ||||
| { | ||||
|     if (data) | ||||
|     { | ||||
|         data->direction = glm::rotateX(data->direction, 0.1f*dvec.x); | ||||
|         data->direction = glm::rotateY(data->direction, 0.1f*dvec.y); | ||||
|         data->direction = glm::rotateZ(data->direction, 0.1f*dvec.z); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Увеличить объект на dvec
 | ||||
| void BulbDebug::dScale(const glm::vec3& dvec) | ||||
| { | ||||
|     if (data) | ||||
|     { | ||||
|         data->radius += (dvec.x + dvec.y + dvec.z)*500; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Получить позицию объекта
 | ||||
| const glm::vec3 BulbDebug::getPos() | ||||
| { | ||||
|     if (data) | ||||
|         return data->position; | ||||
|     else | ||||
|         return glm::vec3(0); | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user