Ejemplo n.º 1
0
        /// <summary>
        /// Issues a move order to all selected Actor objects
        /// </summary>
        /// <param name="eventData"></param>
        public void IssueMoveOrder(PointerEventData eventData)
        {
            GuiController.HideContextMenu();

            //this should be done diffently, but for some reason I'm getting 0,0,0 world position
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(Camera.main.transform.position, ray.direction, out hit, Mathf.Infinity, 1 << LayerMask.NameToLayer("Terrain")))
            {
                foreach (NeolithicObject s in selected)
                {
                    ActorController a = s.GetComponent <ActorController>();
                    if (a)
                    {
                        BaseOrder move = new SimpleMoveOrder(a, hit.point);
                        if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
                        {
                            a.EnqueueOrder(move);
                        }
                        else
                        {
                            a.OverrideOrder(move);
                        }
                    }
                }
            }
        }
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();
            ActorController a = (ActorController)target;

            if (GUILayout.Button("Panic"))
            {
                GameObject go    = GameObject.Find("DumpingGround");
                var        order = new SimpleMoveOrder(a, go.transform.position);
                a.Panic(order);
            }
        }