当前位置: 首页>>代码示例>>C++>>正文


C++ Control::ClassID方法代码示例

本文整理汇总了C++中Control::ClassID方法的典型用法代码示例。如果您正苦于以下问题:C++ Control::ClassID方法的具体用法?C++ Control::ClassID怎么用?C++ Control::ClassID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Control的用法示例。


在下文中一共展示了Control::ClassID方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: IsNodeRenderable

//---------------------------------------------------------------------------
static bool IsNodeRenderable( INode *pnode, Object *pobj )
{
    if(!pobj || !pobj->CanConvertToType(Class_ID(TRIOBJ_CLASS_ID, 0)))
        return false;

    if (pobj->ClassID() == Class_ID(DUMMY_CLASS_ID, 0)) 
        return false;
    
    if (pobj->ClassID() == Class_ID(BONE_CLASS_ID, 0)) 
        return false;

#if MAX_RELEASE >= 4000
    if( pobj->ClassID() == BONE_OBJ_CLASSID )
        return false;
#endif

    // check for biped node
    Control *pControl = pnode->GetTMController();
    if( (pControl->ClassID() == BIPSLAVE_CONTROL_CLASS_ID) || 
        (pControl->ClassID() == BIPBODY_CONTROL_CLASS_ID) || 
        (pControl->ClassID() == FOOTPRINT_CLASS_ID) )
    {
        return false;
    }

    return true;
}
开发者ID:PhoenixSteam,项目名称:Phoenix3D,代码行数:28,代码来源:PX2SceneBuilder.cpp

示例2: IsBone

bool SGP_MaxInterface::IsBone(INode *pNode)
{
    // check for root node
    if(pNode->IsRootNode()) 
        return false;

    // check for bone node
    ObjectState os;
    os = pNode->EvalWorldState(0);
    if(os.obj->ClassID() == Class_ID(BONE_CLASS_ID, 0)) 
        return true;

#if MAX_RELEASE >= 4000
    if(os.obj->ClassID() == BONE_OBJ_CLASSID) 
        return true;
#endif

    if(os.obj->ClassID() == Class_ID(DUMMY_CLASS_ID, 0)) 
        return false;

    // check for biped node
    Control *pControl;
    pControl = pNode->GetTMController();
    if((pControl->ClassID() == BIPSLAVE_CONTROL_CLASS_ID) || (pControl->ClassID() == BIPBODY_CONTROL_CLASS_ID)) 
        return true;

    return false;
}
开发者ID:phoenixzz,项目名称:SGPEngine,代码行数:28,代码来源:SGP_MAX9Interface.cpp

示例3: IsNodeBipedBone

// ============================================================================
bool IsNodeBipedBone(INode *pNode)
{
    if(pNode == NULL || pNode->IsRootNode())
        return false;

    Control *cont = pNode->GetTMController();
    if(cont->ClassID() == BIPSLAVE_CONTROL_CLASS_ID ||
        cont->ClassID() == BIPBODY_CONTROL_CLASS_ID
    ) return true;

    return false;
}
开发者ID:ApocalypseDesign,项目名称:ad_public,代码行数:13,代码来源:utilityOLD.cpp

示例4: HasBipController

// HASBIPCONTROLLER
bool HasBipController(INode* node)
{
    if (!node)
        return false;
    Control* c = node->GetTMController();
    if (c && ((c->ClassID()== BIPSLAVE_CONTROL_CLASS_ID) ||
        (c->ClassID()== BIPBODY_CONTROL_CLASS_ID) || 
        (c->ClassID()== FOOTPRINT_CLASS_ID)) )
        return true;
    return false;

}
开发者ID:Asteral,项目名称:Plasma,代码行数:13,代码来源:plBipedKiller.cpp

示例5: ExportableAnimationController

