示例#1
0
/*!\func
 * add state with name
 * \param
 - name - name of new state
 * \return id of new state (or -1)
 */
qint32 Data::addState(const QString&name)
{
	static qint32 newId = 0;
        states.insert(newId, State(this, newId, getUniqueStateName(newId, name)));
	emit sAddState(newId);
	return newId++;
}
void PATransitionCreator::setInfo(bool isCreateMode, const std::string& stateName)
{
	if (isCreateMode)
	{
		inputStateName->value(getUniqueStateName("state").c_str());
		inputStateName->activate();
		buttonCreateState->label(strdup("Create State"));
	}
	else
	{
		inputStateName->value(stateName.c_str());
		inputStateName->deactivate();
		buttonCreateState->label(strdup("Save Changes"));
	}

	loadMotions();
	if (!isCreateMode)
	{
		SmartBody::SBAnimationBlendManager* stateManager = SmartBody::SBScene::getScene()->getBlendManager();
		SmartBody::SBAnimationBlend* state = stateManager->getBlend(stateName);
		if (!state)
		{
			fl_alert("State %s does not exist.", stateName.c_str());
			cancelState(this, NULL);
			return;
		}
		std::vector<SmartBody::SBMotion*>& motions = state->motions;
		for (std::vector<SmartBody::SBMotion*>::iterator iter = motions.begin();
			 iter != motions.end();
			 iter++)
		{
			stateAnimationList->add((*iter)->getName().c_str());
		}


		SmartBody::SBAnimationBlend0D* state0d = dynamic_cast<SmartBody::SBAnimationBlend0D*>(state);
		if (state0d)
			choiceStateType->value(0);
		SmartBody::SBAnimationBlend1D* state1d = dynamic_cast<SmartBody::SBAnimationBlend1D*>(state);
		if (state1d)
			choiceStateType->value(1);
		SmartBody::SBAnimationBlend2D* state2d = dynamic_cast<SmartBody::SBAnimationBlend2D*>(state);
		if (state2d)
			choiceStateType->value(2);
		SmartBody::SBAnimationBlend3D* state3d = dynamic_cast<SmartBody::SBAnimationBlend3D*>(state);
		if (state3d)
			choiceStateType->value(3);


	}
}