CustomBodyState::ApplyForwarding(..) added

This commit is contained in:
Dander7BD 2013-12-20 11:13:44 +01:00
parent 9aa584acc7
commit c4bbc09a97
2 changed files with 33 additions and 2 deletions

View File

@ -41,7 +41,8 @@ namespace Oyster { namespace Physics
this->linearMomentum = linearMomentum; this->linearMomentum = linearMomentum;
this->angularMomentum = angularMomentum; this->angularMomentum = angularMomentum;
this->linearImpulse = this->angularImpulse = ::Oyster::Math::Float4::null; this->linearImpulse = this->angularImpulse = ::Oyster::Math::Float4::null;
this->isSpatiallyAltered = this->isDisturbed = false; this->deltaPos = this->deltaAxis = ::Oyster::Math::Float4::null;
this->isSpatiallyAltered = this->isDisturbed = this->isForwarded = false;
} }
inline CustomBodyState & CustomBodyState::operator = ( const CustomBodyState &state ) inline CustomBodyState & CustomBodyState::operator = ( const CustomBodyState &state )
@ -58,8 +59,11 @@ namespace Oyster { namespace Physics
this->angularMomentum = state.angularMomentum; this->angularMomentum = state.angularMomentum;
this->linearImpulse = state.linearImpulse; this->linearImpulse = state.linearImpulse;
this->angularImpulse = state.angularImpulse; this->angularImpulse = state.angularImpulse;
this->deltaPos = state.deltaPos;
this->deltaAxis = state.deltaAxis;
this->isSpatiallyAltered = state.isSpatiallyAltered; this->isSpatiallyAltered = state.isSpatiallyAltered;
this->isDisturbed = state.isDisturbed; this->isDisturbed = state.isDisturbed;
this->isForwarded = state.isForwarded;
return *this; return *this;
} }
@ -149,6 +153,16 @@ namespace Oyster { namespace Physics
return this->angularImpulse; return this->angularImpulse;
} }
inline const ::Oyster::Math::Float4 & CustomBodyState::GetForward_DeltaPos() const
{
return this->deltaPos;
}
inline const ::Oyster::Math::Float4 & CustomBodyState::GetForward_DeltaAxis() const
{
return this->deltaAxis;
}
inline void CustomBodyState::SetMass_KeepMomentum( ::Oyster::Math::Float m ) inline void CustomBodyState::SetMass_KeepMomentum( ::Oyster::Math::Float m )
{ {
this->mass = m; this->mass = m;
@ -287,6 +301,13 @@ namespace Oyster { namespace Physics
this->isDisturbed = true; this->isDisturbed = true;
} }
inline void CustomBodyState::ApplyForwarding( const ::Oyster::Math::Float4 &deltaPos, const ::Oyster::Math::Float4 &deltaAxis )
{
this->deltaPos += deltaPos;
this->deltaAxis += deltaAxis;
this->isDisturbed = this->isForwarded = true;
}
inline bool CustomBodyState::IsSpatiallyAltered() const inline bool CustomBodyState::IsSpatiallyAltered() const
{ {
return this->isSpatiallyAltered; return this->isSpatiallyAltered;
@ -296,6 +317,11 @@ namespace Oyster { namespace Physics
{ {
return this->isDisturbed; return this->isDisturbed;
} }
inline bool CustomBodyState::IsForwarded() const
{
return this->isForwarded;
}
} }
} } } }

View File

@ -66,6 +66,8 @@ namespace Oyster { namespace Physics
const ::Oyster::Math::Float4 & GetAngularMomentum() const; const ::Oyster::Math::Float4 & GetAngularMomentum() const;
const ::Oyster::Math::Float4 & GetLinearImpulse() const; const ::Oyster::Math::Float4 & GetLinearImpulse() const;
const ::Oyster::Math::Float4 & GetAngularImpulse() const; const ::Oyster::Math::Float4 & GetAngularImpulse() const;
const ::Oyster::Math::Float4 & GetForward_DeltaPos() const;
const ::Oyster::Math::Float4 & GetForward_DeltaAxis() const;
void SetMass_KeepMomentum( ::Oyster::Math::Float m ); void SetMass_KeepMomentum( ::Oyster::Math::Float m );
void SetMass_KeepVelocity( ::Oyster::Math::Float m ); void SetMass_KeepVelocity( ::Oyster::Math::Float m );
@ -90,9 +92,11 @@ namespace Oyster { namespace Physics
void ApplyLinearImpulse( const ::Oyster::Math::Float4 &j ); void ApplyLinearImpulse( const ::Oyster::Math::Float4 &j );
void ApplyAngularImpulse( const ::Oyster::Math::Float4 &j ); void ApplyAngularImpulse( const ::Oyster::Math::Float4 &j );
void ApplyImpulse( const ::Oyster::Math::Float4 &j, const ::Oyster::Math::Float4 &at, const ::Oyster::Math::Float4 &normal ); void ApplyImpulse( const ::Oyster::Math::Float4 &j, const ::Oyster::Math::Float4 &at, const ::Oyster::Math::Float4 &normal );
void ApplyForwarding( const ::Oyster::Math::Float4 &deltaPos, const ::Oyster::Math::Float4 &deltaAxis );
bool IsSpatiallyAltered() const; bool IsSpatiallyAltered() const;
bool IsDisturbed() const; bool IsDisturbed() const;
bool IsForwarded() const;
private: private:
::Oyster::Math::Float mass, restitutionCoeff, staticFrictionCoeff, kineticFrictionCoeff; ::Oyster::Math::Float mass, restitutionCoeff, staticFrictionCoeff, kineticFrictionCoeff;
@ -100,8 +104,9 @@ namespace Oyster { namespace Physics
::Oyster::Math::Float4 reach, centerPos, angularAxis; ::Oyster::Math::Float4 reach, centerPos, angularAxis;
::Oyster::Math::Float4 linearMomentum, angularMomentum; ::Oyster::Math::Float4 linearMomentum, angularMomentum;
::Oyster::Math::Float4 linearImpulse, angularImpulse; ::Oyster::Math::Float4 linearImpulse, angularImpulse;
::Oyster::Math::Float4 deltaPos, deltaAxis; // Forwarding data sum
bool isSpatiallyAltered, isDisturbed; bool isSpatiallyAltered, isDisturbed, isForwarded;
}; };
} }
} } } }