// EXPORTABLEANIMATIONCONTROLLER
bool ExportableAnimationController(INode* node)
{
    bool result = false;

    if(node)
    {
        Control *c = node->GetTMController();
        if(c)
        {
            Class_ID id = c->ClassID();
            if(id == Class_ID(LININTERP_ROTATION_CLASS_ID, 0)
                || id == Class_ID(PRS_CONTROL_CLASS_ID, 0)
                || id == Class_ID(LININTERP_POSITION_CLASS_ID, 0)
                || id == Class_ID(TCBINTERP_FLOAT_CLASS_ID, 0)
                || id == Class_ID(TCBINTERP_POSITION_CLASS_ID, 0)
                || id == Class_ID(TCBINTERP_ROTATION_CLASS_ID, 0)
                || id == Class_ID(TCBINTERP_POINT3_CLASS_ID, 0)
                || id == Class_ID(TCBINTERP_SCALE_CLASS_ID, 0))
            {
                result = true;
            }
        }
    }
    return result;
}
开发者ID:Asteral,项目名称:Plasma,代码行数:26,代码来源:plBipedKiller.cpp

示例6: isBiped

bool BipedUtil::isBiped( INode* node )
{
    require( node );
    Control* c = node->GetTMController();
    return c &&
        c->ClassID() == BIPSLAVE_CONTROL_CLASS_ID ||
        c->ClassID() == BIPBODY_CONTROL_CLASS_ID;
}
开发者ID:TheRyaz,项目名称:c_reading,代码行数:8,代码来源:BipedUtil.cpp

示例7: getKeyFramedRotationRange

Interval AnimExportUtil::getKeyFramedRotationRange( INode* node3ds, Interval animRange )
{
    require( node3ds->GetTMController() );

    TimeValue start = animRange.Start();
    TimeValue end = animRange.End();

    // target defines rotation
    if ( node3ds->GetTarget() )
        return Interval( start, start );

    Control* cont = node3ds->GetTMController()->GetRotationController();
    IKeyControl* ikeys = cont ? GetKeyControlInterface( cont ) : 0;
    if ( ikeys )
    {
        ITCBRotKey key1;
        IBezQuatKey key2;
        ILinRotKey key3;
        IKey* keyp = 0;

        if ( cont->ClassID() == Class_ID(TCBINTERP_ROTATION_CLASS_ID, 0) )
            keyp = &key1;
        else if ( cont->ClassID() == Class_ID(HYBRIDINTERP_ROTATION_CLASS_ID, 0) )
            keyp = &key2;
        else if ( cont->ClassID() == Class_ID(LININTERP_ROTATION_CLASS_ID, 0) )
            keyp = &key3;

        if ( keyp )
        {
            if ( 0 == ikeys->GetNumKeys() )
                return Interval( start, start );

            ikeys->GetKey( 0, keyp );
            start = keyp->time;
            ikeys->GetKey( ikeys->GetNumKeys()-1, keyp );
            end = keyp->time;
        }
    }

    return Interval( start, end );
}
开发者ID:TheRyaz,项目名称:c_reading,代码行数:41,代码来源:AnimExportUtil.cpp

示例8: IsNodeBone

// ============================================================================
bool IsNodeBone(INode *pNode)
{
    if(pNode == NULL || pNode->IsRootNode())
        return false;

    ObjectState os = pNode->EvalWorldState(0);
    if(os.obj->ClassID() == Class_ID(BONE_CLASS_ID, 0))
        return true;

    // we don't want biped end effectors
    if(os.obj->ClassID() == Class_ID(DUMMY_CLASS_ID, 0))
        return false;

    Control *cont = pNode->GetTMController();
    if(cont->ClassID() == BIPSLAVE_CONTROL_CLASS_ID ||
        cont->ClassID() == BIPBODY_CONTROL_CLASS_ID ||
        cont->ClassID() == FOOTPRINT_CLASS_ID
    ) return true;

    return false;
}
开发者ID:ApocalypseDesign,项目名称:ad_public,代码行数:22,代码来源:utilityOLD.cpp

