Инструмент взаимодействует со светом
This commit is contained in:
		
							parent
							
								
									ff73d64e06
								
							
						
					
					
						commit
						de0a6beea8
					
				| @ -32,13 +32,18 @@ class Bulb | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Класс лампочки (точечный источник с возможностью отладочного вывода)
 | // Класс лампочки (точечный источник с возможностью отладочного вывода)
 | ||||||
| class BulbDebug | class BulbDebug : public I_Movable | ||||||
| { | { | ||||||
|     public: |     public: | ||||||
|         BulbDebug(Bulb* ref = NULL); // Конструктор с привязкой к источнику
 |         BulbDebug(Bulb* ref = NULL); // Конструктор с привязкой к источнику
 | ||||||
|         |         | ||||||
|         void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Отрисовка отладочной лампы и сферы
 |         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; |         Bulb* data; | ||||||
|     private: |     private: | ||||||
|         static GrouptedModel bulb_model; |         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[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)); |     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