Addons updated to new doc format
[io.git] / addons / ODE / source / IoODESlider.c
blob6935157622e456267a5f85d6f7489f4cbd7be522
2 //metadoc ODEJoint copyrigth Jonathan Wright, 2006
3 //metadoc ODEJoint license BSD revised
4 /*metadoc ODEJoint description
5 ODEJoint binding
6 */
8 #include "IoODEJoint_internal.h"
9 #include "IoODESlider.h"
10 #include "IoODEBody.h"
11 #include "IoState.h"
12 #include "IoSeq.h"
13 #include "IoVector_ode.h"
14 #include "GLIncludes.h"
16 /* ----------------------------------------------------------- */
18 IoTag *IoODESlider_newTag(void *state)
20 IoTag *tag = IoTag_newWithName_("ODESlider");
21 IoTag_state_(tag, state);
22 IoTag_freeFunc_(tag, (IoTagFreeFunc *)IoODESlider_free);
23 IoTag_markFunc_(tag, (IoTagMarkFunc *)IoODESlider_mark);
24 IoTag_cloneFunc_(tag, (IoTagCloneFunc *)IoODESlider_rawClone);
25 return tag;
28 IoODESlider *IoODESlider_proto(void *state)
30 IoObject *self = IoObject_new(state);
31 IoObject_tag_(self, IoODESlider_newTag(state));
33 IoODEJoint_protoCommon(self);
35 IoState_registerProtoWithFunc_(state, self, IoODESlider_proto);
38 IoMethodTable methodTable[] = {
39 ODE_COMMON_JOINT_METHODS
40 #define PARAM(X, _N, _SETN) \
41 {#_N, IoODESlider_##_N}, \
42 {#_SETN, IoODESlider_##_SETN},
43 PARAMS
44 #undef PARAM
46 {"axis", IoODESlider_axis},
47 {"setAxis", IoODESlider_setAxis},
48 {"position", IoODESlider_position},
49 {"positionRate", IoODESlider_positionRate},
50 {"addForce", IoODESlider_addForce},
52 {NULL, NULL},
54 IoObject_addMethodTable_(self, methodTable);
56 return self;
59 IoODESlider *IoODESlider_rawClone(IoODESlider *proto)
61 IoObject *self = IoODEJoint_rawClone(proto);
63 if(DATA(proto)->jointGroup)
65 IoODEJointGroup *jointGroup = DATA(proto)->jointGroup;
67 JOINTGROUP = jointGroup;
68 IoODEJointGroup_addJoint(jointGroup, self);
69 JOINTID = dJointCreateSlider(WORLDID, JOINTGROUPID);
71 return self;
74 void IoODESlider_free(IoODESlider *self)
76 IoODEJoint_free(self);
79 void IoODESlider_mark(IoODESlider *self)
81 IoODEJoint_mark(self);
84 IoODEJoint *IoODESlider_newProto(void *state, IoODEJointGroup *jointGroup)
86 return IoODEJoint_newProtoCommon(state, IoODESlider_proto, jointGroup);
89 /* ----------------------------------------------------------- */
92 IoObject *IoODESlider_getParam(IoODESlider *self, IoObject *locals, IoMessage *m, int parameter)
94 return IoODEJoint_getParam(self, locals, m, parameter, dJointGetSliderParam);
97 IoObject *IoODESlider_setParam(IoODESlider *self, IoObject *locals, IoMessage *m, int parameter)
99 return IoODEJoint_setParam(self, locals, m, parameter, dJointSetSliderParam);
102 #define PARAM(X, _N, _SETN) \
103 IoObject *IoODESlider_##_N(IoODESlider *self, IoObject *locals, IoMessage *m) \
105 return IoODESlider_getParam(self, locals, m, X); \
108 IoObject *IoODESlider_##_SETN(IoODESlider *self, IoObject *locals, IoMessage *m) \
110 return IoODESlider_setParam(self, locals, m, X); \
112 PARAMS
113 #undef PARAM
115 IoObject *IoODESlider_axis(IoODESlider *self, IoObject *locals, IoMessage *m)
117 return IoODEJoint_getVector3(self, locals, m, dJointGetSliderAxis);
120 IoObject *IoODESlider_position(IoODESlider *self, IoObject *locals, IoMessage *m)
122 return IoODEJoint_getReal(self, locals, m, dJointGetSliderPosition);
125 IoObject *IoODESlider_positionRate(IoODESlider *self, IoObject *locals, IoMessage *m)
127 return IoODEJoint_getReal(self, locals, m, dJointGetSliderPositionRate);
131 IoObject *IoODESlider_setAxis(IoODESlider *self, IoObject *locals, IoMessage *m)
133 return IoODEJoint_setVector3(self, locals, m, dJointSetSliderAxis);
136 IoObject *IoODESlider_addForce(IoODESlider *self, IoObject *locals, IoMessage *m)
138 return IoODEJoint_setReal(self, locals, m, dJointAddSliderForce);