Ignore:
Timestamp:
Jul 15, 2012, 1:17:00 PM (10 years ago)
Author:
touky
Message:

Added Collision group & mask support.
+ weird racist test : the primitives only collide with their same type.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/Physics/EasyPhysics.h

    r1607 r1631  
    4343        void SetShapeToCapsule(float radius, float height);
    4444
     45        void CustomSetCollisionChannel(int NewGroup, int NewMask);
    4546        void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation=lol::quat(lol::mat4(1.0f)));
    4647        void SetMass(float mass);
     
    5657
    5758        btRigidBody*                                                            m_rigid_body;
    58         btScalar                                                                        m_mass;
    5959        btVector3                                                                       m_local_inertia;
    6060
    6161        btCollisionShape*                                                       m_collision_shape;
    6262        btMotionState*                                                          m_motion_state;
    63 
    64         lol::mat4                                                                       m_local_to_world;
    6563#else
    6664public:
     
    7371        void SetShapeToCapsule(float radius, float height) { }
    7472
     73        void CustomSetCollisionChannel(int NewGroup, int NewMask) { }
    7574        void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation=lol::quat(lol::mat4(1.0f))) { }
    7675        void SetMass(float mass) { }
     
    7978        mat4 GetTransform() { return mat4(1.0f); }
    8079#endif
     80
     81public:
     82        //Sets the collision Group & Mask.
     83        //Mask can change at runtime, not group !
     84        void SetCollisionChannel(int NewGroup, int NewMask)
     85        {
     86                m_collision_group = (1<<NewGroup);
     87                m_collision_mask = NewMask;
     88                CustomSetCollisionChannel(NewGroup, NewMask);
     89        }
     90        int GetCollisionGroup() { return m_collision_group; }
     91        int GetCollisionMask()  { return m_collision_mask; }
     92
     93protected:
     94        lol::mat4                                                                       m_local_to_world;
     95        float                                                                           m_mass;
     96        int                                                                                     m_collision_group;
     97        int                                                                                     m_collision_mask;
    8198};
    8299
Note: See TracChangeset for help on using the changeset viewer.