public override bool checkProceduralPrecondition (GameObject agent) { // find the nearest forge ForgeComponent[] forges = (ForgeComponent[]) UnityEngine.GameObject.FindObjectsOfType ( typeof(ForgeComponent) ); ForgeComponent closest = null; float closestDist = 0; foreach (ForgeComponent forge in forges) { if (closest == null) { // first one, so choose it for now closest = forge; closestDist = (forge.gameObject.transform.position - agent.transform.position).magnitude; } else { // is this one closer than the last? float dist = (forge.gameObject.transform.position - agent.transform.position).magnitude; if (dist < closestDist) { // we found a closer one, use it closest = forge; closestDist = dist; } } } if (closest == null) return false; targetForge = closest; target = targetForge.gameObject; return closest != null; }
/// <summary> /// Invoked when the forge is enabled. We us this to set all the components /// we require for our forge. /// </summary> protected void SetupComponents() { // Removed null entries (script changes can make this happen) for (int i = m_Components.Count - 1; i >= 0; i--) { if (m_Components[i] == null) { m_Components.RemoveAt(i); } } // Get our current type Type forgeType = GetType(); // Get the attribute RequiredWidgetComponetsAttribute requiredWidgets = Attribute.GetCustomAttribute(forgeType, typeof(RequiredWidgetComponetsAttribute)) as RequiredWidgetComponetsAttribute; // Keep a reference to our list of components so we can remove them at the end if their are extra List <ForgeComponent> componentList = new List <ForgeComponent>(m_Components); // If it's not null if (requiredWidgets != null) { // Loop over all required types foreach (Type requiredType in requiredWidgets.requiredTypes) { // Set a flag to see if we have a match. bool foundType = false; // Loop over all components for (int i = componentList.Count - 1; i >= 0; i--) { // Check if the type matches if (componentList[i].GetType() == requiredType) { // We have a match. foundType = true; componentList.RemoveAt(i); break; } } // If we did not find a match we have to create one if (!foundType) { // Create the instance. ForgeComponent component = CreateInstance(requiredType) as ForgeComponent; // Add it to our list m_Components.Add(component); } } } // Any components still left in the list are extra and should be removed for (int i = 0; i < componentList.Count; i++) { // Remove it. m_Components.Remove(componentList[i]); // Destroy the scriptable object. DestroyImmediate(componentList[i], true); } componentList = null; }
private static void RunForge(EndecaApplication app, ForgeComponent forge) { Logger.Info("Getting forge configs ..."); EacGateway.Instance.StartScript(app.AppId, "ForgeConfigUpdate"); Logger.Info("Forging..."); forge.ArchiveLog(true); forge.CleanDirs(); forge.Run(); if (forge.IsFailed) { throw new ControlScriptException(forge.FailureMessage); } }
public override bool checkProceduralPrecondition(GameObject agent) { if (forges == null) { forges = FindObjectsOfType(typeof(ForgeComponent)) as ForgeComponent[]; } if (closest == null) { closest = forges.OrderBy(t => Vector3.Distance(transform.position, t.transform.position)).FirstOrDefault(); } if (closest != null) { target = closest.gameObject; } return(closest != null); }
public override bool CheckProceduralPrecondition(GameObject agent, BlackBoard bb) { // find the nearest forge ForgeComponent[] forges = (ForgeComponent[])bb.GetData("forge"); ForgeComponent closest = null; float closestDist = 0; foreach (ForgeComponent forge in forges) { if (closest == null) { // first one, so choose it for now closest = forge; closestDist = (forge.gameObject.transform.position - agent.transform.position).magnitude; } else { // is this one closer than the last? float dist = (forge.gameObject.transform.position - agent.transform.position).magnitude; if (dist < closestDist) { // we found a closer one, use it closest = forge; closestDist = dist; } } } if (closest == null) { return(false); } targetForge = closest; target = targetForge.gameObject; return(closest != null); }
public override void Reset() { forged = false; targetForge = null; startTime = 0; }
public override void Reset() { _forged = false; _targetForge = null; _startTime = 0; }
public override void reset () { forged = false; targetForge = null; startTime = 0; }