// Update is called once per frame
 void Update()
 {
     if (umc == null)
     {
         umc = GetComponent <UnityMeshComponent> ();
     }
     if (umc == null)
     {
         return;
     }
     entity = umc.GetEntity();
     if (entity == null)
     {
         return;
     }
     ac = entity.GetComponent <BehaviorComponent> ();
     if (ac == null)
     {
         return;
     }
     currentBehavior = "";            //TODO get entity name component
     targets.Clear();
     foreach (var entry in ac.action2Objective)
     {
         currentBehavior += "Performing " + entry.Key.ToString() + " pursuant of " + entry.Value.ToString() + System.Environment.NewLine;
         if (entry.Key.DbgGetTarget() != null)
         {
             targets.Add(entry.Key.DbgGetTarget());
         }
     }
 }
Exemplo n.º 2
0
    public static void AddEntity(Entity entity)
    {
        entities.Add(entity);


        GameObject         display       = GameObject.Instantiate(viewer.prototype);
        UnityMeshComponent meshComponent = display.AddComponent <UnityMeshComponent>();

        if (entity.HasComponent <BehaviorComponent> ())
        {
            meshComponent.TogglePathfinding(true);
            meshComponent.ToggleCollision(false);
            //DBG appearance code
            var rend = meshComponent.gameObject.GetComponent <Renderer> ();
            rend.material.color           = Color.red;
            meshComponent.gameObject.name = "agent";
        }
        else
        {
            meshComponent.TogglePathfinding(false);
            meshComponent.ToggleCollision(true);
        }

        entity.AddComponent <UnityMeshComponent> (meshComponent);
        //meshComponent.SetEntity (entity);
        displaysMap[entity] = display;
        var pos = entity.GetComponent <PositionComponent> ();

        if (pos == null)
        {
            return;
        }
        Vector2Int coord = new Vector2Int(Mathf.FloorToInt(pos.position.x / viewer.mapTilePrefabSize), Mathf.FloorToInt(pos.position.y / viewer.mapTilePrefabSize));

        if (viewer.coordinate2Navmesh.ContainsKey(coord))
        {
            var navmesh = viewer.coordinate2Navmesh [coord];
            viewer.rebakeQueue.Enqueue(navmesh);
        }
        else
        {
            Mathf.Sqrt(2f);
        }
        display.SetActive(true);
    }
 // Use this for initialization
 void Start()
 {
     umc = GetComponent <UnityMeshComponent> ();
 }