28#include <glm/gtc/quaternion.hpp>
264 std::vector<std::pair<uint32_t, uint32_t>>
edges;
306 static constexpr float kMinMass = 1.0e-6f;
318 float safeMass = mass < kMinMass ? kMinMass : mass;
319 invMasses[vertexIndex] = 1.0f / safeMass;
Definition BoxCollider.hpp:27
SoftBodyType
Type of soft body for preset configurations.
Definition SoftBody.hpp:39
@ Cloth
2D grid for flags, capes, curtains
Definition SoftBody.hpp:41
@ Custom
User-defined configuration.
Definition SoftBody.hpp:40
@ Cube
3D volumetric soft body
Definition SoftBody.hpp:43
@ Rope
1D chain for ropes, cables, chains
Definition SoftBody.hpp:42
@ Pressure
Pressure-based soft body (balloons, inflatables).
Definition SoftBody.hpp:44
Soft body simulation settings.
Definition SoftBody.hpp:50
float linearDamping
Linear damping (velocity decay).
Definition SoftBody.hpp:59
static SoftBodySettings Cloth(float stiffness=0.5f)
Settings optimized for cloth simulation.
Definition SoftBody.hpp:121
uint32_t solverIterations
Number of solver iterations (higher = more accurate but slower).
Definition SoftBody.hpp:56
static SoftBodySettings Default()
Default soft body settings.
Definition SoftBody.hpp:114
float shearCompliance
Shear constraint compliance.
Definition SoftBody.hpp:89
float vertexRadius
Vertex collision radius (for collision detection).
Definition SoftBody.hpp:99
float edgeCompliance
Edge constraint compliance (0 = rigid, higher = softer).
Definition SoftBody.hpp:86
float restitution
Restitution (bounciness) [0, 1].
Definition SoftBody.hpp:72
float friction
Friction coefficient [0, 1].
Definition SoftBody.hpp:75
float gravityFactor
Gravity factor (1.0 = normal gravity).
Definition SoftBody.hpp:65
static SoftBodySettings Rope(float stiffness=0.9f)
Settings optimized for rope simulation.
Definition SoftBody.hpp:141
float maxLinearVelocity
Maximum linear velocity (m/s).
Definition SoftBody.hpp:62
float pressure
Definition SoftBody.hpp:79
float bendCompliance
Bend constraint compliance (FLT_MAX = disable bending).
Definition SoftBody.hpp:92
bool allowSleeping
Allow sleeping when stable.
Definition SoftBody.hpp:102
static SoftBodySettings Balloon(float pressure=1000.0f)
Settings for pressure-based soft bodies (balloons).
Definition SoftBody.hpp:164
bool doubleSidedFaces
Treat faces as double-sided for collision.
Definition SoftBody.hpp:105
static SoftBodySettings Jelly()
Settings for jelly-like objects.
Definition SoftBody.hpp:184
SoftBody(const SoftBodySettings &settings)
Construct with specific settings.
Definition SoftBody.hpp:355
SoftBody(SoftBodyType bodyType, const SoftBodySettings &settings)
Construct with type and settings.
Definition SoftBody.hpp:362
size_t GetEdgeCount() const
Get number of edge constraints.
Definition SoftBody.hpp:278
void UnpinVertex(uint32_t vertexIndex, float mass=1.0f)
Unpin a vertex.
Definition SoftBody.hpp:304
SoftBodyType type
Type of soft body (affects default settings).
Definition SoftBody.hpp:247
bool IsValid() const
Check if the soft body configuration is valid.
Definition SoftBody.hpp:335
SoftBody()=default
Default constructor - creates an empty SoftBody.
std::vector< std::pair< uint32_t, uint32_t > > edges
Definition SoftBody.hpp:264
std::vector< float > invMasses
Vertex inverse masses (0 = pinned/fixed). Size must match Mesh.vertices.size().
Definition SoftBody.hpp:257
SoftBodySettings settings
Simulation settings.
Definition SoftBody.hpp:250
size_t GetVertexCount() const
Get number of vertices (from invMasses size).
Definition SoftBody.hpp:273
std::vector< uint32_t > pinnedVertices
Indices of pinned (fixed) vertices.
Definition SoftBody.hpp:260
bool IsVertexPinned(uint32_t vertexIndex) const
Check if a vertex is pinned.
Definition SoftBody.hpp:326
void PinVertex(uint32_t vertexIndex)
Pin a vertex (fix it in space).
Definition SoftBody.hpp:284