/* * $Id: collision.h,v 1.15 2002/07/19 20:33:28 msell Exp $ * * * $Log: collision.h,v $ * Revision 1.15 2002/07/19 20:33:28 msell * #pragma once -> #ifndef * * Revision 1.14 2002/07/15 20:32:35 msell * Uudet valot ja ulkoasun parantelua * * Revision 1.13 2002/07/14 21:40:43 msell * Conflictit pois, liikkumiset (hyppy, kävely, lyönti), uusi areena * * Revision 1.12 2002/07/10 17:13:44 msell * Törmäystarkastelun parantelua * * Revision 1.11 2002/07/08 22:53:38 msell * Säätöä * * Revision 1.10 2002/07/08 18:28:47 msell * Törmäystä ja ukkoja * * Revision 1.9 2002/07/07 23:05:22 msell * Osien liimaaminen toisiinsa (kesken) * * Revision 1.8 2002/07/07 15:29:07 msell * Törmäyksien parantelua * * Revision 1.7 2002/07/04 21:05:41 msell * Se toimii!! =) * Törmäystarkistukset siis * * Revision 1.6 2002/06/30 16:05:04 msell * Törmäyksien parantelua, transformaatioita mukana * * Revision 1.5 2002/06/27 14:39:48 msell * Toimiva maila :) * Pyörivät kappaleet siis antaa liike-energiaa liikkuville kappaleille (ei toisin päin vielä) * * Revision 1.4 2002/06/27 00:08:04 msell * Kimmotukset palloille myös pyöritettyihin mesheihin * * Revision 1.3 2002/06/23 20:12:19 msell * Parempi törmäystarkistus palloista mesheihin * * Revision 1.2 2002/06/14 00:05:05 msell * Törmäyssimulaatio kunnossa toivon mukaan * * Revision 1.1 2002/06/11 23:11:45 msell * Törmäystarkistusta * * * * $Date: 2002/07/19 20:33:28 $ * */ #ifndef __COLLISION_H_INCLUDED__ #define __COLLISION_H_INCLUDED__ #include "mesh.h" #define COLLISIONGROUP_NONE 0 #define COLLISIONGROUP_ARENA 1 #define COLLISIONGROUP_MAN1 2 #define COLLISIONGROUP_MAN1HAND 3 #define COLLISIONGROUP_MAN2 4 #define COLLISIONGROUP_MAN2HAND 5 #define COLLISIONGROUP_PARTICLE 6 #define COLLISIONFRICTION 0.9 void initCollisions(void); //void addCollisionObject(Object *object, int group); void addCollisionLink(int source, int target); void removeCollisionLink(int source, int target); bool isCollisionLink(int source, int target); class Contact{ public: Object *object1, *object2; float normal[3]; float position[3]; }; extern Contact *contacts; extern int contactcount; //Contact point is world-relative and must be transformed //into coordinate system of both objects void addCollision(Object *source, Object *target, float *normal, float *contactpoint); bool handleCollision(Contact *contact); bool handleLink(ObjectLink *link); bool checkSphereMeshCollision(float *sphereposition, float r, Mesh *mesh, float *normal, float *contactpoint); bool checkPointMeshCollision(float *position, Mesh *mesh, float *normal, float *contactpoint); bool checkEdgeMeshCollision(float *p1, float *p2, Mesh *mesh, float *normal, float *contactpoint); #endif