MODULE = Ogre PACKAGE = Ogre::SceneNode
# SceneNode * createChildSceneNode(const Vector3 &translate=Vector3::ZERO, const Quaternion &rotate=Quaternion::IDENTITY)
# SceneNode * createChildSceneNode(const String &name, const Vector3 &translate=Vector3::ZERO, const Quaternion &rotate=Quaternion::IDENTITY)
SceneNode *
SceneNode::createChildSceneNode(...)
CODE:
// Alrighty then, here we go...
// 0 args passed, must not be 2nd version, so pass no args
if (items == 1) {
RETVAL = THIS->createChildSceneNode();
}
else {
// 1st arg is Vector3
if (sv_isobject(ST(1)) && sv_derived_from(ST(1), "Ogre::Vector3")) {
Vector3 *vec = (Vector3 *) SvIV((SV *) SvRV(ST(1))); // TMOGRE_IN
// 1 arg passed
if (items == 2) {
RETVAL = THIS->createChildSceneNode(*vec);
}
// 2 args passed
else if (items == 3) {
if (sv_isobject(ST(2)) && sv_derived_from(ST(2), "Ogre::Quaternion")) {
Quaternion *q = (Quaternion *) SvIV((SV *) SvRV(ST(2))); // TMOGRE_IN
RETVAL = THIS->createChildSceneNode(*vec, *q);
}
else {
croak("Usage: Ogre::SceneNode::createChildSceneNode(THIS, Vector3, Quaternion)\n");
}
}
}
// 1st arg is String
else {
char * xstmpchr = (char *) SvPV_nolen(ST(1));
String name = xstmpchr;
// 1 arg passed
if (items == 2) {
RETVAL = THIS->createChildSceneNode(name);
}
// 2 args passed
else if (items == 3) {
if (sv_isobject(ST(2)) && sv_derived_from(ST(2), "Ogre::Vector3")) {
Vector3 *vec = (Vector3 *) SvIV((SV *) SvRV(ST(2))); // TMOGRE_IN
RETVAL = THIS->createChildSceneNode(name, *vec);
}
else {
croak("Usage: Ogre::SceneNode::createChildSceneNode(THIS, String, Vector3)\n");
}
}
// 3 args passed
else if (items == 4) {
if (sv_isobject(ST(2)) && sv_derived_from(ST(2), "Ogre::Vector3")) {
Vector3 *vec = (Vector3 *) SvIV((SV *) SvRV(ST(2))); // TMOGRE_IN
if (sv_isobject(ST(3)) && sv_derived_from(ST(3), "Ogre::Quaternion")) {
Quaternion *q = (Quaternion *) SvIV((SV *) SvRV(ST(3))); // TMOGRE_IN
RETVAL = THIS->createChildSceneNode(name, *vec, *q);
}
else {
croak("Usage: Ogre::SceneNode::createChildSceneNode(THIS, String, Vector3, Quaternion)\n");
}
}
else {
croak("Usage: Ogre::SceneNode::createChildSceneNode(THIS, String, Vector3, Quaternion)\n");
}
}
}
}
OUTPUT:
RETVAL
void
SceneNode::attachObject(obj)
MovableObject * obj
void
SceneNode::detachObject(obj)
MovableObject * obj
SceneNode *
SceneNode::getParentSceneNode()
unsigned short
SceneNode::numAttachedObjects()
# ...
void
SceneNode::detachAllObjects()
void
SceneNode::removeAndDestroyAllChildren()
bool
SceneNode::isInSceneGraph()
SceneManager *
SceneNode::getCreator()
void
SceneNode::showBoundingBox(bShow)
bool bShow
bool
SceneNode::getShowBoundingBox()
void
SceneNode::setFixedYawAxis(useFixed, fixedAxis)
bool useFixed
Vector3 * fixedAxis
C_ARGS:
useFixed, *fixedAxis
void
SceneNode::setDirection(x, y, z, relativeTo, localDirectionVector)
Real x
Real y
Real z
int relativeTo
Vector3 * localDirectionVector
C_ARGS:
x, y, z, (Ogre::Node::TransformSpace)relativeTo, *localDirectionVector
void
SceneNode::lookAt(targetPoint, relativeTo, localDirectionVector)
Vector3 * targetPoint
int relativeTo
Vector3 * localDirectionVector
C_ARGS:
*targetPoint, (Ogre::Node::TransformSpace)relativeTo, *localDirectionVector
void
SceneNode::setAutoTracking(enabled, target, localDirectionVector, offset)
bool enabled
SceneNode * target
Vector3 * localDirectionVector
Vector3 * offset
C_ARGS:
enabled, target, *localDirectionVector, *offset
SceneNode *
SceneNode::getAutoTrackTarget()