55 lines
1.7 KiB
C
55 lines
1.7 KiB
C
|
// SPDX-FileCopyrightText: 2023 Erin Catto
|
||
|
// SPDX-License-Identifier: MIT
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "solver.h"
|
||
|
|
||
|
typedef struct b2ContactSim b2ContactSim;
|
||
|
|
||
|
typedef struct b2ContactConstraintPoint
|
||
|
{
|
||
|
b2Vec2 anchorA, anchorB;
|
||
|
float baseSeparation;
|
||
|
float relativeVelocity;
|
||
|
float normalImpulse;
|
||
|
float tangentImpulse;
|
||
|
float totalNormalImpulse;
|
||
|
float normalMass;
|
||
|
float tangentMass;
|
||
|
} b2ContactConstraintPoint;
|
||
|
|
||
|
typedef struct b2ContactConstraint
|
||
|
{
|
||
|
int indexA;
|
||
|
int indexB;
|
||
|
b2ContactConstraintPoint points[2];
|
||
|
b2Vec2 normal;
|
||
|
float invMassA, invMassB;
|
||
|
float invIA, invIB;
|
||
|
float friction;
|
||
|
float restitution;
|
||
|
float tangentSpeed;
|
||
|
float rollingResistance;
|
||
|
float rollingMass;
|
||
|
float rollingImpulse;
|
||
|
b2Softness softness;
|
||
|
int pointCount;
|
||
|
} b2ContactConstraint;
|
||
|
|
||
|
int b2GetContactConstraintSIMDByteCount( void );
|
||
|
|
||
|
// Overflow contacts don't fit into the constraint graph coloring
|
||
|
void b2PrepareOverflowContacts( b2StepContext* context );
|
||
|
void b2WarmStartOverflowContacts( b2StepContext* context );
|
||
|
void b2SolveOverflowContacts( b2StepContext* context, bool useBias );
|
||
|
void b2ApplyOverflowRestitution( b2StepContext* context );
|
||
|
void b2StoreOverflowImpulses( b2StepContext* context );
|
||
|
|
||
|
// Contacts that live within the constraint graph coloring
|
||
|
void b2PrepareContactsTask( int startIndex, int endIndex, b2StepContext* context );
|
||
|
void b2WarmStartContactsTask( int startIndex, int endIndex, b2StepContext* context, int colorIndex );
|
||
|
void b2SolveContactsTask( int startIndex, int endIndex, b2StepContext* context, int colorIndex, bool useBias );
|
||
|
void b2ApplyRestitutionTask( int startIndex, int endIndex, b2StepContext* context, int colorIndex );
|
||
|
void b2StoreImpulsesTask( int startIndex, int endIndex, b2StepContext* context );
|