示例9: IsBipedBone

bool SGP_MaxInterface::IsBipedBone( INode* pNode )
{
    // check for invalid nodes
    if(pNode == NULL) 
        return false;

    // check for root node
    if(pNode->IsRootNode())
        return false;

    // check for bone node
    ObjectState os;
    os = pNode->EvalWorldState(0);
    if(os.obj->ClassID() == Class_ID(DUMMY_CLASS_ID, 0)) 
        return false;

    // check for biped node
    Control *pControl;
    pControl = pNode->GetTMController();
    if((pControl->ClassID() == BIPSLAVE_CONTROL_CLASS_ID) || (pControl->ClassID() == BIPBODY_CONTROL_CLASS_ID))
        return true;

    return false;
}
开发者ID:phoenixzz,项目名称:SGPEngine,代码行数:24,代码来源:SGP_MAX9Interface.cpp

示例10: getMeshPtr

Mesh* CExporter::getMeshPtr(INode* node, Object* object)
{
    assert(object != NULL);

    while (GEN_DERIVOB_CLASS_ID == object->SuperClassID())
    {
        object = ((IDerivedObject*)object)->GetObjRef();
    }

    if (GEOMOBJECT_CLASS_ID != object->SuperClassID())
    {
        return NULL;
    }

    Control* pCtrl = node->GetTMController();
    Class_ID id = pCtrl->ClassID();
    if (id == BIPSLAVE_CONTROL_CLASS_ID
        || id == BIPBODY_CONTROL_CLASS_ID
        || id == FOOTPRINT_CLASS_ID)
    {
        return NULL;
    }

    if (!object->CanConvertToType(Class_ID(TRIOBJ_CLASS_ID, 0)))
    {
        return NULL;
    }
    assert(m_interface != NULL);
    TriObject* pTriObj = (TriObject*)(object->ConvertToType(m_interface->GetTime(),
                                                            Class_ID(TRIOBJ_CLASS_ID, 0)));
    if (NULL == pTriObj)
    {
        return NULL;
    }
    return &(pTriObj->mesh);
}
开发者ID:ColinGilbert,项目名称:grandpa-animation,代码行数:36,代码来源:Exporter_Mesh.cpp

示例11: CollectProperties

