MODULE = Ogre PACKAGE = Ogre::PlaneBoundedVolume
## need to add tests
PlaneBoundedVolume *
PlaneBoundedVolume::new(...)
CODE:
if (items == 1) {
RETVAL = new PlaneBoundedVolume;
}
else if (looks_like_number(ST(1))) {
RETVAL = new PlaneBoundedVolume((Plane::Side)SvIV(ST(1)));
}
OUTPUT:
RETVAL
void
PlaneBoundedVolume::DESTROY()
bool
PlaneBoundedVolume::intersects(...)
PREINIT:
const char *usage = "Usage: Ogre::PlaneBoundedVolume::intersects(THIS, {Sphere|AxisAlignedBox})\n";
CODE:
if (sv_isobject(ST(1))) {
if (sv_derived_from(ST(1), "Ogre::Sphere")) {
Sphere *w = (Sphere *) SvIV((SV *) SvRV(ST(1))); // TMOGRE_IN
RETVAL = THIS->intersects(*w);
}
else if (sv_derived_from(ST(1), "Ogre::AxisAlignedBox")) {
AxisAlignedBox *w = (AxisAlignedBox *) SvIV((SV *) SvRV(ST(1))); // TMOGRE_IN
RETVAL = THIS->intersects(*w);
}
// xxx: returns a damn std::pair<bool, Real>
//else if (sv_derived_from(ST(1), "Ogre::Ray")) {
// Ray *w = (Ray *) SvIV((SV *) SvRV(ST(1))); // TMOGRE_IN
// RETVAL = THIS->intersects(*w);
//}
else {
croak("%s", usage);
}
}
else {
croak("%s", usage);
}
OUTPUT:
RETVAL
## Public Attributes
## XXX: hmmm, I need to do the other public attrs like this if possible
int
PlaneBoundedVolume::outside(...)
CODE:
if (items == 2 && looks_like_number(ST(1))) {
THIS->outside = (Plane::Side)SvIV(ST(1));
}
RETVAL = THIS->outside;
OUTPUT:
RETVAL
## xxx: this sucks - fix when typemap PlaneList (attribute 'planes')
void
PlaneBoundedVolume::push_back_plane(Plane *plane)
CODE:
THIS->planes.push_back(*plane);