void RigidBodyParamDlgProc::Update(TimeValue t)
{
   if (!thishWnd) 
      return;

   
   mCbLayer.select(max(0, min(so->GetLayer(t), mCbLayer.count()-1)));
   mCbMotionSystem.select(max(0, min(so->GetMotionSystem(t), mCbMotionSystem.count()-1)));
   mCbQualityType.select(max(0, min(so->GetQualityType(t), mCbQualityType.count()-1)));
   return;
}
Пример #2
0
void NifProps::selectionChanged()
{
	int numSel = mIP->GetSelNodeCount();
	if (numSel <= 0)
	{
		mNode = NULL;
		enableGUI(false, false, false);
		return;
	}

	bool singleSel = numSel==1;
	INode *nodeSel = mIP->GetSelNode(0);
	bool isColl = npIsCollision(nodeSel);

	enableGUI(singleSel, singleSel && isColl, true);
	mNode = singleSel?nodeSel:NULL;		
	
	if (!singleSel)
		return;

	CheckDlgButton(mPanel, IDC_CHK_ISCOLL, isColl);
	
	int mtl, lyr, msys, qtype;
	float mass, lindamp, angdamp, frict, resti, maxlinvel, maxangvel;
	Vector3 center;

   // Handle compatibility
   npGetProp(nodeSel, NP_HVK_MASS_OLD, mass, NP_DEFAULT_HVK_EMPTY);
   if (mass != NP_DEFAULT_HVK_EMPTY)
      npGetProp(nodeSel, NP_HVK_MASS, mass, NP_DEFAULT_HVK_MASS);
   npGetProp(nodeSel, NP_HVK_FRICTION_OLD, frict, NP_DEFAULT_HVK_EMPTY);
   if (frict != NP_DEFAULT_HVK_EMPTY)
      npGetProp(nodeSel, NP_HVK_FRICTION, frict, NP_DEFAULT_HVK_FRICTION);
   npGetProp(nodeSel, NP_HVK_RESTITUTION_OLD, resti, NP_DEFAULT_HVK_EMPTY);
   if (resti != NP_DEFAULT_HVK_EMPTY)
      npGetProp(nodeSel, NP_HVK_RESTITUTION, resti, NP_DEFAULT_HVK_RESTITUTION);

	npGetProp(nodeSel, NP_HVK_MATERIAL, mtl, NP_DEFAULT_HVK_MATERIAL);
	npGetProp(nodeSel, NP_HVK_LAYER, lyr, NP_DEFAULT_HVK_LAYER);
	npGetProp(nodeSel, NP_HVK_MOTION_SYSTEM, msys, NP_DEFAULT_HVK_MOTION_SYSTEM);
	npGetProp(nodeSel, NP_HVK_QUALITY_TYPE, qtype, NP_DEFAULT_HVK_QUALITY_TYPE);
	npGetProp(nodeSel, NP_HVK_LINEAR_DAMPING, lindamp, NP_DEFAULT_HVK_LINEAR_DAMPING);
	npGetProp(nodeSel, NP_HVK_ANGULAR_DAMPING, angdamp, NP_DEFAULT_HVK_ANGULAR_DAMPING);
	npGetProp(nodeSel, NP_HVK_MAX_LINEAR_VELOCITY, maxlinvel, NP_DEFAULT_HVK_FRICTION);
	npGetProp(nodeSel, NP_HVK_MAX_ANGULAR_VELOCITY, maxangvel, NP_DEFAULT_HVK_MAX_ANGULAR_VELOCITY);
	npGetProp(nodeSel, NP_HVK_CENTER, center);

	mCbMaterial.select(max(0, min(mtl, mCbMaterial.count()-1)));
	mCbLayer.select(max(0, min(lyr, mCbLayer.count()-1)));
	mCbMotionSystem.select(max(0, min(msys, mCbMotionSystem.count()-1)));
	mCbQualityType.select(max(0, min(qtype, mCbQualityType.count()-1)));

	//mSpins[IDC_SP_CENTER_X]->SetValue(center.x, TRUE);
	//mSpins[IDC_SP_CENTER_Y]->SetValue(center.y, TRUE);
	//mSpins[IDC_SP_CENTER_Z]->SetValue(center.z, TRUE);

	mSpins[IDC_SP_MASS]->SetValue(mass, TRUE);
	mSpins[IDC_SP_LINEAR_DAMPING]->SetValue(lindamp, TRUE);
	mSpins[IDC_SP_ANGULAR_DAMPING]->SetValue(angdamp, TRUE);
	mSpins[IDC_SP_FRICTION]->SetValue(frict, TRUE);
	mSpins[IDC_SP_MAX_LINEAR_VELOCITY]->SetValue(maxlinvel, TRUE);
	mSpins[IDC_SP_MAX_ANGULAR_VELOCITY]->SetValue(maxangvel, TRUE);

   float priority;
   npGetProp(nodeSel, NP_ANM_PRI, priority, NP_DEFAULT_ANM_PRI);
   mSpins[IDC_SP_ANIM_PRIORITY]->SetValue(priority, TRUE);

}