mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 18:56:55 +02:00
move collision group consts to shared lib
This commit is contained in:
parent
a989998816
commit
ec0b4a956a
6 changed files with 85 additions and 57 deletions
|
@ -10,7 +10,7 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <PhysicsHelpers.h>
|
#include <PhysicsHelpers.h>
|
||||||
#include <PhysicsEngine.h>
|
#include <PhysicsCollisionGroups.h>
|
||||||
|
|
||||||
#include "Avatar.h"
|
#include "Avatar.h"
|
||||||
#include "AvatarMotionState.h"
|
#include "AvatarMotionState.h"
|
||||||
|
|
|
@ -3,9 +3,10 @@
|
||||||
#include <BulletCollision/CollisionDispatch/btCollisionWorld.h>
|
#include <BulletCollision/CollisionDispatch/btCollisionWorld.h>
|
||||||
#include <LinearMath/btDefaultMotionState.h>
|
#include <LinearMath/btDefaultMotionState.h>
|
||||||
|
|
||||||
|
#include <PhysicsCollisionGroups.h>
|
||||||
|
|
||||||
#include "BulletUtil.h"
|
#include "BulletUtil.h"
|
||||||
#include "DynamicCharacterController.h"
|
#include "DynamicCharacterController.h"
|
||||||
#include "PhysicsEngine.h"
|
|
||||||
|
|
||||||
const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f);
|
const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f);
|
||||||
const float DEFAULT_GRAVITY = -5.0f;
|
const float DEFAULT_GRAVITY = -5.0f;
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include <EntityItem.h>
|
#include <EntityItem.h>
|
||||||
#include <EntityEditPacketSender.h>
|
#include <EntityEditPacketSender.h>
|
||||||
|
#include <PhysicsCollisionGroups.h>
|
||||||
|
|
||||||
#include "BulletUtil.h"
|
#include "BulletUtil.h"
|
||||||
#include "EntityMotionState.h"
|
#include "EntityMotionState.h"
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#include <PhysicsCollisionGroups.h>
|
||||||
|
|
||||||
#include "ObjectMotionState.h"
|
#include "ObjectMotionState.h"
|
||||||
#include "PhysicsEngine.h"
|
#include "PhysicsEngine.h"
|
||||||
#include "PhysicsHelpers.h"
|
#include "PhysicsHelpers.h"
|
||||||
|
|
|
@ -25,61 +25,6 @@
|
||||||
#include "ObjectMotionState.h"
|
#include "ObjectMotionState.h"
|
||||||
#include "ThreadSafeDynamicsWorld.h"
|
#include "ThreadSafeDynamicsWorld.h"
|
||||||
|
|
||||||
/* Note: These are the collision groups defined in btBroadphaseProxy. Only
|
|
||||||
* DefaultFilter and StaticFilter are explicitly used by Bullet (when the
|
|
||||||
* collision filter of an object is not manually specified), the rest are
|
|
||||||
* merely suggestions.
|
|
||||||
*
|
|
||||||
enum CollisionFilterGroups {
|
|
||||||
DefaultFilter = 1,
|
|
||||||
StaticFilter = 2,
|
|
||||||
KinematicFilter = 4,
|
|
||||||
DebrisFilter = 8,
|
|
||||||
SensorTrigger = 16,
|
|
||||||
CharacterFilter = 32,
|
|
||||||
AllFilter = -1
|
|
||||||
}
|
|
||||||
*
|
|
||||||
* When using custom collision filters we pretty much need to do all or nothing.
|
|
||||||
* We'll be doing it all which means we define our own groups and build custom masks
|
|
||||||
* for everything.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
const int16_t COLLISION_GROUP_DEFAULT = 1 << 0;
|
|
||||||
const int16_t COLLISION_GROUP_STATIC = 1 << 1;
|
|
||||||
const int16_t COLLISION_GROUP_KINEMATIC = 1 << 2;
|
|
||||||
const int16_t COLLISION_GROUP_DEBRIS = 1 << 3;
|
|
||||||
const int16_t COLLISION_GROUP_TRIGGER = 1 << 4;
|
|
||||||
const int16_t COLLISION_GROUP_MY_AVATAR = 1 << 5;
|
|
||||||
const int16_t COLLISION_GROUP_OTHER_AVATAR = 1 << 6;
|
|
||||||
const int16_t COLLISION_GROUP_MY_ATTACHMENT = 1 << 7;
|
|
||||||
const int16_t COLLISION_GROUP_OTHER_ATTACHMENT = 1 << 8;
|
|
||||||
// ...
|
|
||||||
const int16_t COLLISION_GROUP_COLLISIONLESS = 1 << 15;
|
|
||||||
|
|
||||||
|
|
||||||
/* Note: In order for objectA to collide with objectB at the filter stage
|
|
||||||
* both (groupA & maskB) and (groupB & maskA) must be non-zero.
|
|
||||||
*/
|
|
||||||
// DEFAULT collides with everything except COLLISIONLESS
|
|
||||||
const int16_t COLLISION_MASK_DEFAULT = ~ COLLISION_GROUP_COLLISIONLESS;
|
|
||||||
const int16_t COLLISION_MASK_STATIC = COLLISION_MASK_DEFAULT;
|
|
||||||
const int16_t COLLISION_MASK_KINEMATIC = COLLISION_MASK_DEFAULT;
|
|
||||||
// DEBRIS also doesn't collide with: other DEBRIS, and TRIGGER
|
|
||||||
const int16_t COLLISION_MASK_DEBRIS = ~ (COLLISION_GROUP_COLLISIONLESS
|
|
||||||
| COLLISION_GROUP_DEBRIS
|
|
||||||
| COLLISION_GROUP_TRIGGER);
|
|
||||||
// TRIGGER also doesn't collide with: DEBRIS, TRIGGER, and STATIC (TRIGGER only detects moveable things that matter)
|
|
||||||
const int16_t COLLISION_MASK_TRIGGER = COLLISION_MASK_DEBRIS & ~(COLLISION_GROUP_STATIC);
|
|
||||||
// AVATAR also doesn't collide with: corresponding ATTACHMENT
|
|
||||||
const int16_t COLLISION_MASK_MY_AVATAR = ~(COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_MY_ATTACHMENT);
|
|
||||||
const int16_t COLLISION_MASK_MY_ATTACHMENT = ~(COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_MY_AVATAR);
|
|
||||||
const int16_t COLLISION_MASK_OTHER_AVATAR = ~(COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_OTHER_ATTACHMENT);
|
|
||||||
const int16_t COLLISION_MASK_OTHER_ATTACHMENT = ~(COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_OTHER_AVATAR);
|
|
||||||
// ...
|
|
||||||
const int16_t COLLISION_MASK_COLLISIONLESS = 0;
|
|
||||||
|
|
||||||
const float HALF_SIMULATION_EXTENT = 512.0f; // meters
|
const float HALF_SIMULATION_EXTENT = 512.0f; // meters
|
||||||
|
|
||||||
// simple class for keeping track of contacts
|
// simple class for keeping track of contacts
|
||||||
|
|
79
libraries/shared/src/PhysicsCollisionGroups.h
Normal file
79
libraries/shared/src/PhysicsCollisionGroups.h
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
//
|
||||||
|
// PhysicsCollisionGroups.h
|
||||||
|
// libraries/shared/src
|
||||||
|
//
|
||||||
|
// Created by Andrew Meadows 2015.06.03
|
||||||
|
// Copyright 2015 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef hifi_PhysicsCollisionGroups_h
|
||||||
|
#define hifi_PhysicsCollisionGroups_h
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/* Note: These are the Bullet collision groups defined in btBroadphaseProxy. Only
|
||||||
|
* DefaultFilter and StaticFilter are explicitly used by Bullet (when the collision
|
||||||
|
* filter of an object is not manually specified), the rest are merely suggestions.
|
||||||
|
*
|
||||||
|
enum CollisionFilterGroups {
|
||||||
|
DefaultFilter = 1,
|
||||||
|
StaticFilter = 2,
|
||||||
|
KinematicFilter = 4,
|
||||||
|
DebrisFilter = 8,
|
||||||
|
SensorTrigger = 16,
|
||||||
|
CharacterFilter = 32,
|
||||||
|
AllFilter = -1
|
||||||
|
}
|
||||||
|
*
|
||||||
|
* When using custom collision filters we pretty much need to do all or nothing.
|
||||||
|
* We'll be doing it all which means we define our own groups and build custom masks
|
||||||
|
* for everything.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
const int16_t COLLISION_GROUP_DEFAULT = 1 << 0;
|
||||||
|
const int16_t COLLISION_GROUP_STATIC = 1 << 1;
|
||||||
|
const int16_t COLLISION_GROUP_KINEMATIC = 1 << 2;
|
||||||
|
const int16_t COLLISION_GROUP_DEBRIS = 1 << 3;
|
||||||
|
const int16_t COLLISION_GROUP_TRIGGER = 1 << 4;
|
||||||
|
const int16_t COLLISION_GROUP_MY_AVATAR = 1 << 5;
|
||||||
|
const int16_t COLLISION_GROUP_OTHER_AVATAR = 1 << 6;
|
||||||
|
const int16_t COLLISION_GROUP_MY_ATTACHMENT = 1 << 7;
|
||||||
|
const int16_t COLLISION_GROUP_OTHER_ATTACHMENT = 1 << 8;
|
||||||
|
// ...
|
||||||
|
const int16_t COLLISION_GROUP_COLLISIONLESS = 1 << 15;
|
||||||
|
|
||||||
|
|
||||||
|
/* Note: In order for objectA to collide with objectB at the filter stage
|
||||||
|
* both (groupA & maskB) and (groupB & maskA) must be non-zero.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// DEFAULT collides with everything except COLLISIONLESS
|
||||||
|
const int16_t COLLISION_MASK_DEFAULT = ~ COLLISION_GROUP_COLLISIONLESS;
|
||||||
|
|
||||||
|
// STATIC also doesn't collide with other STATIC
|
||||||
|
const int16_t COLLISION_MASK_STATIC = ~ (COLLISION_GROUP_COLLISIONLESS | COLLISION_MASK_STATIC);
|
||||||
|
|
||||||
|
const int16_t COLLISION_MASK_KINEMATIC = COLLISION_MASK_DEFAULT;
|
||||||
|
|
||||||
|
// DEBRIS also doesn't collide with other DEBRIS, or TRIGGER
|
||||||
|
const int16_t COLLISION_MASK_DEBRIS = ~ (COLLISION_GROUP_COLLISIONLESS
|
||||||
|
| COLLISION_GROUP_DEBRIS
|
||||||
|
| COLLISION_GROUP_TRIGGER);
|
||||||
|
|
||||||
|
// TRIGGER also doesn't collide with DEBRIS, TRIGGER, or STATIC (TRIGGER only detects moveable things that matter)
|
||||||
|
const int16_t COLLISION_MASK_TRIGGER = COLLISION_MASK_DEBRIS & ~(COLLISION_GROUP_STATIC);
|
||||||
|
|
||||||
|
// AVATAR also doesn't collide with corresponding ATTACHMENTs
|
||||||
|
const int16_t COLLISION_MASK_MY_AVATAR = ~(COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_MY_ATTACHMENT);
|
||||||
|
const int16_t COLLISION_MASK_MY_ATTACHMENT = ~(COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_MY_AVATAR);
|
||||||
|
const int16_t COLLISION_MASK_OTHER_AVATAR = ~(COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_OTHER_ATTACHMENT);
|
||||||
|
const int16_t COLLISION_MASK_OTHER_ATTACHMENT = ~(COLLISION_GROUP_COLLISIONLESS | COLLISION_GROUP_OTHER_AVATAR);
|
||||||
|
|
||||||
|
// COLLISIONLESS gets an empty mask.
|
||||||
|
const int16_t COLLISION_MASK_COLLISIONLESS = 0;
|
||||||
|
|
||||||
|
#endif // hifi_PhysicsCollisionGroups_h
|
Loading…
Reference in a new issue