MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / CollisionMesh

Method CollisionMesh

TombEngine/Physics/Objects/CollisionMesh.cpp:134–160  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

132 }
133
134 CollisionMesh::CollisionMesh(const Vector3& pos, const Quaternion& orient, const CollisionMeshDesc& desc)
135 {
136 _position = pos;
137 _orientation = orient;
138 _vertices = desc.GetVertices();
139
140 // Add triangles.
141 for (int i = 0; i < desc.GetIds().size(); i += LocalCollisionTriangle::VERTEX_COUNT)
142 _triangles.push_back(LocalCollisionTriangle(desc.GetIds()[i], desc.GetIds()[i + 1], desc.GetIds()[i + 2]));
143
144 auto triIds = std::vector<int>{};
145 triIds.reserve(_triangles.size());
146 auto triAabbs = std::vector<BoundingBox>{};
147 triAabbs.reserve(_triangles.size());
148
149 // Collect triangle IDs and AABBs.
150 for (int i = 0; i < _triangles.size(); i++)
151 {
152 const auto& tri = _triangles[i];
153
154 triIds.push_back(i);
155 triAabbs.push_back(tri.GetAabb(_vertices));
156 }
157
158 // Create triangle tree.
159 _triangleTree = Bvh(triIds, triAabbs);
160 }
161
162 std::optional<CollisionMeshRayCollisionData> CollisionMesh::GetCollision(const Ray& ray, float dist) const
163 {

Callers

nothing calls this directly

Calls 6

GetIdsMethod · 0.80
sizeMethod · 0.45
push_backMethod · 0.45
reserveMethod · 0.45
GetAabbMethod · 0.45

Tested by

no test coverage detected