Example #1
0
//----------------------------------------------------------------------------------------------
CActor * CActor::FindActorByPath(const std::string &Path)
{
	CStringUtility<std::string> ParseString(Path, "/");

	CActor * IterActor = 0;

	for (size_t Index = 0; Index < ParseString.m_vector.size(); ++Index)
	{
		if (ParseString.m_vector[Index] == "..")
		{
			if (!IterActor)
			{
				CActor * NextIterActor = GetParent();
				IterActor = NextIterActor;
			}
			else
			{
				CActor * NextIterActor = IterActor->GetParent();
				IterActor = NextIterActor;
			}

			if (!IterActor){
				return 0;
			}
		}
		else
		{
			if (!IterActor)
			{
				CActor * NextIterActor = FindActor(ParseString.m_vector[Index].c_str(), false);
				IterActor = NextIterActor;
			}
			else
			{
				CActor * NextIterActor = IterActor->FindActor(ParseString.m_vector[Index].c_str(), false);
				IterActor = NextIterActor;
			}

			if (!IterActor){
				return 0;
			}
		}
	}	
	return IterActor;
}