Program Listing for File ContactForceManager.h#
↰ Return to documentation for file (include/Karana/Collision/ContactForceManager.h)
/*
*Copyright(c)2024-2025KaranaDynamicsPtyLtd.Allrightsreserved.
*
*NOTICETOUSER:
*
*Thissourcecodeand/ordocumentation(the"LicensedMaterials")is
*theconfidentialandproprietaryinformationofKaranaDynamicsInc.
*UseoftheseLicensedMaterialsisgovernedbythetermsandconditions
*ofaseparatesoftwarelicenseagreementbetweenKaranaDynamicsandthe
*Licensee("LicenseAgreement").Unlessexpresslypermittedunderthat
*agreement,anyreproduction,modification,distribution,ordisclosure
*oftheLicensedMaterials,inwholeorinpart,toanythirdparty
*withoutthepriorwrittenconsentofKaranaDynamicsisstrictlyprohibited.
*
*THELICENSEDMATERIALSAREPROVIDED"ASIS"WITHOUTWARRANTYOFANYKIND.
*KARANADYNAMICSDISCLAIMSALLWARRANTIES,EXPRESSORIMPLIED,INCLUDING
*BUTNOTLIMITEDTOWARRANTIESOFMERCHANTABILITY,NON-INFRINGEMENT,AND
*FITNESSFORAPARTICULARPURPOSE.
*
*INNOEVENTSHALLKARANADYNAMICSBELIABLEFORANYDAMAGESWHATSOEVER,
*INCLUDINGBUTNOTLIMITEDTOLOSSOFPROFITS,DATA,ORUSE,EVENIF
*ADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGES,WHETHERINCONTRACT,TORT,
*OROTHERWISEARISINGOUTOFORINCONNECTIONWITHTHELICENSEDMATERIALS.
*
*U.S.GovernmentEndUsers:TheLicensedMaterialsarea"commercialitem"
*asdefinedat48C.F.R.2.101,andareprovidedtotheU.S.Government
*onlyasacommercialenditemunderthetermsofthislicense.
*
*AnyuseoftheLicensedMaterialsinindividualorcommercialsoftwaremust
*include,intheuserdocumentationandinternalsourcecodecomments,
*thisNotice,Disclaimer,andU.S.GovernmentUseProvision.
*/
#pragmaonce
#include"Karana/Collision/ContactForce.h"
#include"Karana/Frame/ChainedFrameToFrame.h"
namespaceKarana::Collision{
classContactForceManager:publicContactForceBase{
public:
ContactForceManager(std::string_viewname);
staticKarana::Core::ks_ptr<ContactForceManager>create(std::string_viewname);
virtual~ContactForceManager();
virtualvoidapplyForce(constFrameContact&contact,
constkc::ks_ptr<Karana::Dynamics::SubTree>&st)override;
virtualKarana::Math::SpatialVector
computeForce(constFrameContact&contact,
constKarana::Core::ks_ptr<Karana::Dynamics::Node>&nd_1,
constKarana::Core::ks_ptr<Karana::Dynamics::Node>&nd_2)override;
virtualvoidresetLastNodePair()override;
constKarana::Core::ks_ptr<ContactForceBase>&
getDelegate(constFrameContact&contact)const;
constKarana::Core::ks_ptr<ContactForceBase>&getDelegate()const;
voidsetDelegate(constKarana::Core::ks_ptr<ContactForceBase>&force=nullptr);
constKarana::Core::ks_ptr<ContactForceBase>&
getDelegate(constKarana::Frame::Frame&frame1,
constKarana::Frame::Frame&frame2,
boolstrict=false)const;
voidsetDelegate(constKarana::Frame::Frame&frame1,
constKarana::Frame::Frame&frame2,
constKarana::Core::ks_ptr<ContactForceBase>&force=nullptr);
voidclearDelegates();
private:
std::unique_ptr<classContactForceManagerImpl>_impl;
};
}//namespaceKarana::Collision