public DataGridView Pack_Elements(int Table_length, int Table_width, DataGridView Elements)
        {
            //
            // Packing elements in sequence along X axis of table,
            // with horizontal orientation exclusively.
            //
            // Algorithm has optimisation for adjusting area
            // of positions along X axes
            //

            //
            // This method needs three arguments and returns one argument.
            // Table_length, Table_width and DataGridView Elements.
            //
            // Structure of DataGridView that is going to be passed as argument,
            // from caller method, must be the same as structure of
            // DataGridView ELEMENT_LIST.
            //
            // Method returns DataGridView TABLE_LIST with data
            // of packed elements: index, x, y, length and width.
            //

            //
            //
            //
            Initialize_Tables();

            //
            //
            //
            Initialize_Variables();

            //
            // Set table length and width
            //
            Tl = Table_length;
            Tw = Table_width;

            //
            // Copy element dimensions from DataGridView Elements
            // to ELEMENT_LIST table and format it's values
            //

            // Set elements counter to zero
            n = 0;

            // Set table row counter to zero
            i = 0;

            // Fill ELEMENT_LIST
            for (i = 0; i < Elements.RowCount; i++)
            {
                if (Elements[1, i].Value != null)
                {
                    ELEMENT_LIST.Rows.Add();
                    ELEMENT_LIST[0, i].Value = (int.Parse(Elements[0, i].Value.ToString())).ToString(format);
                    ELEMENT_LIST[1, i].Value = (int.Parse(Elements[1, i].Value.ToString())).ToString(format);
                    ELEMENT_LIST[2, i].Value = (int.Parse(Elements[2, i].Value.ToString())).ToString(format);
                    ELEMENT_LIST[3, i].Value = (int.Parse(Elements[3, i].Value.ToString())).ToString(format);
                    ELEMENT_LIST[4, i].Value = (int.Parse(Elements[4, i].Value.ToString())).ToString(format);

                    // Increase elements counter by one
                    n++;
                }
            }

            //
            // Sort elements in descending sort order
            // first by area then by length then by width of elements
            //
            ELEMENT_LIST.Sort(ELEMENT_LIST.Columns[3], ListSortDirection.Descending);

            // Set position coordinates to origin
            p_X = 0;
            p_Y = 0;

            //
            // Enter coordinates and dimensions
            // of first position in table 'POSITION_LIST'
            //
            POSITION_LIST.Rows.Add(p_X.ToString(format),             // X coordinate
                                   p_Y.ToString(format),             // Y coordinate
                                   Tl.ToString(format),              // table lenght
                                   Tw.ToString(format));             // table width

            // Set position counter to one
            k = 1;

            // Set counter of packed elements to zero
            p = 0;

            //
            // Pack elements while there is free positions and
            // elements for packing
            //
            while (k > 0 && n > 0)
            {
                // Sort positions in ascending sort order first by Y, and then by X axes
                POSITION_LIST.Sort(POSITION_LIST.Columns[1], ListSortDirection.Ascending);

                // Get length and width of first position in 'POSITION_LIST'
                Pl = int.Parse(POSITION_LIST[2, 0].Value.ToString());
                Pw = int.Parse(POSITION_LIST[3, 0].Value.ToString());

                // Calculate fitting factor for each element for the first position
                for (i = 0; i < n; i++)
                {
                    // Element length
                    l = int.Parse(ELEMENT_LIST[1, i].Value.ToString());

                    // Element width
                    w = int.Parse(ELEMENT_LIST[2, i].Value.ToString());

                    // Set fitting factor initial value
                    f = 0;

                    // Does element fits inside position
                    if (Pl < l || Pw < w)
                    {
                        // If not
                        f = 0;
                    }
                    else
                    {
                        // If yes
                        f++;

                        //
                        if (Pl == l)
                        {
                            // If element fits exactly across lenght of position
                            f++;
                        }

                        //
                        if (Pw == w)
                        {
                            // If element fits exactly across width of position
                            f++;
                        }
                    }

                    // Enter fitting factor value inside ELEMENT_LIST table
                    ELEMENT_LIST[4, i].Value = f.ToString(format);
                }

                //
                // Sort elements in descending sort order first by fitting factor value,
                // then by area then by length then by width of elements
                //
                ELEMENT_LIST.Sort(ELEMENT_LIST.Columns[4], ListSortDirection.Descending);

                //
                // Get fitting factor value for the first element
                //
                f = int.Parse(ELEMENT_LIST[4, 0].Value.ToString());

                //
                // If fitting factor is greater than zero
                // element can be packed inside selected position
                //
                if (f > 0)
                {
                    //
                    // Get coordinates of selected position
                    //
                    p_X = int.Parse(POSITION_LIST[0, 0].Value.ToString());
                    p_Y = int.Parse(POSITION_LIST[1, 0].Value.ToString());

                    // Get index, length and width of packed element
                    x = int.Parse(ELEMENT_LIST[0, 0].Value.ToString());
                    l = int.Parse(ELEMENT_LIST[1, 0].Value.ToString());
                    w = int.Parse(ELEMENT_LIST[2, 0].Value.ToString());

                    //
                    // Enter coordinates of position,
                    // element dimensions and index,
                    // at TABLE LIST
                    //
                    TABLE_LIST.Rows.Add();
                    TABLE_LIST[0, p].Value = x.ToString();                      // index
                    TABLE_LIST[1, p].Value = p_X.ToString();                    // position x
                    TABLE_LIST[2, p].Value = p_Y.ToString();                    // position y
                    TABLE_LIST[3, p].Value = l.ToString();                      // element length
                    TABLE_LIST[4, p].Value = w.ToString();                      // element width

                    // Increase packed elements counter by one
                    p++;

                    // Erase packed element from list of elements
                    ELEMENT_LIST.Rows.RemoveAt(0);

                    // Decrease elements counter by one
                    n--;

                    //
                    // If there is free elements left
                    // seek for new positions
                    //
                    if (n > 0)
                    {
                        //
                        // Sort elements in descending sort order,
                        // first by area then by length then by width of elements
                        //
                        // This step is necessary for faster searching
                        // for element that can fit inside new positions
                        //
                        // And the elements are sorted accordingly to demand of
                        // second restriction in algorithm development
                        // for the next step in packing process
                        //
                        ELEMENT_LIST.Sort(ELEMENT_LIST.Columns[3], ListSortDirection.Descending);

                        // Set new position 'is adequate' state flag
                        P_ok = true;

                        //
                        // New position II with coordinates
                        // at upper left corner of previous
                        // packed element
                        //
                        if (Pw > w)
                        {
                            //
                            // Initialize local variables
                            //
                            X12 = 0;
                            Y12 = 0;
                            L12 = 0;
                            W12 = 0;
                            A12 = 0;

                            // Set new position 'is adequate' state flag
                            P_ok = false;

                            //
                            // Coordinates of new position II
                            //
                            X12 = p_X;
                            Y12 = p_Y + w;

                            //
                            // Length, width and area of new position II
                            //
                            L12 = Tl - X12;
                            W12 = Pw - w;
                            A12 = L12 * W12;

                            //
                            // Find is there element left that can fit inside position
                            //

                            // Set ELEMENT_LIST table counter value
                            i = n - 1;

                            //
                            // Get area of the last element in table
                            //
                            a = int.Parse(ELEMENT_LIST[3, i].Value.ToString());

                            while (a <= A12 && i > -1)
                            {
                                //
                                // Get next element area
                                //
                                a = int.Parse(ELEMENT_LIST[3, i].Value.ToString());

                                //
                                // Get element length and width value
                                //
                                Lmin = int.Parse(ELEMENT_LIST[1, i].Value.ToString());
                                Wmin = int.Parse(ELEMENT_LIST[2, i].Value.ToString());

                                //
                                // If element can fit
                                // at observed position,
                                // set new position II at list of positions
                                //
                                if (L12 >= Lmin && W12 >= Wmin)
                                {
                                    POSITION_LIST.Rows.Add(X12.ToString(format),
                                                           Y12.ToString(format),
                                                           L12.ToString(format),
                                                           W12.ToString(format));

                                    // Increase positions counter by one
                                    k++;

                                    // Set new position 'is adequate' state flag
                                    P_ok = true;

                                    // Set counter value to loop exit value
                                    i = -1;
                                }

                                // Decrease elements counter by one
                                i--;
                            }
                        }


                        //
                        // New position I with coordinates
                        // at lower right corner of previous
                        // packed element
                        //
                        if (Pl > l)
                        {
                            //
                            // Initialize local variables
                            //
                            X11 = 0;
                            Y11 = 0;
                            L11 = 0;
                            W11 = 0;
                            A11 = 0;

                            //
                            // Coordinates of new position I
                            //
                            X11 = p_X + l;
                            Y11 = p_Y;

                            //
                            // Length, width and area of new position I
                            //
                            L11 = Tl - X11;
                            W11 = w;
                            A11 = L11 * W11;

                            //
                            // If position two is inadeqate,
                            // adjust width of position one
                            //
                            if (!P_ok)
                            {
                                W11 = W11 + W12;
                                A11 = L11 * W11;
                            }



                            //
                            // Find is there element left that can fit inside position
                            //

                            // Set element counter value
                            i = n - 1;

                            //
                            // Get area of the last element in table
                            //
                            a = int.Parse(ELEMENT_LIST[3, i].Value.ToString());

                            while (a <= A11 && i > -1)
                            {
                                //
                                // Get next element area
                                //
                                a = int.Parse(ELEMENT_LIST[3, i].Value.ToString());

                                //
                                // Get element length and width value
                                //
                                Lmin = int.Parse(ELEMENT_LIST[1, i].Value.ToString());
                                Wmin = int.Parse(ELEMENT_LIST[2, i].Value.ToString());

                                //
                                // If there is element that can fit
                                // at position,
                                // set new position I at list of positions
                                //
                                if (L11 >= Lmin && W11 >= Wmin)
                                {
                                    POSITION_LIST.Rows.Add(X11.ToString(format),
                                                           Y11.ToString(format),
                                                           L11.ToString(format),
                                                           W11.ToString(format));

                                    // Increase positions counter by one
                                    k++;

                                    // Set counter value to loop exit value
                                    i = -1;
                                }

                                // Decrease elements counter by one
                                i--;
                            }
                        }
                    }
                }

                //
                // Is there free elements left for packing
                //
                if (n > 0)
                {
                    //
                    // Erase first position from list
                    //
                    POSITION_LIST.Rows.RemoveAt(0);

                    // Decrease positions counter by one
                    k--;
                }
            }

            //
            // End of packing process
            //
            return(TABLE_LIST);
        }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        NowCursorState = tmpCursor.GetComponent <AnimatedCursor>().tmpCursorState;

        PlaceBtnState  = PlaceButton.GetComponent <ButtonInteraction>().NowButtonState;
        DeleteBtnState = DeleteButton.GetComponent <ButtonInteraction>().NowButtonState;
        CancelBtnState = CancelButton.GetComponent <ButtonInteraction>().NowButtonState;


        lineRenderer = GetComponent <LineRenderer>();

        //Debug.Log("Cursor Position: " + tmpCursor.transform.position);

        //Vector3 CursorPosition = tmpCursor.GetComponent<Transform>().position;

        if ((ButtonInteraction.PosState == PosButtonType.PLACE) && (NowCursorState == CursorStateEnum.Release) &&
            (PlaceBtnState != ButtonStateEnum.Targeted) && (PlaceBtnState != ButtonStateEnum.Pressed) &&
            (DeleteBtnState != ButtonStateEnum.Observation) && (CancelBtnState != ButtonStateEnum.Observation))
        {
            if (SizeButtonCollection.SizeButtonState == SizeButtonType.MEDIUM)
            {
                offset = 6.0f;
            }
            else if (SizeButtonCollection.SizeButtonState == SizeButtonType.LARGE)
            {
                offset = 8.0f;
            }
            else if (SizeButtonCollection.SizeButtonState == SizeButtonType.SMALL)
            {
                offset = 5.0f;
            }

            Vector3 FinalPos = tmpCursor.transform.position - new Vector3(0f, 0f, 0.1f) * offset;
            Instantiate(PlaneObject, FinalPos, transform.rotation, this.transform);   //Genarate the drone

            ChildCount = this.transform.childCount;

            /*Use to process the three Red Light*/

            if (ChildCount > 1)
            {
                Vector3 pos1, pos2;                                                                          //the position of two way point(drone)
                Vector3 p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18; //Red light initial position
                pos1 = this.gameObject.transform.GetChild(ChildCount - 2).transform.position;
                pos2 = this.gameObject.transform.GetChild(ChildCount - 1).transform.position;

                p0  = (pos1 * 1 + pos2 * 19) / 20;
                p1  = (pos1 * 2 + pos2 * 18) / 20;
                p2  = (pos1 * 3 + pos2 * 17) / 20;
                p3  = (pos1 * 4 + pos2 * 16) / 20;
                p4  = (pos1 * 5 + pos2 * 15) / 20;
                p5  = (pos1 * 6 + pos2 * 14) / 20;
                p6  = (pos1 * 7 + pos2 * 13) / 20;
                p7  = (pos1 * 8 + pos2 * 12) / 20;
                p8  = (pos1 * 9 + pos2 * 11) / 20;
                p9  = (pos1 * 10 + pos2 * 10) / 20;
                p10 = (pos1 * 11 + pos2 * 9) / 20;
                p11 = (pos1 * 12 + pos2 * 8) / 20;
                p12 = (pos1 * 13 + pos2 * 7) / 20;
                p13 = (pos1 * 14 + pos2 * 6) / 20;
                p14 = (pos1 * 15 + pos2 * 5) / 20;

                p15 = (pos1 * 16 + pos2 * 4) / 20;
                p16 = (pos1 * 17 + pos2 * 3) / 20;
                p17 = (pos1 * 18 + pos2 * 2) / 20;
                p18 = (pos1 * 19 + pos2 * 1) / 20;


                L0 = Instantiate(CloneRedLight_0, p0, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L0.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L0.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L0.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L1 = Instantiate(CloneRedLight_1, p1, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L1.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L1.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L1.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L2 = Instantiate(CloneRedLight_2, p2, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L2.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L2.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L2.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L3 = Instantiate(CloneRedLight_3, p3, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L3.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L3.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L3.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L4 = Instantiate(CloneRedLight_4, p4, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L4.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L4.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L4.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L5 = Instantiate(CloneRedLight_5, p5, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L5.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L5.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L5.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L6 = Instantiate(CloneRedLight_6, p6, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L6.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L6.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L6.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L7 = Instantiate(CloneRedLight_7, p7, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L7.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L7.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L7.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L8 = Instantiate(CloneRedLight_8, p8, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L8.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L8.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L8.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L9 = Instantiate(CloneRedLight_9, p9, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L9.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L9.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L9.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L10 = Instantiate(CloneRedLight_10, p10, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L10.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L10.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L10.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L11 = Instantiate(CloneRedLight_11, p11, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L11.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L11.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L11.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L12 = Instantiate(CloneRedLight_12, p12, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L12.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L12.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L12.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L13 = Instantiate(CloneRedLight_13, p13, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L13.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L13.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L13.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L14 = Instantiate(CloneRedLight_14, p14, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L14.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L14.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L14.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;


                /////////////////////////////////////////
                L15 = Instantiate(CloneRedLight_15, p15, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L15.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L15.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L15.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L16 = Instantiate(CloneRedLight_16, p16, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L16.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L16.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L16.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L17 = Instantiate(CloneRedLight_17, p17, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L17.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L17.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L17.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;

                L18 = Instantiate(CloneRedLight_18, p18, this.gameObject.transform.GetChild(ChildCount - 2).transform.rotation, LightManager.transform);
                L18.GetComponent <RedLightPos>().Obj1        = this.gameObject.transform.GetChild(ChildCount - 2).gameObject;
                L18.GetComponent <RedLightPos>().Obj2        = this.gameObject.transform.GetChild(ChildCount - 1).gameObject;
                L18.GetComponent <RedLightPos>().Current_Num = ChildCount - 2;
            }

            //WayPoint.Add(tmp);
            //Debug.Log("InstantiateInstantiateInstantiateInstantiateInstantiateInstantiate");
        }


        /* Line Process*/
        ChildCount = this.transform.childCount;
        lineRenderer.SetVertexCount(ChildCount);


        if (ChildCount > 1)
        {
            for (int i = 0; i < ChildCount; i++)
            {
                tmp = this.gameObject.transform.GetChild(i).gameObject;
                lineRenderer.SetPosition(i, tmp.transform.position);
            }


            /*Obstacle Detect*/
            for (int i = 0; i < ChildCount - 1; i++)
            {
                Obj1 = this.gameObject.transform.GetChild(i).gameObject;
                Obj2 = this.gameObject.transform.GetChild(i + 1).gameObject;
                Ray        ray = new Ray(Obj1.transform.position, Obj2.transform.position - Obj1.transform.position);
                RaycastHit hit;

                //Debug.Log( i + " -> " + (i+1) + " distance : " + Vector3.Distance(Obj1.transform.position, Obj2.transform.position));
                float distance = Vector3.Distance(Obj1.transform.position, Obj2.transform.position) - 0.1f;

                Physics.Raycast(ray, out hit, distance, mask);

                //When collision is NOT NULL, there is obstacles
                if (hit.transform != null)
                {
                    lineRenderer.material = LineMat2; // if collision the line become red
                    //Debug.Log("BBBBBBBBB");

                    //LineCollision = false;   // Let Other Script Know Collision State
                    //LineCollisionNum = i + 1;

                    Debug.Log("Blocked by : " + hit.transform.name);
                }
                //If is NULL -> No Obstacles
                else if (hit.transform == null)
                {
                    lineRenderer.material = LineMat1;
                    //LineCollision = true;
                    //LineCollisionNum = -1;
                    //Debug.Log("NNNNNNNNN");
                }

                //Debug.Log("Line color : " + lineRenderer.material);
            }
        }

        //if(ChildCount == 2) lineRenderer.SetPosition(2, new Vector3(0,0,1));
    }