Example #1
0
	Status MaxTime::process(Tick& tick)
	{
		float elapsedTime = tick.tree.getElapsedTime(actionId);

		BaseNode* node = tick.tree.actionManager.getActionById(child);
		// CCAssert(node != nullptr)
		Status status = node->execute(tick);
		if (elapsedTime > maxDelay)
		{
			return Status::Failure;
		}

		return status;
	}
	Status SequenceStateful::process(Tick& tick)
	{
		Status result =  Status::Success;

		size_t idx = tick.tree.getRunningChild(actionId);

		for (size_t i = idx; i < children.size(); ++i)
		{
			BaseNode* node = tick.tree.actionManager.getActionById(children[i]);
			Status status = node->execute(tick);

			if (status != Status::Success)
			{
				if (status == Status::Running)
				{
					tick.tree.setRunningChild(actionId, i);
				}
				break;
			}
		}

		return result;
	}