Skip to content

Commit

Permalink
pass by value all geometry
Browse files Browse the repository at this point in the history
  • Loading branch information
malytomas committed Oct 22, 2023
1 parent 95b973c commit 0ea7cbb
Show file tree
Hide file tree
Showing 14 changed files with 500 additions and 500 deletions.
46 changes: 23 additions & 23 deletions sources/include/cage-core/collider.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ namespace cage

PointerRange<const Triangle> triangles() const;

void addTriangle(const Triangle &t);
void addTriangle(Triangle t);
void addTriangles(PointerRange<const Triangle> tris);

void optimize(); // removes duplicated triangles

void rebuild();
bool needsRebuild() const;

const Aabb &box() const;
Aabb box() const;
};

CAGE_CORE_API Holder<Collider> newCollider();
Expand All @@ -52,7 +52,7 @@ namespace cage
{
CollisionDetectionConfig() = default;
explicit CollisionDetectionConfig(const Collider *ao, const Collider *bo) : ao(ao), bo(bo) {}
explicit CollisionDetectionConfig(const Collider *ao, const Collider *bo, const Transform &at, const Transform &bt) : at1(at), bt1(bt), at2(at), bt2(bt), ao(ao), bo(bo) {}
explicit CollisionDetectionConfig(const Collider *ao, const Collider *bo, Transform at, Transform bt) : at1(at), bt1(bt), at2(at), bt2(bt), ao(ao), bo(bo) {}

// inputs
Transform at1;
Expand All @@ -70,26 +70,26 @@ namespace cage

CAGE_CORE_API bool collisionDetection(CollisionDetectionConfig &params);

CAGE_CORE_API Real distance(const Line &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API Real distance(const Triangle &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API Real distance(const Plane &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API Real distance(const Sphere &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API Real distance(const Aabb &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API Real distance(const Cone &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API Real distance(const Frustum &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API Real distance(const Collider *ao, const Collider *bo, const Transform &at, const Transform &bt);

CAGE_CORE_API bool intersects(const Line &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API bool intersects(const Triangle &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API bool intersects(const Plane &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API bool intersects(const Sphere &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API bool intersects(const Aabb &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API bool intersects(const Cone &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API bool intersects(const Frustum &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API bool intersects(const Collider *ao, const Collider *bo, const Transform &at, const Transform &bt);

CAGE_CORE_API Vec3 intersection(const Line &shape, const Collider *collider, const Transform &t);
CAGE_CORE_API Vec3 intersection(const Line &shape, const Collider *collider, const Transform &t, uint32 &triangleIndex);
CAGE_CORE_API Real distance(Line shape, const Collider *collider, Transform t);
CAGE_CORE_API Real distance(Triangle shape, const Collider *collider, Transform t);
CAGE_CORE_API Real distance(Plane shape, const Collider *collider, Transform t);
CAGE_CORE_API Real distance(Sphere shape, const Collider *collider, Transform t);
CAGE_CORE_API Real distance(Aabb shape, const Collider *collider, Transform t);
CAGE_CORE_API Real distance(Cone shape, const Collider *collider, Transform t);
CAGE_CORE_API Real distance(const Frustum &shape, const Collider *collider, Transform t);
CAGE_CORE_API Real distance(const Collider *ao, const Collider *bo, Transform at, Transform bt);

CAGE_CORE_API bool intersects(Line shape, const Collider *collider, Transform t);
CAGE_CORE_API bool intersects(Triangle shape, const Collider *collider, Transform t);
CAGE_CORE_API bool intersects(Plane shape, const Collider *collider, Transform t);
CAGE_CORE_API bool intersects(Sphere shape, const Collider *collider, Transform t);
CAGE_CORE_API bool intersects(Aabb shape, const Collider *collider, Transform t);
CAGE_CORE_API bool intersects(Cone shape, const Collider *collider, Transform t);
CAGE_CORE_API bool intersects(const Frustum &shape, const Collider *collider, Transform t);
CAGE_CORE_API bool intersects(const Collider *ao, const Collider *bo, Transform at, Transform bt);

CAGE_CORE_API Vec3 intersection(Line shape, const Collider *collider, Transform t);
CAGE_CORE_API Vec3 intersection(Line shape, const Collider *collider, Transform t, uint32 &triangleIndex);

CAGE_CORE_API AssetScheme genAssetSchemeCollider();
constexpr uint32 AssetSchemeIndexCollider = 3;
Expand Down
18 changes: 9 additions & 9 deletions sources/include/cage-core/collisionStructure.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,27 +19,27 @@ namespace cage
PointerRange<CollisionPair> collisionPairs() const;

// finds arbitrary collision, if any
bool query(const Collider *collider, const Transform &t);
bool query(const Collider *collider, Transform t);

// finds a collision that is first in time, if any
bool query(const Collider *collider, const Transform &t1, const Transform &t2); // t1 and t2 are initial and final transformations
bool query(const Collider *collider, Transform t1, Transform t2); // t1 and t2 are initial and final transformations

// finds a collision that is first along the line, if any
bool query(const Line &shape);
bool query(Line shape);

// finds arbitrary collision, if any
bool query(const Triangle &shape);
bool query(const Plane &shape);
bool query(const Sphere &shape);
bool query(const Aabb &shape);
bool query(const Cone &shape);
bool query(Triangle shape);
bool query(Plane shape);
bool query(Sphere shape);
bool query(Aabb shape);
bool query(Cone shape);
bool query(const Frustum &shape);
};

class CAGE_CORE_API CollisionStructure : private Immovable
{
public:
void update(uint32 name, Holder<const Collider> collider, const Transform &t);
void update(uint32 name, Holder<const Collider> collider, Transform t);
void remove(uint32 name);
void clear();
void rebuild();
Expand Down
Loading

0 comments on commit 0ea7cbb

Please sign in to comment.