Fusion360-Addons/usr/Include/Core/Common/pCallbackObject.h
2021-10-31 19:39:29 +01:00

168 lines
4.8 KiB
C++

#ifndef __P_CALLBACK_OBJECT_H__
#define __P_CALLBACK_OBJECT_H__
#include <xBitSet.h>
#include "vtInterfaceEnumeration.h"
class pWheelContactModify;
class pCollisionsEntry;
class pTriggerEntry;
class pContactModifyData;
class pWheelContactModifyData;
class MODULE_API pCallbackObject
{
public:
pCallbackObject()
{
preScript = -1;
postScript = -1;
callMask = 0;
overrideMask = -1;
contactScript = -1;
rayCastScript = -1;
wheelContactScript = -1;
triggerScript = -1;
triggerEventMask = 0 ;
collisionEventMask = 0 ;
}
int contactScript;
int rayCastScript;
int wheelContactScript;
int triggerScript;
int jointBreakScript;
int collisionEventMask;
int contactModificationScript;
int& getCollisionEventMask() { return collisionEventMask; }
void setCollisionEventMask(int val) { collisionEventMask = val; }
int triggerEventMask;
int& getTriggerEventMask() { return triggerEventMask; }
void setTriggerEventMask(int val) { triggerEventMask = val; }
// virtual void advanceTime(float lastDeltaMS);
//----------------------------------------------------------------
//
// generics
//
int overrideMask;
int& getOverrideMask() { return overrideMask; }
void setOverrideMask(int val) { overrideMask = val; }
xBitSet callMask;
xBitSet& getCallMask() { return callMask; }
void setCallMask(int val) { callMask = val; }
int preScript;
int& getPreScript() { return preScript; }
void setPreScript(int val) { preScript = val; }
int postScript;
int& getPostScript() { return postScript; }
void setPostScript(int val) { postScript = val; }
virtual void processPostScript(){};
virtual void processPreScript(){};
virtual int onPreProcess(){ return -1;};
virtual int onPostProcess(){return -1;};
//----------------------------------------------------------------
//
// generic contact call
//
int getContactScript() const { return contactScript; }
virtual void setContactScript(int behaviorID,int eventMask)
{
contactScript = behaviorID;
collisionEventMask = eventMask;
setFlag(getCallMask(),CB_OnContactNotify,behaviorID);
}
virtual int onContact(pCollisionsEntry *report){ return -1;};
//----------------------------------------------------------------
//
// raycast, unused !
//
int getRayCastScript() const { return rayCastScript; }
virtual void setRayCastScript(int val)
{
rayCastScript = val;
setFlag(getCallMask(),CB_OnRayCastHit,val);
}
virtual bool onRayCastHit(NxRaycastHit *report){ return false;};
//----------------------------------------------------------------
//
// trigger
//
int getTriggerScript() const { return triggerScript; }
virtual void setTriggerScript(int behaviorID,int eventMask,CK3dEntity *shapeReference = NULL)
{
triggerScript = behaviorID;
triggerEventMask = eventMask;
setFlag(getCallMask(),CB_OnTrigger,behaviorID);
}
virtual int onTrigger(pTriggerEntry *report){ return -1;};
//----------------------------------------------------------------
//
// trigger
//
int getJointBreakScript() const { return jointBreakScript; }
virtual void setJointBreakScript(int behaviorID,CK3dEntity *shapeReference = NULL)
{
jointBreakScript = behaviorID;
setFlag(getCallMask(),CB_OnJointBreak,behaviorID);
}
virtual int onJointBreak(pBrokenJointEntry *entry){ return -1;};
//----------------------------------------------------------------
//
// wheel related
//
int getWheelContactScript() const { return wheelContactScript; }
virtual void setWheelContactScript(int val) { wheelContactScript = val; }
virtual bool onWheelContact(CK3dEntity* wheelShapeReference, VxVector& contactPoint, VxVector& contactNormal, float& contactPosition, float& normalForce, CK3dEntity* otherShapeReference, int& otherShapeMaterialIndex){return true;}
virtual bool onWheelContactModify(int& changeFlags,pWheelContactModifyData* contact){ return -1;}
//----------------------------------------------------------------
//
// contact modification
//
int getContactModificationScript() const { return contactModificationScript; }
virtual void setContactModificationScript(int val)
{
contactModificationScript = val;
setFlag(getCallMask(),CB_OnContactModify,val);
}
virtual bool onContactConstraint(int& changeFlags,CK3dEntity *sourceObject,CK3dEntity *otherObject,pContactModifyData *data){ changeFlags = CMM_None; return true; };
int processOptions;
virtual int& getProcessOptions() { return processOptions; }
virtual void setProcessOptions(int val) { processOptions = val; }
protected:
private:
};
#endif