Program Listing for File ContactForceManager.h

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();

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;

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