1 //metadoc ODEJoint copyright Jonathan Wright, 2006
2 //metadoc ODEJoint license BSD revised
3 /*metadoc ODEJoint description
7 #include "IoODEJoint_internal.h"
8 #include "IoODEContactJoint.h"
12 #include "IoVector_ode.h"
13 #include "GLIncludes.h"
15 /* ----------------------------------------------------------- */
17 IoTag
*IoODEContactJoint_newTag(void *state
)
19 IoTag
*tag
= IoTag_newWithName_("ODEContactJoint");
20 IoTag_state_(tag
, state
);
21 IoTag_freeFunc_(tag
, (IoTagFreeFunc
*)IoODEContactJoint_free
);
22 IoTag_markFunc_(tag
, (IoTagMarkFunc
*)IoODEContactJoint_mark
);
23 IoTag_cloneFunc_(tag
, (IoTagCloneFunc
*)IoODEContactJoint_rawClone
);
27 IoODEContactJoint
*IoODEContactJoint_proto(void *state
)
29 IoObject
*self
= IoObject_new(state
);
30 IoObject_tag_(self
, IoODEContactJoint_newTag(state
));
32 IoODEJoint_protoCommon(self
);
34 IoState_registerProtoWithFunc_(state
, self
, IoODEContactJoint_proto
);
37 IoMethodTable methodTable
[] = {
38 ODE_COMMON_JOINT_METHODS
42 IoObject_addMethodTable_(self
, methodTable
);
47 IoODEContactJoint
*IoODEContactJoint_rawClone(IoODEContactJoint
*proto
)
49 IoObject
*self
= IoODEJoint_rawClone(proto
);
51 if(DATA(proto
)->jointGroup
)
53 IoODEJointGroup
*jointGroup
= DATA(proto
)->jointGroup
;
55 JOINTGROUP
= jointGroup
;
60 void IoODEContactJoint_free(IoODEContactJoint
*self
)
62 IoODEJoint_free(self
);
65 void IoODEContactJoint_mark(IoODEContactJoint
*self
)
67 IoODEJoint_mark(self
);
70 IoODEContactJoint
*IoODEContactJoint_new(void *state
, IoODEJointGroup
*jointGroup
, dJointID jointId
)
72 IoODEContactJoint
*self
= IoODEJoint_newProtoCommon(state
, IoODEContactJoint_proto
, jointGroup
);
75 IoODEJointGroup_addJoint(JOINTGROUP
, self
);
80 /* ----------------------------------------------------------- */