@@ -37,15 +37,6 @@ static btTransform entityToBtTransform(our::Entity* entity) {
3737
3838namespace gameplay {
3939
40- inline short layerStringToGroup (const std::string& layer) {
41- if (layer == " player" ) return CollisionLayer::LAYER_PLAYER ;
42- if (layer == " enemy" ) return CollisionLayer::LAYER_ENEMY ;
43- if (layer == " environment" ) return CollisionLayer::LAYER_ENVIRONMENT ;
44- if (layer == " projectile" ) return CollisionLayer::LAYER_PROJECTILE ;
45- if (layer == " trigger" ) return CollisionLayer::LAYER_TRIGGER ;
46- return 0 ; // default to no layer
47- }
48-
4940 inline short getMaskForLayer (short group) {
5041 switch (group) {
5142 case LAYER_PLAYER :
@@ -179,9 +170,9 @@ namespace gameplay {
179170 if (colliderA->isTrigger || colliderB->isTrigger ) continue ;
180171
181172 // push back logic (don't push environments)
182- if (colliderA->layer == " environment " ) {
173+ if (colliderA->layer == CollisionLayer:: LAYER_ENVIRONMENT ) {
183174 event.entityB ->localTransform .position -= event.normal * event.penetrationDepth ;
184- } else if (colliderB->layer == " environment " ) {
175+ } else if (colliderB->layer == CollisionLayer:: LAYER_ENVIRONMENT ) {
185176 event.entityA ->localTransform .position += event.normal * event.penetrationDepth ;
186177 } else { // this may be edited or removed later
187178 event.entityA ->localTransform .position -= event.normal * (event.penetrationDepth / 2 .0f );
@@ -191,18 +182,17 @@ namespace gameplay {
191182 }
192183
193184 // On-demand function
194- HitInfo CollisionSystem::raycast (const Ray& ray, float maxDistance, const std::string targetLayer) const {
185+ HitInfo CollisionSystem::raycast (const Ray& ray, float maxDistance, const short targetLayer) const {
195186 HitInfo hitInfo;
196187
197188 if (!collisionWorld) return hitInfo;
198189 btVector3 from = glmToBtVec3 (ray.origin );
199190 btVector3 to = glmToBtVec3 (ray.origin + ray.direction * maxDistance);
200191
201192 btCollisionWorld::ClosestRayResultCallback callback (from, to);
202- if (!targetLayer.empty ()) {
203- callback.m_collisionFilterGroup = btBroadphaseProxy::AllFilter; // check against all layers
204- callback.m_collisionFilterMask = layerStringToGroup (targetLayer); // only collide with the target layer
205- }
193+
194+ callback.m_collisionFilterGroup = btBroadphaseProxy::AllFilter; // check against all layers
195+ callback.m_collisionFilterMask = targetLayer; // only collide with the target layer
206196
207197 collisionWorld->rayTest (from, to, callback);
208198
@@ -218,21 +208,13 @@ namespace gameplay {
218208 }
219209
220210 // On-demand function
221- std::vector<our::Entity*> CollisionSystem::overlapSphere (const glm::vec3& center, float radius,
222- std::string targetLayer) {
211+ std::vector<our::Entity*> CollisionSystem::overlapSphere (const glm::vec3& center, float radius, short targetLayer) {
223212 std::vector<our::Entity*> results;
224213 if (!collisionWorld) return results;
225214
226- short targetMask = 0 ;
227- if (!targetLayer.empty ()) {
228- targetMask = layerStringToGroup (targetLayer);
229- }
230-
231215 for (const auto & [entity, obj] : entityToBullet) {
232- if (targetMask != 0 ) {
233- short objGroup = obj->getBroadphaseHandle ()->m_collisionFilterGroup ;
234- if ((objGroup & targetMask) == 0 ) continue ;
235- }
216+ short objGroup = obj->getBroadphaseHandle ()->m_collisionFilterGroup ;
217+ if ((objGroup & targetLayer) == 0 ) continue ;
236218
237219 glm::vec3 entityPos = btToGlmVec3 (obj->getWorldTransform ().getOrigin ());
238220
@@ -276,12 +258,12 @@ namespace gameplay {
276258 obj->setUserPointer (entity); // so we can go back to the entity
277259
278260 // Mark non-environment objects as KINEMATIC.
279- if (collider->layer != " environment " ) {
261+ if (collider->layer != CollisionLayer:: LAYER_ENVIRONMENT ) {
280262 obj->setCollisionFlags (obj->getCollisionFlags () | btCollisionObject::CF_KINEMATIC_OBJECT );
281263 }
282264
283265 // Add to Bullet world with layer filtering
284- short group = layerStringToGroup ( collider->layer ) ;
266+ short group = collider->layer ;
285267 short mask = getMaskForLayer (group);
286268 collisionWorld->addCollisionObject (obj, group, mask);
287269 entityToBullet[entity] = obj;
0 commit comments