Example #1
0
	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;
	}
Example #2
0
        /// <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;
        }
Example #3
0
        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);
    }
Example #5
0
    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);
    }
Example #6
0
 public override void Reset()
 {
     forged      = false;
     targetForge = null;
     startTime   = 0;
 }
 public override void Reset()
 {
     _forged      = false;
     _targetForge = null;
     _startTime   = 0;
 }
Example #8
0
	public override void reset ()
	{
		forged = false;
		targetForge = null;
		startTime = 0;
	}