Control* BaseLimitCtrl::GetDefaultControlForDataType() { switch(SuperClassID()) { case CTRL_FLOAT_CLASS_ID: case CTRL_SHORT_CLASS_ID: case CTRL_INTEGER_CLASS_ID: return NewDefaultFloatController(); case CTRL_POINT3_CLASS_ID: return NewDefaultPoint3Controller(); case CTRL_POSITION_CLASS_ID: return NewDefaultPositionController(); case CTRL_ROTATION_CLASS_ID: return NewDefaultRotationController(); case CTRL_SCALE_CLASS_ID: return NewDefaultScaleController(); case CTRL_MATRIX3_CLASS_ID: return NewDefaultMatrix3Controller(); case CTRL_MASTERPOINT_CLASS_ID: return NewDefaultMasterPointController(); case CTRL_POINT4_CLASS_ID: return NewDefaultPoint4Controller(); case CTRL_COLOR24_CLASS_ID: return NewDefaultColorController(); case CTRL_FRGBA_CLASS_ID: return NewDefaultFRGBAController(); case CTRL_MORPH_CLASS_ID: default: return NULL; } }
void *BaseLimitCtrl::CreateTempValue() { switch(SuperClassID()) { case CTRL_FLOAT_CLASS_ID: case CTRL_SHORT_CLASS_ID: case CTRL_INTEGER_CLASS_ID: return new float; case CTRL_POINT3_CLASS_ID: case CTRL_POSITION_CLASS_ID: return new Point3; case CTRL_ROTATION_CLASS_ID: return new Quat; case CTRL_SCALE_CLASS_ID: return new ScaleValue; default: return NULL; } }
void BaseLimitCtrl::DeleteTempValue(void *val) { switch(SuperClassID()) { case CTRL_FLOAT_CLASS_ID: case CTRL_SHORT_CLASS_ID: case CTRL_INTEGER_CLASS_ID: delete (float *)val; break; case CTRL_POINT3_CLASS_ID: case CTRL_POSITION_CLASS_ID: delete (Point3 *)val; break; case CTRL_ROTATION_CLASS_ID: delete (Quat *)val; break; case CTRL_SCALE_CLASS_ID: delete (ScaleValue *)val; break; } }
Modifier* SkeletalExporterBase::findModifier(INode* node, const Class_ID& classID) { auto object = node->GetObjectRef(); while (object && object->SuperClassID() == GEN_DERIVOB_CLASS_ID) { auto derivedObject = static_cast<IDerivedObject*>(object); // Iterate over all entries of the modifier stack. for (auto i = 0; i < derivedObject->NumModifiers(); i++) { // If this modifier is a physique then return it auto modifier = derivedObject->GetModifier(i); if (modifier->ClassID() == classID) return modifier; } object = derivedObject->GetObjRef(); } return nullptr; }
// Returns true if the class is a manipulator and it manipulates // the given class ID for a base object, modifier or controller. // This manipulator helper object manipulates itself BOOL CanManipulate(ReferenceTarget* hTarget) { return hTarget->ClassID() == ClassID() && hTarget->SuperClassID() == SuperClassID(); }