75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								#include "DebugDrawer.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void DebugDrawer::drawLine(const btVector3& from, const btVector3& to, const btVector3& color)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (p_drawLine)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										// hl_make_dyn() expects a double pointer for hlt_bytes types
							 | 
						||
| 
								 | 
							
										// despite the function signature suggesting otherwise
							 | 
						||
| 
								 | 
							
										const btVector3* p_from = &from;
							 | 
						||
| 
								 | 
							
										const btVector3* p_to = &to;
							 | 
						||
| 
								 | 
							
										const btVector3* p_color = &color;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										vdynamic* args[3] = {
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&p_from, &hlt_bytes),
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&p_to, &hlt_bytes),
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&p_color, &hlt_bytes)
							 | 
						||
| 
								 | 
							
										};
							 | 
						||
| 
								 | 
							
										hl_dyn_call(p_drawLine, args, 3);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void DebugDrawer::drawContactPoint(const btVector3& PointOnB, const btVector3& normalOnB, btScalar distance, int lifeTime, const btVector3& color)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (p_drawContactPoint)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										const btVector3* p_PointOnB = &PointOnB;
							 | 
						||
| 
								 | 
							
										const btVector3* p_normalOnB = &normalOnB;
							 | 
						||
| 
								 | 
							
										const btVector3* p_color = &color;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										vdynamic* args[5] = {
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&p_PointOnB, &hlt_bytes),
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&p_normalOnB, &hlt_bytes),
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&distance, &hl_type_btScalar),
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&lifeTime, &hlt_i32),
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&p_color, &hlt_bytes)
							 | 
						||
| 
								 | 
							
										};
							 | 
						||
| 
								 | 
							
										hl_dyn_call(p_drawContactPoint, args, 5);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void DebugDrawer::reportErrorWarning(const char* warningString)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (p_reportErrorWarning)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										vdynamic* args[1] = {
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&warningString, &hlt_bytes)
							 | 
						||
| 
								 | 
							
										};
							 | 
						||
| 
								 | 
							
										hl_dyn_call(p_reportErrorWarning, args, 1);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void DebugDrawer::draw3dText(const btVector3& location, const char* textString)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if (p_draw3dText)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										const btVector3* p_location = &location;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										vdynamic* args[2] = {
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&p_location, &hlt_bytes),
							 | 
						||
| 
								 | 
							
											hl_make_dyn((void*)&textString, &hlt_bytes),
							 | 
						||
| 
								 | 
							
										};
							 | 
						||
| 
								 | 
							
										hl_dyn_call(p_draw3dText, args, 2);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void DebugDrawer::setDebugMode(int debugMode)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									m_debugMode = debugMode;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int DebugDrawer::getDebugMode() const
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									return m_debugMode;
							 | 
						||
| 
								 | 
							
								}
							 |