// // Created by Louis Auzuret on 2021-05-20. // #include "Component/Collision/CollisionComponent.hpp" namespace BBM { CollisionComponent::CollisionComponent(WAL::Entity &entity) : WAL::Component(entity) {} WAL::Component *CollisionComponent::clone(WAL::Entity &entity) const { return new CollisionComponent(entity); } CollisionComponent::CollisionComponent(WAL::Entity &entity, const WAL::Callback &onCollideCallback, const WAL::Callback &onCollidedCallback, Vector3f positionOffsetVector, Vector3f boundVector) : WAL::Component(entity), onCollide(onCollideCallback), onCollided(onCollidedCallback), bound(boundVector), positionOffset(positionOffsetVector) {} CollisionComponent::CollisionComponent(WAL::Entity &entity, const WAL::Callback &onCollideCallback, const WAL::Callback &onCollidedCallback, float positionOffsetFloat, float boundSize) : WAL::Component(entity), onCollide(onCollideCallback), onCollided(onCollidedCallback), bound({boundSize, boundSize, boundSize}), positionOffset({positionOffsetFloat, positionOffsetFloat, positionOffsetFloat}) {} CollisionComponent::CollisionComponent(WAL::Entity &entity, Vector3f positionOffsetVector, Vector3f boundVector) : WAL::Component(entity), onCollide(), onCollided(), bound(boundVector), positionOffset(positionOffsetVector) {} CollisionComponent::CollisionComponent(WAL::Entity &entity, float positionOffsetFloat, float boundSize) : WAL::Component(entity), onCollide(), onCollided(), bound({boundSize, boundSize, boundSize}), positionOffset({positionOffsetFloat, positionOffsetFloat, positionOffsetFloat}) {} CollisionComponent::CollidedAxis operator|(CollisionComponent::CollidedAxis first, CollisionComponent::CollidedAxis second) { return static_cast(static_cast(first) | static_cast(second)); } CollisionComponent::CollidedAxis &operator|=(CollisionComponent::CollidedAxis &self, CollisionComponent::CollidedAxis other) { int &selfI = reinterpret_cast(self); int otherI = static_cast(other); selfI |= otherI; return reinterpret_cast(selfI); } }