C++/BMX question
BlitzMax Forums/BlitzMax Programming/C++/BMX question| 
 | ||
| This is my C++ function.  I call this from BlitzMax and my C++ library fills in the pick values, if something is picked: 		int EntityRaycast(Leadwerks3D::Entity* entity, float x0, float y0, float z0, float x1, float y1, float z1, float* pick, float radius, int closest, int recursive)
		{
			Leadwerks3D::Pick p;
			bool result;
			
			result = entity->Raycast(Leadwerks3D::Vec3(x0,y0,z0),Leadwerks3D::Vec3(x1,y1,z1),p,radius,closest,recursive);
			if (result)
			{
				pick[0] = p.position.x;
				pick[1] = p.position.y;
				pick[2] = p.position.z;
				pick[3] = p.normal.x;
				pick[4] = p.normal.y;
				pick[5] = p.normal.z;
				memcpy(&pick[6],&p.entity,4);
				memcpy(&pick[7],&p.surface,4);
				memcpy(&pick[8],&p.face,4);
				memcpy(&pick[9],&p.triangle,4);
			}
			return result;
		}This is the raycast/pick structure in C++: 	class Pick
	{
	public:
		Vec3 position;
		Vec3 normal;
		Entity* entity;
		Surface* surface;
		Face* face;
		int triangle;
	};This is the structure in BlitzMax: Type TRaycast Field x:Float,y:Float,z:Float Field nx:Float,ny:Float,nz:Float Field entity:LEEntity Field surface:LESurface Field face:LEFace Field triangle:Int EndType Am I doing this right? I suspect I am causing memory overwrite errors. Last edited 2012 | 
| 
 | ||
| Bah, I was passing a NULL BMX object to the function. X\ It works fine now. |