本文整理汇总了C++中INodeTab::SetCount方法的典型用法代码示例。如果您正苦于以下问题:C++ INodeTab::SetCount方法的具体用法?C++ INodeTab::SetCount怎么用?C++ INodeTab::SetCount使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类INodeTab
的用法示例。
在下文中一共展示了INodeTab::SetCount方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: plSharedComponents
int plSharedComponents(INodeTab& nodes, INodeTab& components)
{
components.ZeroCount();
if (nodes.Count() == 0)
return 0;
plMaxNodeBase *firstNode = (plMaxNodeBase*)nodes[0];
int num = firstNode->NumAttachedComponents();
// Resize the list to it's max size to be more efficient
components.SetCount(num);
int i;
// Put all the components on the first node into a list
for (i = 0; i < num; i++)
components[i] = firstNode->GetAttachedComponent(i)->GetINode();
// Delete any components that aren't on all the other nodes
for (i = 1; i < nodes.Count(); i++)
{
plMaxNodeBase *node = (plMaxNodeBase*)nodes[i];
uint32_t count = node->NumAttachedComponents();
for (int j = components.Count()-1; j >= 0; j--)
{
if (!INodeHasComponent(node, (plMaxNodeBase*)components[j]))
components.Delete(j, 1);
}
}
return components.Count();
}
示例2: zAxis
INodeTab GR2ImportImpl::ImportSkeleton(Skeleton& skel)
{
Point3 zAxis(0,0,1);
INodeTab nodes;
nodes.SetCount(int(skel.Bones.size()));
float scale = 1.0f;
for (size_t i=0, n=skel.Bones.size(); i<n; ++i)
{
Bone& bone = skel.Bones[i];
INode *node = o->gi->GetINodeByName(bone.Name.c_str());
if (node != NULL)
{
nodes[i] = node;
continue;
}
Point3 pp(0.0f,0.0f,0.0f);
Matrix3 tm = GetWorldTransform(skel, i);
Point3 p = tm.GetTrans();
Quat q = tm;
if (bone.ParentIndex >= 0)
{
Matrix3 m3 = GetWorldTransform(skel, bone.ParentIndex);
pp = m3.GetTrans();
//pp = skel.Bones[bone.ParentIndex].Transform.Origin;
}
node = CreateBone(bone.Name.c_str(), p, pp, zAxis);
node->SetUserPropInt("GR2BoneIndex", int(i));
nodes[i] = node;
//OutputDebugString(FormatText("GR2BoneIndex: %d %s\n", i, bone.Name.c_str()));
PosRotScaleNode(node, p, q, scale, PosRotScale(prsPos|prsRot));
if (bone.ParentIndex >= 0)
{
if (INode *pn = nodes[bone.ParentIndex])
pn->AttachChild(node, 1);
}
}
return nodes;
}
示例3: PickWhom
void FormationBhvr::PickWhom()
{
int i;
// first set the nodetab to equal the existing nodes to flee
// so that they are selected in the dialog
if (pblock->Count(follower) > 0)
{
INode *node;
SelMaxNodes.Resize(pblock->Count(follower));
SelMaxNodes.SetCount(0);
for (i=0; i<pblock->Count(follower); i++)
{
pblock->GetValue(follower,0,node,FOREVER,i);
SelMaxNodes.Append(1,&node);
}
}
else SelMaxNodes.ZeroCount();
// let the user pick
DoHitObjInMAX.SetSingleSelect(FALSE); // allow multiple selection
if (!GetCOREInterface()->DoHitByNameDialog(&DoHitObjInMAX)) return;
// Set follower to the returned nodes
theHold.Begin();
pblock->Resize(follower,SelMaxNodes.Count());
pblock->SetCount(follower,0);
for (i=0; i<SelMaxNodes.Count(); i++)
pblock->Append(follower,1,&SelMaxNodes[i]);
//zero out the formation matrix that's used for saving it out.
pblock->ZeroCount(follower_matrix1);
pblock->ZeroCount(follower_matrix2);
pblock->ZeroCount(follower_matrix3);
pblock->ZeroCount(follower_matrix4);
theHold.Accept(GetString(IDS_UN_WHOM));
}
示例4: Pick
BOOL SWrapPickOperand::Pick(IObjParam *ip,ViewExp *vpt)
{
INode *node = vpt->GetClosestHit();
assert(node);
INodeTab nodes;
nodes.SetCount(1);nodes[0]=node;
ip->FlashNodes(&nodes);
if (po->custnode) po->ReplaceReference(CUSTNODE,node,TRUE);
else po->MakeRefByID(FOREVER,CUSTNODE,node);
po->custname = TSTR(node->GetName());
// Automatically check show result and do one update
po->cmValid.SetEmpty();
po->pmapParam->Invalidate();
po->ShowName();
po->NotifyDependents(FOREVER, PART_ALL, REFMSG_CHANGE);
if (po->creating) {
theCreateSWrapObjectMode.JumpStart(ip,po);
ip->SetCommandMode(&theCreateSWrapObjectMode);
ip->RedrawViews(ip->GetTime());
return FALSE;
} else {
return TRUE;
}
}