示例#1
0
 // Use this for initialization
 void Start()
 {
     disable_all_range_circles();
     curr_wp_mode = wp_mode.selecten;
     foreach (GameObject n in nodeObjects)
     {
         n.GetComponent <path_point> ().is_selected = false;
     }
 }
示例#2
0
 private void deselect_all_waypoints()
 {
     curr_wp_mode = wp_mode.none;
     foreach (GameObject n in nodeObjects)
     {
         n.GetComponent <path_point> ().is_selected = false;
         map_wp_to_ui(-1);
     }
     selected_wp_id = -1;
 }
示例#3
0
 public void remove_connections()
 {
     curr_wp_mode = wp_mode.none;
     if (selected_wp_id > 0)
     {
         List <wp_edge> edges_to_remove = new List <wp_edge> ();
         foreach (wp_edge n in edgelist)
         {
             if (n.dest_id == selected_wp_id || n.source_id == selected_wp_id)
             {
                 edges_to_remove.Add(n);
             }
         }
         foreach (wp_edge n in edges_to_remove)
         {
             edgelist.Remove(n);
         }
         refresh_edge_visuals();
     }
 }
示例#4
0
    // Update is called once per frame
    void Update()
    {
        //DEBUG
        if (curr_wp_mode == wp_mode.none)
        {
            curr_wp_mode = wp_mode.selecten;
            //Debug.log("none to selecten");
            disable_all_range_circles();
            disable_all_colliders();
        }



        //WP DELTETEN auch hier wieder den wp in der base ausnehmen
        if (curr_wp_mode == wp_mode.deleten && selected_wp_id > 1)
        {
            //if (GameObject.Find ("node_" + selected_wp_id.ToString ()).GetComponent<path_point> ().type == path_point.node_type.normal_node) {
            if (getNodeObjectById(selected_wp_id).GetComponent <path_point> ().type == path_point.node_type.normal_node)
            {
                //alle edes löschen
                foreach (wp_edge n in edgelist)
                {
                    if (n.dest_id == selected_wp_id || n.source_id == selected_wp_id)
                    {
                        edgelist.Remove(n);
                    }
                }
                //WP Objekt löschen
                //Destroy (GameObject.Find ("node_" + selected_wp_id.ToString ()));
                Destroy(getNodeObjectById(selected_wp_id));
                GameObject.Find(vars.base_name).GetComponent <base_manager>().res_a_storage += wp_add_cost_a;
                GameObject.Find(vars.base_name).GetComponent <base_manager>().res_b_storage += wp_add_cost_b;
                GameObject.Find("audio_playback_manager").GetComponent <audio_playback_manager>().play_wp_remove_sound();
                //alle linien neu anzeigen lassen
                refresh_edge_visuals();
                //switch ui view to default
                GameObject.Find("ui_manager").GetComponent <ui_manager> ().slot_0_set_empty();
            }
        }


        //WP ADDEN
        if (curr_wp_mode == wp_mode.adden)
        {
            disable_all_range_circles();
            //if(GameObject.Find ("node_" + selected_wp_id.ToString ()).GetComponent<path_point>().type == path_point.node_type.normal_node){
            if (waypoint_prefab != null)
            {
                //Debug.log("add 1");
                //enable_all_colliders ();
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                // Casts the ray and get the first game object hit
                if (Physics.Raycast(ray, out hit, Mathf.Infinity))
                {
                    //Debug.log("add 2");
                    //Debug.log (hit.collider);
                    if (sgo == null)
                    {
                        sgo = (GameObject)Instantiate(waypoint_prefab, new Vector3(hit.point.x, 0.0f, hit.point.z), Quaternion.FromToRotation(Vector3.up, hit.normal));                    //neue instanz erstellen
                        //Debug.log("add 3");
                        sgo.GetComponent <path_point>().disabled_collider();
                    }
                    //Debug.log(sgo.GetComponent<CapsuleCollider>().enabled);
                    if (Vector3.Distance(new Vector3(hit.point.x, 0.0f, hit.point.z), selected_wp_pos) <= selection_range && hit.collider.gameObject.tag == "ground")
                    {
                        //Debug.log("add 4");
                        sgo.transform.position = new Vector3(hit.point.x, 0.0f, hit.point.z);
                        sgo.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
                        if (!EventSystem.current.IsPointerOverGameObject())
                        {
                            // WP kostet nur scouts!
                            if (Input.GetMouseButtonDown(0) && GameObject.Find(vars.base_name).GetComponent <base_manager>().bought_scout_ants > 0)
                            {
                                //Debug.log ("add wp process");
                                //GameObject sgo = (GameObject)Instantiate (waypoint_prefab, hit.point, Quaternion.FromToRotation (Vector3.up, hit.normal)); //neue instanz erstellen
                                sgo.GetComponent <path_point> ().is_selected = true;                                //den neu erstellten selektieren
                                sgo.GetComponent <path_point> ().setStatus(path_point.node_status.placed);
                                //selected_wp_id = sgo.GetComponent<path_point> ().waypoint_id;
                                //Debug.log ("add edge");
                                Vector3 sd = sgo.transform.position;
                                Vector3 dd = selected_wp_pos;
                                //wp_edge tmp_edge = new wp_edge (edgelist.Count, sgo.GetComponent<path_point>().waypoint_id, selected_wp_id, Vector3.Distance (sd, dd));
                                //edgelist.Add (tmp_edge);
                                wp_edge tmp_edge_test = new wp_edge(edgelist.Count, selected_wp_id, sgo.GetComponent <path_point>().waypoint_id, Vector3.Distance(sd, dd));
                                edgelist.Add(tmp_edge_test);

                                select_waypoint_with_id(sgo.GetComponent <path_point> ().waypoint_id);
                                //selected_wp_id = sgo.GetComponent<path_point> ().waypoint_id;
                                map_wp_to_ui(sgo.GetComponent <path_point>().waypoint_id);            //ui auf den neuen WP mappen
                                curr_wp_mode = wp_mode.adden;                                         //wieder in adden mode gehen
                                sgo.GetComponent <path_point>().enable_collider();
                                sgo.GetComponent <CapsuleCollider>().enabled = true;


                                //GameObject.Find(vars.base_name).GetComponent<base_manager>().res_a_storage -= wp_add_cost_a;
                                //GameObject.Find(vars.base_name).GetComponent<base_manager>().res_b_storage -= wp_add_cost_b;
                                //newScout.GetComponent<ScoutScript>().initializeScout(sgo.GetComponent<path_point>());

                                refresh_edge_visuals();
                                convert_edgelist_to_dijkstra_node_list();
                                GameObject  newScout    = (GameObject)Instantiate(scoutPrefab, new Vector3(transform.position.x + 2.0f, transform.position.y, transform.position.z), Quaternion.identity);
                                ScoutScript scoutScript = newScout.GetComponent <ScoutScript>();
                                if (scoutScript)
                                {
                                    scoutScript.initializeScout(sgo.GetComponent <path_point>());
                                }
                                sgo = null;
                                GameObject.Find("audio_playback_manager").GetComponent <audio_playback_manager>().play_wp_add_succ_sound();
                            }
                            else if (Input.GetMouseButtonDown(1))
                            {
                                GameObject.Find("audio_playback_manager").GetComponent <audio_playback_manager>().play_wp_add_fail_sound();
                            }    //ende mouse button
                        }        //ende distance
                    }
                }                //ende raycast
            }
            //}
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                if (Input.GetMouseButtonDown(1))                    //abbrechen
                {
                    if (sgo.GetComponent <path_point>().type == path_point.node_type.base_node)
                    {
                        removeBaseObject(sgo);
                    }
                    else if (sgo.GetComponent <path_point>().type == path_point.node_type.res_node)
                    {
                        removeResObject(sgo);
                    }
                    removeNodeObject(sgo);
                    deselect_all_waypoints();
                    Destroy(sgo);
                    sgo = null;
                    WP_COUNTER_MAIN--;
                    //Debug.log("select btn 1");
                    curr_wp_mode = wp_mode.none;
                }
            }
        }


        //WP CONNECTEN
        if (curr_wp_mode == wp_mode.connecten && selected_wp_id > 0)
        {
            //Debug.log ("con 1");
            //	if (GameObject.Find ("node_" + selected_wp_id.ToString ()).GetComponent<path_point>().type == path_point.node_type.normal_node) {
            //Debug.log ("con 2");
            //disable_collider_on_slelected (selected_wp_id);
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            RaycastHit coll_hit;
            // Casts the ray and get the first game object hit
            if (Physics.Raycast(ray, out hit, 100.0f))
            {
                //Debug.log ("con 3");

                if (nodeObjects.Contains(hit.collider.gameObject) && Vector3.Distance(hit.point, selected_wp_pos) < (selection_range + 1))
                {
                    //Debug.log ("con 4");
                    if (!EventSystem.current.IsPointerOverGameObject())
                    {
                        if (Input.GetMouseButtonDown(0))
                        {
                            //Debug.log ("con 5");
                            //ist in reichweite
                            //jetzt schauen ob
                            int  tmp_dest_id   = hit.collider.gameObject.GetComponent <path_point> ().waypoint_id;
                            int  tmp_origin_id = selected_wp_id;
                            bool war_was       = false;

                            List <wp_edge> edges_to_remove = new List <wp_edge> ();
                            if (tmp_dest_id != tmp_origin_id)
                            {
                                //edges_to_remove.Clear();
                                foreach (wp_edge e in edgelist)
                                {
                                    if ((e.dest_id == tmp_dest_id && e.source_id == tmp_origin_id) || (e.source_id == tmp_dest_id && e.dest_id == tmp_origin_id))
                                    {
                                        war_was = true;
                                        edges_to_remove.Add(e);
                                        //Debug.log (" con 6 remove edje");
                                    }
                                }



                                //neue edge adden
                                if (!war_was)
                                {
                                    GameObject.Find("audio_playback_manager").GetComponent <audio_playback_manager>().play_wp_connect_sound();
                                    //Debug.log ("con 7 add edge");
                                    Vector3 sd       = getNodeObjectById(tmp_dest_id).transform.position;
                                    Vector3 dd       = getNodeObjectById(tmp_origin_id).transform.position;
                                    wp_edge tmp_edge = new wp_edge(edgelist.Count, tmp_origin_id, tmp_dest_id, Vector3.Distance(sd, dd));
                                    edgelist.Add(tmp_edge);
                                    //wp_edge tmp_edge_test = new wp_edge (edgelist.Count, tmp_dest_id, tmp_origin_id, Vector3.Distance (sd, dd));
                                    //edgelist.Add (tmp_edge_test);
                                    refresh_edge_visuals();
                                    curr_wp_mode = wp_mode.selecten;
                                }
                                else
                                {
                                    GameObject.Find("audio_playback_manager").GetComponent <audio_playback_manager>().play_wp_disconnect_sound();
                                    //remove edge
                                    foreach (wp_edge etr in edges_to_remove)
                                    {
                                        edgelist.Remove(etr);
                                    }
                                }
                                convert_edgelist_to_dijkstra_node_list();
                            }
                        }
                    }
                }
            }
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                //enable_collider_on_selected (selected_wp_id);
                if (Input.GetMouseButtonDown(1))
                {
                    curr_wp_mode = wp_mode.none;
                }
            }
            //	}
        }


        //VERSCHIEBEN
        if (curr_wp_mode == wp_mode.verschieben && selected_wp_id > 0)
        {
            //Debug.log ("move 1");
            disable_collider_on_slelected(selected_wp_id);
            enable_range_cirlce_on_slelected(selected_wp_id);
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            // Casts the ray and get the first game object hit
            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                //Debug.log ("move 2");
                RaycastHit coll_hit;
                if (hit.collider.gameObject.tag == "ground" && Vector3.Distance(hit.point, selected_wp_pos) <= 10.0f)
                {
                    //Debug.log ("move 3");
                    remove_connections();
                    Vector3 origin = new Vector3(selected_wp_pos.x, selected_wp_pos.y + selected_wp_scale.y, selected_wp_pos.z);
                    Vector3 dest   = new Vector3(hit.point.x, hit.point.y + selected_wp_scale.y, hit.point.z);
                    if (Physics.Raycast(origin, dest, out coll_hit, 100))
                    {
                        //Debug.log ("move 4");

                        //GameObject.Find ("node_" + selected_wp_id).gameObject.transform.position = hit.point;
                        //GameObject.Find ("node_" + selected_wp_id).gameObject.transform.rotation = Quaternion.FromToRotation (Vector3.up, hit.normal);
                        getNodeObjectById(selected_wp_id).gameObject.transform.position = hit.point;
                        getNodeObjectById(selected_wp_id).gameObject.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
                        //set new pos -> kosten abziehen
                        if (!EventSystem.current.IsPointerOverGameObject())
                        {
                            if (Input.GetMouseButtonDown(0) && GameObject.Find(vars.base_name).GetComponent <base_manager>().res_a_storage >= wp_move_cost_a && GameObject.Find(vars.base_name).GetComponent <base_manager>().res_b_storage >= wp_move_cost_b)
                            {
                                //Debug.log ("move 5");
                                enable_collider_on_selected(selected_wp_id);
                                curr_wp_mode = wp_mode.none;
                                GameObject.Find(vars.base_name).GetComponent <base_manager>().res_a_storage -= wp_move_cost_a;
                                GameObject.Find(vars.base_name).GetComponent <base_manager>().res_b_storage -= wp_move_cost_b;
                                GameObject.Find("audio_playback_manager").GetComponent <audio_playback_manager>().play_wp_move_place_sound();
                            }                            //ende getmouse
                        }
                    }
                    convert_edgelist_to_dijkstra_node_list();
                    refresh_edge_visuals();
                }
            }
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                if (Input.GetMouseButtonDown(1))
                {
                    enable_collider_on_selected(selected_wp_id);
                    //GameObject.Find ("node_" + selected_wp_id).gameObject.transform.position = selected_wp_pos;
                    //GameObject.Find ("node_" + selected_wp_id).gameObject.transform.rotation = selected_wp_rot;

                    getNodeObjectById(selected_wp_id).gameObject.transform.position = selected_wp_pos;
                    curr_wp_mode = wp_mode.none;
                }
            }
        }



        //SELECTEN
        if (!EventSystem.current.IsPointerOverGameObject())
        {
            if (Input.GetMouseButtonDown(0) && curr_wp_mode == wp_mode.selecten)
            {
                //Debug.log ("select 1");
                disable_all_range_circles();
                enable_all_colliders();
                enable_range_cirlce_on_slelected(selected_wp_id);
                GameObject rayobj = GetClickedGameObject();
                foreach (GameObject n in nodeObjects)
                {
                    //Debug.log(n.gameObject.name);
                    if (rayobj == n.gameObject && rayobj != null)
                    {
                        //Debug.log ("select 2");
                        int wpid = rayobj.GetComponent <path_point> ().waypoint_id;
                        deselect_all_waypoints();
                        select_waypoint_with_id(wpid);
                        map_wp_to_ui(wpid);
                        selected_wp_id = wpid;
                        curr_wp_mode   = wp_mode.selecten;
                        //Debug.log ("wp_selected id:" + selected_wp_id.ToString ());
                        break;
                    }

                    /*}else if (rayobj == n.gameObject && rayobj != null) {
                     *
                     *      //Debug.log ("select 3");
                     *      int wpid = rayobj.GetComponent<path_point> ().waypoint_id;
                     *      deselect_all_waypoints ();
                     *      select_waypoint_with_id (wpid);
                     *      map_wp_to_ui (wpid);
                     *      selected_wp_id = wpid;
                     *      curr_wp_mode = wp_mode.selecten;
                     *      //Debug.log ("wp_selected id:" + selected_wp_id.ToString ());
                     *      break;
                     * }*/
                }
            }
            else
            {
                if (!EventSystem.current.IsPointerOverGameObject())
                {
                    if (Input.GetMouseButtonDown(1))
                    {
                        GameObject.Find("audio_playback_manager").GetComponent <audio_playback_manager>().play_wp_select_sound();
                        //Debug.log("deselect all");
                        deselect_all_waypoints();
                        disable_all_range_circles();
                    }
                }
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        //DEBUG
        if (curr_wp_mode == wp_mode.none) {
            curr_wp_mode = wp_mode.selecten;
            //Debug.log("none to selecten");
            disable_all_range_circles();
            disable_all_colliders ();
        }

        //WP DELTETEN auch hier wieder den wp in der base ausnehmen
        if (curr_wp_mode == wp_mode.deleten && selected_wp_id > 1) {
            //if (GameObject.Find ("node_" + selected_wp_id.ToString ()).GetComponent<path_point> ().type == path_point.node_type.normal_node) {
            if(getNodeObjectById(selected_wp_id).GetComponent<path_point> ().type == path_point.node_type.normal_node) {
                //alle edes löschen
                foreach (wp_edge n in edgelist) {
                    if (n.dest_id == selected_wp_id || n.source_id == selected_wp_id) {
                        edgelist.Remove (n);
                    }
                }
                //WP Objekt löschen
                //Destroy (GameObject.Find ("node_" + selected_wp_id.ToString ()));
                Destroy (getNodeObjectById(selected_wp_id));
                GameObject.Find(vars.base_name).GetComponent<base_manager>().res_a_storage += wp_add_cost_a;
                GameObject.Find(vars.base_name).GetComponent<base_manager>().res_b_storage += wp_add_cost_b;
                GameObject.Find("audio_playback_manager").GetComponent<audio_playback_manager>().play_wp_remove_sound();
                //alle linien neu anzeigen lassen
                refresh_edge_visuals ();
                //switch ui view to default
                GameObject.Find ("ui_manager").GetComponent<ui_manager> ().slot_0_set_empty();
            }
        }

        //WP ADDEN
        if (curr_wp_mode == wp_mode.adden) {

            disable_all_range_circles();
            //if(GameObject.Find ("node_" + selected_wp_id.ToString ()).GetComponent<path_point>().type == path_point.node_type.normal_node){
            if (waypoint_prefab != null) {
                //Debug.log("add 1");
                //enable_all_colliders ();
                Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
                RaycastHit hit;
                // Casts the ray and get the first game object hit
                if (Physics.Raycast (ray, out hit, Mathf.Infinity)) {
                    //Debug.log("add 2");
                    //Debug.log (hit.collider);
                    if(sgo == null){
                     sgo = (GameObject)Instantiate (waypoint_prefab, new Vector3(hit.point.x, 0.0f, hit.point.z), Quaternion.FromToRotation (Vector3.up, hit.normal)); //neue instanz erstellen
                        //Debug.log("add 3");
                        sgo.GetComponent<path_point>().disabled_collider();
                    }
                    //Debug.log(sgo.GetComponent<CapsuleCollider>().enabled);
                    if(Vector3.Distance (new Vector3(hit.point.x, 0.0f, hit.point.z), selected_wp_pos) <= selection_range && hit.collider.gameObject.tag == "ground"  ){
                        //Debug.log("add 4");
                        sgo.transform.position = new Vector3(hit.point.x, 0.0f, hit.point.z);
                        sgo.transform.rotation = Quaternion.FromToRotation (Vector3.up, hit.normal);
                        if (!EventSystem.current.IsPointerOverGameObject())
                        {
                            // WP kostet nur scouts!
                            if (Input.GetMouseButtonDown (0) && GameObject.Find(vars.base_name).GetComponent<base_manager>().bought_scout_ants >0 ) {
                                //Debug.log ("add wp process");
                                //GameObject sgo = (GameObject)Instantiate (waypoint_prefab, hit.point, Quaternion.FromToRotation (Vector3.up, hit.normal)); //neue instanz erstellen
                                sgo.GetComponent<path_point> ().is_selected = true; //den neu erstellten selektieren
                                sgo.GetComponent<path_point> ().setStatus(path_point.node_status.placed);
                                    //selected_wp_id = sgo.GetComponent<path_point> ().waypoint_id;
                                    //Debug.log ("add edge");
                                    Vector3 sd = sgo.transform.position;
                                    Vector3 dd = selected_wp_pos;
                                    //wp_edge tmp_edge = new wp_edge (edgelist.Count, sgo.GetComponent<path_point>().waypoint_id, selected_wp_id, Vector3.Distance (sd, dd));
                                    //edgelist.Add (tmp_edge);
                                    wp_edge tmp_edge_test = new wp_edge (edgelist.Count, selected_wp_id, sgo.GetComponent<path_point>().waypoint_id, Vector3.Distance (sd, dd));
                                    edgelist.Add (tmp_edge_test);

                                    select_waypoint_with_id(sgo.GetComponent<path_point> ().waypoint_id);
                                    //selected_wp_id = sgo.GetComponent<path_point> ().waypoint_id;
                                    map_wp_to_ui (sgo.GetComponent<path_point>().waypoint_id); //ui auf den neuen WP mappen
                                    curr_wp_mode = wp_mode.adden; //wieder in adden mode gehen
                                    sgo.GetComponent<path_point>().enable_collider();
                                    sgo.GetComponent<CapsuleCollider>().enabled = true;

                                //GameObject.Find(vars.base_name).GetComponent<base_manager>().res_a_storage -= wp_add_cost_a;
                                //GameObject.Find(vars.base_name).GetComponent<base_manager>().res_b_storage -= wp_add_cost_b;
                                //newScout.GetComponent<ScoutScript>().initializeScout(sgo.GetComponent<path_point>());

                                    refresh_edge_visuals ();
                                    convert_edgelist_to_dijkstra_node_list ();
                                GameObject newScout = (GameObject)Instantiate(scoutPrefab, new Vector3(transform.position.x+2.0f, transform.position.y, transform.position.z), Quaternion.identity);
                                ScoutScript scoutScript = newScout.GetComponent<ScoutScript>();
                                if(scoutScript) {
                                    scoutScript.initializeScout(sgo.GetComponent<path_point>());
                                }
                                sgo = null;
                                GameObject.Find("audio_playback_manager").GetComponent<audio_playback_manager>().play_wp_add_succ_sound();
                            }else if(Input.GetMouseButtonDown (1)){
                                GameObject.Find("audio_playback_manager").GetComponent<audio_playback_manager>().play_wp_add_fail_sound();
                            } //ende mouse button
                            } //ende distance
                    }
                }//ende raycast
            }
            //}
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                if (Input.GetMouseButtonDown (1)) { //abbrechen
                    if(sgo.GetComponent<path_point>().type == path_point.node_type.base_node){
                        removeBaseObject(sgo);
                    }else if(sgo.GetComponent<path_point>().type == path_point.node_type.res_node){
                        removeResObject(sgo);
                    }
                    removeNodeObject(sgo);
                    deselect_all_waypoints();
                    Destroy(sgo);
                    sgo = null;
                    WP_COUNTER_MAIN--;
                    //Debug.log("select btn 1");
                    curr_wp_mode = wp_mode.none;
                }
            }

        }

        //WP CONNECTEN
        if (curr_wp_mode == wp_mode.connecten && selected_wp_id > 0) {
            //Debug.log ("con 1");
            //	if (GameObject.Find ("node_" + selected_wp_id.ToString ()).GetComponent<path_point>().type == path_point.node_type.normal_node) {
            //Debug.log ("con 2");
            //disable_collider_on_slelected (selected_wp_id);
            Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
            RaycastHit hit;
            RaycastHit coll_hit;
            // Casts the ray and get the first game object hit
            if (Physics.Raycast (ray, out hit, 100.0f)) {
                //Debug.log ("con 3");

                if (nodeObjects.Contains(hit.collider.gameObject) && Vector3.Distance (hit.point, selected_wp_pos) < (selection_range+1)) {
                    //Debug.log ("con 4");
                    if (!EventSystem.current.IsPointerOverGameObject())
                    {
                        if (Input.GetMouseButtonDown (0)) {
                            //Debug.log ("con 5");
                            //ist in reichweite
                            //jetzt schauen ob
                            int tmp_dest_id = hit.collider.gameObject.GetComponent<path_point> ().waypoint_id;
                            int tmp_origin_id = selected_wp_id;
                            bool war_was = false;

                            List<wp_edge> edges_to_remove = new List<wp_edge> ();
                            if(tmp_dest_id != tmp_origin_id){
                            //edges_to_remove.Clear();
                            foreach (wp_edge e in edgelist) {
                                if ((e.dest_id == tmp_dest_id && e.source_id == tmp_origin_id) || (e.source_id == tmp_dest_id && e.dest_id == tmp_origin_id)) {
                                    war_was = true;
                                    edges_to_remove.Add (e);
                                    //Debug.log (" con 6 remove edje");
                                }
                            }

                            //neue edge adden
                            if (!war_was) {
                                    GameObject.Find("audio_playback_manager").GetComponent<audio_playback_manager>().play_wp_connect_sound();
                                //Debug.log ("con 7 add edge");
                                    Vector3 sd = getNodeObjectById(tmp_dest_id).transform.position;
                                    Vector3 dd = getNodeObjectById(tmp_origin_id).transform.position;
                                wp_edge tmp_edge = new wp_edge (edgelist.Count, tmp_origin_id, tmp_dest_id, Vector3.Distance (sd, dd));
                                edgelist.Add (tmp_edge);
                                //wp_edge tmp_edge_test = new wp_edge (edgelist.Count, tmp_dest_id, tmp_origin_id, Vector3.Distance (sd, dd));
                                //edgelist.Add (tmp_edge_test);
                                refresh_edge_visuals ();
                                curr_wp_mode = wp_mode.selecten;
                            } else {
                                    GameObject.Find("audio_playback_manager").GetComponent<audio_playback_manager>().play_wp_disconnect_sound();
                                //remove edge
                                foreach (wp_edge etr in edges_to_remove) {
                                    edgelist.Remove (etr);
                                }

                            }
                                convert_edgelist_to_dijkstra_node_list ();
                            }

                        }

                        }
                    }

            }
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                //enable_collider_on_selected (selected_wp_id);
                if (Input.GetMouseButtonDown (1)) {
                    curr_wp_mode = wp_mode.none;
                }
            }
            //	}
        }

        //VERSCHIEBEN
        if (curr_wp_mode == wp_mode.verschieben && selected_wp_id > 0) {
            //Debug.log ("move 1");
            disable_collider_on_slelected (selected_wp_id);
            enable_range_cirlce_on_slelected (selected_wp_id);
            Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
            RaycastHit hit;
            // Casts the ray and get the first game object hit
            if (Physics.Raycast (ray, out hit, Mathf.Infinity)) {
                //Debug.log ("move 2");
                RaycastHit coll_hit;
                if (hit.collider.gameObject.tag == "ground" && Vector3.Distance (hit.point, selected_wp_pos) <= 10.0f) {
                    //Debug.log ("move 3");
                    remove_connections();
                    Vector3 origin = new Vector3 (selected_wp_pos.x, selected_wp_pos.y + selected_wp_scale.y, selected_wp_pos.z);
                    Vector3 dest = new Vector3 (hit.point.x, hit.point.y + selected_wp_scale.y, hit.point.z);
                    if (Physics.Raycast (origin, dest, out coll_hit, 100)) {
                        //Debug.log ("move 4");

                        //GameObject.Find ("node_" + selected_wp_id).gameObject.transform.position = hit.point;
                        //GameObject.Find ("node_" + selected_wp_id).gameObject.transform.rotation = Quaternion.FromToRotation (Vector3.up, hit.normal);
                        getNodeObjectById(selected_wp_id).gameObject.transform.position = hit.point;
                        getNodeObjectById(selected_wp_id).gameObject.transform.rotation = Quaternion.FromToRotation (Vector3.up, hit.normal);
                        //set new pos -> kosten abziehen
                        if (!EventSystem.current.IsPointerOverGameObject())
                        {
                            if (Input.GetMouseButtonDown (0) && GameObject.Find(vars.base_name).GetComponent<base_manager>().res_a_storage >= wp_move_cost_a && GameObject.Find(vars.base_name).GetComponent<base_manager>().res_b_storage >= wp_move_cost_b ) {
                                //Debug.log ("move 5");
                                enable_collider_on_selected (selected_wp_id);
                                curr_wp_mode = wp_mode.none;
                                GameObject.Find(vars.base_name).GetComponent<base_manager>().res_a_storage -= wp_move_cost_a;
                                GameObject.Find(vars.base_name).GetComponent<base_manager>().res_b_storage -= wp_move_cost_b;
                                GameObject.Find("audio_playback_manager").GetComponent<audio_playback_manager>().play_wp_move_place_sound();

                            }//ende getmouse
                        }
                    }
                    convert_edgelist_to_dijkstra_node_list();
                    refresh_edge_visuals();
                }
            }
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                if (Input.GetMouseButtonDown (1)) {
                    enable_collider_on_selected (selected_wp_id);
                    //GameObject.Find ("node_" + selected_wp_id).gameObject.transform.position = selected_wp_pos;
                    //GameObject.Find ("node_" + selected_wp_id).gameObject.transform.rotation = selected_wp_rot;

                    getNodeObjectById(selected_wp_id).gameObject.transform.position = selected_wp_pos;
                    curr_wp_mode = wp_mode.none;
                }
            }
        }

        //SELECTEN
        if (!EventSystem.current.IsPointerOverGameObject())
        {
            if (Input.GetMouseButtonDown (0) && curr_wp_mode == wp_mode.selecten) {
                //Debug.log ("select 1");
                disable_all_range_circles();
                enable_all_colliders ();
                enable_range_cirlce_on_slelected (selected_wp_id);
                GameObject rayobj = GetClickedGameObject ();
                foreach (GameObject n in nodeObjects) {

                    //Debug.log(n.gameObject.name);
                     if(rayobj == n.gameObject && rayobj != null) {
                        //Debug.log ("select 2");
                        int wpid = rayobj.GetComponent<path_point> ().waypoint_id;
                        deselect_all_waypoints ();
                        select_waypoint_with_id (wpid);
                        map_wp_to_ui (wpid);
                        selected_wp_id = wpid;
                        curr_wp_mode = wp_mode.selecten;
                        //Debug.log ("wp_selected id:" + selected_wp_id.ToString ());
                        break;
                    }
                    /*}else if (rayobj == n.gameObject && rayobj != null) {

                        //Debug.log ("select 3");
                        int wpid = rayobj.GetComponent<path_point> ().waypoint_id;
                        deselect_all_waypoints ();
                        select_waypoint_with_id (wpid);
                        map_wp_to_ui (wpid);
                        selected_wp_id = wpid;
                        curr_wp_mode = wp_mode.selecten;
                        //Debug.log ("wp_selected id:" + selected_wp_id.ToString ());
                        break;
                    }*/

                }

            }else{
                if (!EventSystem.current.IsPointerOverGameObject())
                {
                    if (Input.GetMouseButtonDown (1)) {
                        GameObject.Find("audio_playback_manager").GetComponent<audio_playback_manager>().play_wp_select_sound();
                        //Debug.log("deselect all");
                        deselect_all_waypoints ();
                        disable_all_range_circles ();
                    }
                }
            }
        }
    }
 // Use this for initialization
 void Start()
 {
     disable_all_range_circles ();
     curr_wp_mode = wp_mode.selecten;
     foreach (GameObject n in nodeObjects) {
         n.GetComponent<path_point> ().is_selected = false;
     }
 }
 private void deselect_all_waypoints()
 {
     curr_wp_mode = wp_mode.none;
     foreach (GameObject n in nodeObjects) {
         n.GetComponent<path_point> ().is_selected = false;
         map_wp_to_ui (-1);
     }
     selected_wp_id = -1;
 }
 public void remove_connections()
 {
     curr_wp_mode = wp_mode.none;
     if (selected_wp_id > 0) {
         List<wp_edge> edges_to_remove = new List<wp_edge> ();
         foreach (wp_edge n in edgelist) {
             if (n.dest_id == selected_wp_id || n.source_id == selected_wp_id) {
                 edges_to_remove.Add (n);
             }
         }
         foreach (wp_edge n in edges_to_remove) {
             edgelist.Remove (n);
         }
         refresh_edge_visuals ();
     }
 }