Skip to content

Commit 3b9db2f

Browse files
committed
ADD: add roll, yaw, pitch to Ogre::Node
1 parent e3ed2d3 commit 3b9db2f

File tree

1 file changed

+45
-23
lines changed

1 file changed

+45
-23
lines changed

ext/ogrenode.cpp

Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,12 @@ namespace Node
1919

2020
macro_attr(Position,Ogre::Vector3)
2121
macro_attr(Scale,Ogre::Vector3)
22-
macro_attr(Orientation,Ogre::Quaternion);
22+
macro_attr(Orientation,Ogre::Quaternion)
2323

24-
singlereturn(getName)
24+
macro_attr(Listener,Ogre::Node::Listener*)
2525

26-
/*
27-
*/
28-
VALUE _numChildren(VALUE self)
29-
{
30-
return UINT2NUM(_self->numChildren());
31-
}
26+
singlereturn(getName)
27+
singlereturn(numChildren)
3228

3329
/*
3430
*/
@@ -58,20 +54,6 @@ VALUE _inspect(VALUE self)
5854
return rb_f_sprintf(3,array);
5955
}
6056

61-
/*
62-
*/
63-
VALUE _getListener(VALUE self)
64-
{
65-
Ogre::Node::Listener *temp = _self->getListener();
66-
return temp ? wrap(temp) : Qnil;
67-
}
68-
/*
69-
*/
70-
VALUE _setListener(VALUE self,VALUE val)
71-
{
72-
_self->setListener(wrap<Ogre::Node::Listener*>(val));
73-
return val;
74-
}
7557
/*
7658
*/
7759
VALUE _each(VALUE self)
@@ -152,6 +134,35 @@ VALUE _createChild(int argc,VALUE *argv,VALUE self)
152134
}
153135
}
154136

137+
/*
138+
*/
139+
VALUE _roll(int argc,VALUE *argv,VALUE self)
140+
{
141+
VALUE angle,space;
142+
rb_scan_args(argc, argv, "11",&angle,&space);
143+
_self->roll(wrap<Ogre::Radian>(angle),wrapenum<Ogre::Node::TransformSpace>(space));
144+
return self;
145+
}
146+
/*
147+
*/
148+
VALUE _yaw(int argc,VALUE *argv,VALUE self)
149+
{
150+
VALUE angle,space;
151+
rb_scan_args(argc, argv, "11",&angle,&space);
152+
_self->yaw(wrap<Ogre::Radian>(angle),wrapenum<Ogre::Node::TransformSpace>(space));
153+
return self;
154+
}
155+
/*
156+
*/
157+
VALUE _pitch(int argc,VALUE *argv,VALUE self)
158+
{
159+
VALUE angle,space;
160+
rb_scan_args(argc, argv, "11",&angle,&space);
161+
_self->pitch(wrap<Ogre::Radian>(angle),wrapenum<Ogre::Node::TransformSpace>(space));
162+
return self;
163+
}
164+
165+
155166
}
156167
}
157168
void Init_OgreNode(VALUE rb_mOgre)
@@ -182,11 +193,22 @@ void Init_OgreNode(VALUE rb_mOgre)
182193

183194
rb_define_attr_method(rb_cOgreNode,"position",_getPosition,_setPosition);
184195
rb_define_attr_method(rb_cOgreNode,"scale",_getScale,_setScale);
185-
196+
197+
198+
rb_define_method(rb_cOgreNode,"roll",RUBY_METHOD_FUNC(_roll),-1);
199+
rb_define_method(rb_cOgreNode,"yaw",RUBY_METHOD_FUNC(_yaw),-1);
200+
rb_define_method(rb_cOgreNode,"pitch",RUBY_METHOD_FUNC(_pitch),-1);
201+
186202

187203
rb_define_method(rb_cOgreNode,"each",RUBY_METHOD_FUNC(_each),0);
188204
rb_include_module(rb_cOgreNode,rb_mEnumerable);
189205
rb_define_method(rb_cOgreNode,"[]",RUBY_METHOD_FUNC(_getChild),1);
190206

191207
registerklass<Ogre::Node>(rb_cOgreNode);
208+
209+
registerenum<Ogre::Node::TransformSpace>("Ogre::Node::TransformSpace")
210+
.add(Ogre::Node::TS_LOCAL,"local")
211+
.add(Ogre::Node::TS_PARENT,"parent")
212+
.add(Ogre::Node::TS_WORLD,"world");
213+
192214
}

0 commit comments

Comments
 (0)