Exemplo n.º 1
0
void IBAction::Create()
{
	// create action variable
	for (uint i = 0; i < m_pDef->GetVarNames().size(); ++i)
		m_aVariables.insert(VarPair(m_pDef->GetVarNames()[i], IBObject()));

	ResolveVariableFromPostCond(m_aPostCond.back());

	m_pDef->CreateOwnedVariables(this);

	m_eState = (IsResolved() ? IBA_State::IBA_Resolved : IBA_State::IBA_Unresolved);

	if (m_eState == IBA_State::IBA_Resolved)
	{
		m_eState = IBA_State::IBA_Ready;
		FinalizeCreation();
	}
	else if (m_eState == IBA_State::IBA_Unresolved)
	{
		for (VarMap::iterator it = m_aVariables.begin(); it != m_aVariables.end(); ++it)
		{
			const IBObject& Obj = it->second;
			if (Obj.GetUserData() == nullptr)
				m_aPotentialVariables.insert(PotentialVarPair(it->first, vector<IBObject>()));
		}

		m_pDef->CompleteVariables(this);
	}
}
Exemplo n.º 2
0
void Device::addInput(std::string name, void* ptr, VarType type)
{

	VarDef var;
	var.ptr = ptr;
	var.type = type;

	m_inputs.insert(VarPair(name, var));

};
Exemplo n.º 3
0
IBFact::IBFact(const IBFactDef* pDef, bool bInverted, const vector<IBObject>& aVariables, class IBWorldChange* pWorldChangeOwner, IBPlanner* pPlanner)
	: m_pPlanner(pPlanner)
	, m_pDef(pDef)
	, m_bInverted(bInverted)
	, m_pWorldChangeOwner(pWorldChangeOwner)
{
	ASSERT(aVariables.size() == pDef->GetDegree());

	for (uint i=0 ; i<aVariables.size() ; ++i)
		m_aVariables.insert(VarPair(pDef->GetVariableName(i), aVariables[i]));
}
Exemplo n.º 4
0
IBAction::IBAction(const class IBAction* pOrig)
	: m_pDef(pOrig->m_pDef)
	, m_pPlanner(pOrig->m_pPlanner)
	, m_eState(IBA_Init)
	, m_pPostWorldChange(pOrig->m_pPostWorldChange)
	, m_pPreWorldChange(nullptr)
	, m_aPostCond(pOrig->m_aPostCond)
	, m_pUserData(nullptr)
{
	for (VarMap::const_iterator it = pOrig->m_aVariables.begin(); it != pOrig->m_aVariables.end(); ++it)
	{
		m_aVariables.insert(VarPair(it->first, it->second));
	}

	for (IBFact* pFact : pOrig->m_aAdditionalPostCond)
	{
		m_aAdditionalPostCond.push_back(pFact->Clone());
	}
}