public override TickResult Tick(AgentMemory am) { if (am.IsRunning(ID) == false) { am.SetInt(ID, "lastRunningNode", 0); am.StartRunning(ID); } for (int node = am.GetInt(ID, "lastRunningNode", 0); node < Children.Count; node++) { TickResult result = TickChild(Children[node], am); if (result == TickResult.Success) { // Sprawdzamy następny continue; } else if (result == TickResult.Running) { am.SetInt(ID, "lastRunningNode", node); return(result); } else { // Porażka lub błąd - zaczynamy od nowa am.StopRunning(ID); return(result); } } am.StopRunning(ID); return(TickResult.Success); }
public override TickResult Tick(AgentMemory agentMemory) { if (agentMemory.IsRunning(ID) == false) { agentMemory.SetInt(ID, "lastRunningNode", 0); agentMemory.StartRunning(ID); } for (int node = agentMemory.GetInt(ID, "lastRunningNode", 0); node < Children.Count; node++) { TickResult result = TickChild(Children[node], agentMemory); if (result == TickResult.Failure) { continue; } else if (result == TickResult.Running) { agentMemory.SetInt(ID, "lastRunningNode", node); return(result); } else { agentMemory.StopRunning(ID); return(result); } } agentMemory.StopRunning(ID); return(TickResult.Failure); }
public override TickResult Tick(AgentMemory agentMemory) { if (agentMemory.IsRunning(ID) == false) { agentMemory.SetFloat(ID, "timer", waitingTime); agentMemory.StartRunning(ID); } float timer = agentMemory.GetFloat(ID, "timer", 0f); timer -= agentMemory.DeltaTime; agentMemory.SetFloat(ID, "timer", timer); if (timer <= 0) { agentMemory.StopRunning(ID); return(TickResult.Success); } else { return(TickResult.Running); } }