void SGMExporter::CollectProperties(Scene3DMesh *mesh, IGameMesh *gMesh)
{
    IPropertyContainer *propsContainer = gMesh->GetIPropertyContainer();
    if (propsContainer == NULL || propsContainer->GetNumberOfProperties() == 0)
    {
        Log::LogT("Mesh %s has no properties", mesh->name.c_str());
        return;
    }
    
    Log::LogT("properties count: %d", propsContainer->GetNumberOfProperties());

    for (int i = 0; i < propsContainer->GetNumberOfProperties(); i++)
    {
        IGameProperty *gProp = propsContainer->GetProperty(i);
        if (gProp == NULL)
            continue;

        int propType = gProp->GetType();
        std::string propName = StringUtils::ToNarrow(gProp->GetName());

        Log::LogT("eporting %s with type %d", propName.c_str(), propType);

        if (propType == IGAME_UNKNOWN_PROP)
        {
            Log::LogT("property %s has unknown type", propName.c_str());
            continue;
        }

        Property::AnimationType propAnimType = Property::AnimationType_None;

        Property *prop = NULL; 

        if (!gProp->IsPropAnimated())
        {
            Log::LogT("property %s has no animation", propName.c_str());

            prop = new Property(propName, PropTypeConv(propType), Property::AnimationType_None);
            switch (propType)
            {
            case IGAME_FLOAT_PROP:
                {
                    float val;	
                    gProp->GetPropertyValue(val);
                    prop->SetValue(val);
                }
                break;

            case IGAME_INT_PROP:
                {
                    int val;
                    gProp->GetPropertyValue(val);
                    prop->SetValue(val);
                }
                break;

            case IGAME_POINT3_PROP:
                {
                    Point3 val;
                    gProp->GetPropertyValue(val);
                    prop->SetValue(sm::Vec3(val.x, val.y, val.z));
                }
                break;
            }
        }
        else
        {
            IGameControl *ctrl = gProp->GetIGameControl();

            if (ctrl == NULL)
            {
                Log::LogT("%s IGameControl is NULL", propName.c_str());
                continue;
            }

            switch (propType)
            {
            case IGAME_FLOAT_PROP:
                {
                    Control *maxControl = ctrl->GetMaxControl(IGAME_FLOAT);
                    if (maxControl != NULL && maxControl->IsAnimated())
                    {
                        if (maxControl->ClassID() == Class_ID(LININTERP_FLOAT_CLASS_ID, 0))
                        {	
                            Log::LogT("%s float liniowe scierwo", propName.c_str());
                            prop = new Property(propName, Property::PropertyType_Float, Property::AnimationType_Linear);
                            IGameKeyTab keys;
                            if (ctrl->GetLinearKeys(keys, IGAME_FLOAT))
                            {
                                for (int j = 0; j < keys.Count(); j++)
                                {
                                    prop->SetValue(keys[j].linearKey.fval, TicksToSec(keys[j].t));
                                }
                            }
                        }
                        if (maxControl->ClassID() == Class_ID(TCBINTERP_FLOAT_CLASS_ID, 0))
                        {
                            Log::LogT("%s float tcb scierwo", propName.c_str());
                            prop = new Property(propName, Property::PropertyType_Float, Property::AnimationType_TCB);
                            IGameKeyTab keys;
                            if (ctrl->GetTCBKeys(keys, IGAME_FLOAT))
//.........这里部分代码省略.........
开发者ID:asmCode,项目名称:rw2014-exporter,代码行数:101,代码来源:SGMExporter.cpp

示例12: BuildSlave

Control* BlockControl::BuildSlave(TrackViewPick res,Control* list, BOOL createdList)
{
int count = list->NumSubs()-2;
Control *slave = NULL;
for (int i = 0; i < count; i++)
   {
   if (res.anim->SuperClassID() == CTRL_FLOAT_CLASS_ID) 
      {
      slave = (Control*)list->SubAnim(i);
      if (slave->ClassID() == SLAVEFLOAT_CONTROL_CLASS_ID)
         {
         return slave;
         }
      }
   else if (res.anim->SuperClassID() == CTRL_POSITION_CLASS_ID) 
      {
      slave = (Control*)list->SubAnim(i);
      if (slave->ClassID() == SLAVEPOS_CONTROL_CLASS_ID)
         {
         return slave;
         }
      }
   else if (res.anim->SuperClassID() == CTRL_ROTATION_CLASS_ID) 
      {
      slave = (Control*)list->SubAnim(i);
      if (slave->ClassID() == SLAVEROTATION_CONTROL_CLASS_ID)
         {
         return slave;
         }
      }
   else if (res.anim->SuperClassID() == CTRL_SCALE_CLASS_ID) 
      {
      slave = (Control*)list->SubAnim(i);
      if (slave->ClassID() == SLAVESCALE_CONTROL_CLASS_ID)
         {
         return slave;
         }
      }
   }
BOOL isRotation = FALSE;
if (res.anim->SuperClassID() == CTRL_FLOAT_CLASS_ID) 
   slave = (Control*)new SlaveFloatControl;
#ifndef NO_CONTROLLER_SLAVE_POSITION
else if (res.anim->SuperClassID() == CTRL_POSITION_CLASS_ID) 
   slave = (Control*)new SlavePosControl;
#endif
#ifndef NO_CONTROLLER_SLAVE_ROTATION
else if (res.anim->SuperClassID() == CTRL_ROTATION_CLASS_ID) 
   {
   slave = (Control*)new SlaveRotationControl;
   isRotation = TRUE;
   }
#endif
#ifndef NO_CONTROLLER_SLAVE_SCALE
else if (res.anim->SuperClassID() == CTRL_SCALE_CLASS_ID) 
   slave = (Control*)new SlaveScaleControl;
#endif
if (createdList)
   {
      list->AssignController(CloneRefHierarchy(res.anim),count);
      list->AssignController(slave,count+1);
      }  
else
   {
   list->AssignController(slave,count);
   }
return slave;
}
开发者ID:artemeliy,项目名称:inf4715,代码行数:68,代码来源:blockcontrol.cpp

示例13: DumpScaleKeys

void XsiExp::DumpScaleKeys( INode * node, int indentLevel) 
{
  Control * cont = node->GetTMController()->GetScaleController();
    IKeyControl * ikc = GetKeyControlInterface(cont);
    INode * parent = node->GetParentNode();
    if (!cont || !parent || (parent && parent->IsRootNode()) || !ikc)
  {
    // no controller or root node
        return;
  }
    int numKeys = ikc->GetNumKeys();
    if (numKeys <= 1)
  {  
    return;
  }
    Object * obj = node->EvalWorldState(0).obj;
  BOOL isBone = obj && obj->ClassID() == Class_ID(BONE_CLASS_ID, 0) ? TRUE : FALSE;

  // anim keys header
  TSTR indent = GetIndent(indentLevel);
    fprintf(pStream,"%s\tSI_AnimationKey {\n", indent.data()); 
    fprintf(pStream,"%s\t\t1;\n", indent.data());     // 1 means scale keys
    fprintf(pStream,"%s\t\t%d;\n", indent.data(), numKeys);

    int t, delta = GetTicksPerFrame();
 	Matrix3 matrix;
  AffineParts ap;
    for (int i = 0; i < numKeys; i++)
  {  
    // get the key's time
      if (cont->ClassID() == Class_ID(TCBINTERP_SCALE_CLASS_ID, 0))
    {
  	  ITCBRotKey key;
            ikc->GetKey(i, &key);
      t = key.time;
    }
    else if (cont->ClassID() == Class_ID(HYBRIDINTERP_SCALE_CLASS_ID, 0))
      {
          IBezQuatKey key;
          ikc->GetKey(i, &key);
      t = key.time;
    }
      else if (cont->ClassID() == Class_ID(LININTERP_SCALE_CLASS_ID, 0))
    {
  	  ILinRotKey key;
          ikc->GetKey(i, &key);
      t = key.time;
    }
    // sample the node's matrix
    matrix = node->GetNodeTM(t) * Inverse(node->GetParentTM(t));
    if (!isBone)
    {
      matrix = matrix * topMatrix;
    }
    decomp_affine(matrix, &ap);

        fprintf(pStream, "%s\t\t%d; 3; %.6f, %.6f, %.6f;;%s\n", 
            indent.data(),
            t / delta,
            ap.k.x, ap.k.z, ap.k.y,
      i == numKeys - 1 ? ";\n" : ",");
    }
  // anim keys close
    fprintf(pStream,"%s\t}\n\n", indent.data());
}
开发者ID:grasmanek94,项目名称:darkreign2,代码行数:65,代码来源:animout.cpp

示例14: KeyTest

void KeyTest() 
{
    int i, numKeys;
    INode *         n;
    Control *       c;
    Quat            newQuat, prevQuat;
    IKeyControl*    ikeys;
    ITCBPoint3Key   tcbPosKey;
    ITCBRotKey      tcbRotKey;
    ITCBScaleKey    tcbScaleKey;
    IBezPoint3Key   bezPosKey;
    IBezQuatKey     bezRotKey;
    IBezScaleKey    bezScaleKey;
    ILinPoint3Key   linPosKey;
    ILinRotKey      linRotKey;
    ILinScaleKey    linScaleKey;

    // Get the first node in the selection set
    if (!CMaxEnv::singleton().m_pInterace->GetSelNodeCount()) 
        return;
    n = CMaxEnv::singleton().m_pInterace->GetSelNode(0); 

    // --- Process the position keys ---
    c = n->GetTMController()->GetPositionController();
    ikeys = GetKeyControlInterface(c);

    if (!ikeys) 
    {
        // No interface available to access the keys...
        // Just sample the controller to get the position
        // data at each key...
        SampleController(n, c);
        return; 
    }

    numKeys = ikeys->GetNumKeys();
    DebugPrint(_T("\nThere are %d position key(s)"), numKeys);
    if (c->ClassID() == Class_ID(TCBINTERP_POSITION_CLASS_ID, 0)) 
    {
        for (i = 0; i < numKeys; i++) 
        {
            ikeys->GetKey(i, &tcbPosKey);
            //DebugPrint(_T("\nTCB Position Key: %d=(%.1f, %.1f, %.1f)"), 
            //	i, tcbPosKey.val.x, tcbPosKey.val.y, tcbPosKey.val.z);
        }
    }
    else if (c->ClassID() == Class_ID(HYBRIDINTERP_POSITION_CLASS_ID, 0)) 
    {
        for (i = 0; i < numKeys; i++) 
        {
            ikeys->GetKey(i, &bezPosKey);
            //DebugPrint(_T("\nBezier Position Key: %d=(%.1f, %.1f, %.1f)"), 
            //	i, bezPosKey.val.x, bezPosKey.val.y, bezPosKey.val.z);

        }
    }
    else if (c->ClassID() == Class_ID(LININTERP_POSITION_CLASS_ID, 0)) 
    {
        for (i = 0; i < numKeys; i++) 
        {
            ikeys->GetKey(i, &linPosKey);
            //DebugPrint(_T("\nLinear Position Key: %d=(%.1f, %.1f, %.1f)"), 
            //	i, linPosKey.val.x, linPosKey.val.y, linPosKey.val.z);
        }
    }
    // --- Process the rotation keys ---

    c = n->GetTMController()->GetRotationController();
    ikeys = GetKeyControlInterface(c);
    if (!ikeys) return;
    numKeys = ikeys->GetNumKeys();
    //DebugPrint(_T("\nThere are %d rotation key(s)"), numKeys);
    if (c->ClassID() == Class_ID(TCBINTERP_ROTATION_CLASS_ID, 0)) 
    {
        for (i = 0; i < numKeys; i++) 
        {
            ikeys->GetKey(i, &tcbRotKey);
            newQuat = QFromAngAxis(tcbRotKey.val.angle, tcbRotKey.val.axis);
            if (i) newQuat = prevQuat * newQuat;
            prevQuat = newQuat;
            //DebugPrint(_T("\nTCB Rotation Key: %d=(%.1f, %.1f, %.1f, %.1f)"), 
            //	i, newQuat.x, newQuat.y, newQuat.z, newQuat.w);
        }
    }
    else if (c->ClassID() == Class_ID(HYBRIDINTERP_ROTATION_CLASS_ID, 0)) 
    {
        for (i = 0; i < numKeys; i++) 
        {
            ikeys->GetKey(i, &bezRotKey);
            newQuat = bezRotKey.val;
            if (i) 
                newQuat = prevQuat * newQuat;

            prevQuat = newQuat;
            //DebugPrint(_T("\nBezier Rotation Key: %d=(%.1f, %.1f, %.1f, %.1f)"), 
            //	i, newQuat.x, newQuat.y, newQuat.z, newQuat.w);
        }
    }
    else if (c->ClassID() == Class_ID(LININTERP_ROTATION_CLASS_ID, 0)) 
    {
//.........这里部分代码省略.........
开发者ID:YOlodfssdf,项目名称:evolution3d,代码行数:101,代码来源:KeyFrameController.cpp


注:本文中的Control::ClassID方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。