예제 #1
0
    void buildNet(Vector3 nodePos, float maxRadius, ref List <STNetNode> container)
    {
        float angle = 0.0f;

        for (int i = 0; i < 6; i++, angle += 60.0f)
        {
            float posX = nodePos.x + netBtwNodesWidth * Mathf.Cos(angle / 180 * Mathf.PI);
            float posY = nodePos.y + netBtwNodesWidth * Mathf.Sin(angle / 180 * Mathf.PI);
            float posZ = 1;

            Vector3 point = new Vector3(posX, posY, posZ);


            //Debug.Log ("POS - " + point);
            Vector3 beginPoint = new Vector3(0, 0, 0);

            if ((Vector3.Distance(point, beginPoint) > maxRadius) || checkForPoint(point, ref container))
            {
                continue;
            }
            else
            {
                STNetNode node = Instantiate(netNodePref) as STNetNode;
                node.Net = this;

                container.Add(node);
                node.transform.position = point;


                buildNodeN++;
                buildNet(point, maxRadius, ref container);
            }
        }
    }
예제 #2
0
    public void BuildWithPrefab(STNetNode nodePrefab, float density, int nElementsNodes)
    {
        netBtwNodesWidth = density;


        maxElementNodesDist = density * nElementsNodes;

        netNodePref = nodePrefab;
        setElementNodesArray();
    }
예제 #3
0
    public void BuildWithPrefab(STNetNode nodePrefab, float density, int nElementsNodes)
    {
        elementNetWidth  = nElementsNodes * 2 + 1;
        elementNetHeight = nElementsNodes * 2 + 1;

        netBtwNodesWidth = density;
        netNodePref      = nodePrefab;

        elementNetNodesArray = new STNetNode [elementNetWidth, elementNetHeight];

        setElementNodesArray();
    }
예제 #4
0
 public void HideElementNetNode()
 {
     for (int i = 0; i < elementNetHeight; i++)
     {
         for (int j = 0; j < elementNetWidth; j++)
         {
             STNetNode netPoint = elementNetNodesArray[i, j];
             netPoint.renderer.enabled          = false;
             netPoint.renderer.collider.enabled = false;
         }
     }
 }
예제 #5
0
 void setElementNodesArray()
 {
     for (int i = 0; i < elementNetHeight; i++)
     {
         for (int j = 0; j < elementNetWidth; j++)
         {
             STNetNode node = Instantiate(netNodePref) as STNetNode;
             node.Net = this;
             elementNetNodesArray[i, j] = node;
         }
     }
 }
예제 #6
0
 public void Clear()
 {
     for (int i = 0; i < elementNetHeight; i++)
     {
         for (int j = 0; j < elementNetWidth; j++)
         {
             STNetNode forDel = elementNetNodesArray[i, j];
             Destroy(forDel.gameObject);
             forDel = null;
         }
     }
 }
예제 #7
0
    public void BuildWithPrefab(STNetNode nodePrefab, float density, int nElementsNodes)
    {
        netBtwNodesWidth = density;

        //	maxNodesDist = density * nNodes;
        //	maxElementNodesDist = density * nElementsNodes;
        prevElementPostion = Vector3.zero;
        elementNodesCount  = nElementsNodes;

        netNodePref = nodePrefab;
        activeNodes = new List <STNetNode> ();
        setElementNodesArray();
    }
예제 #8
0
 public void ShowElementNetNode(Vector3 elementPostion)
 {
     for (int i = 0; i < elementNetHeight; i++)
     {
         for (int j = 0; j < elementNetWidth; j++)
         {
             STNetNode netPoint = elementNetNodesArray[i, j];
             netPoint.renderer.enabled          = true;
             netPoint.renderer.collider.enabled = true;
             netPoint.transform.position        = new Vector3(elementPostion.x + (i - elementNetWidth / 2) * netBtwNodesWidth, elementPostion.y + (j - elementNetHeight / 2) * netBtwNodesWidth, 2);
         }
     }
 }
    public void SetActiveNodes(List <Vector3> activeNodesArray)
    {
        //Debug.Log ("Active");
        foreach (Vector3 nodePos in activeNodesArray)
        {
            STNetNode node = Instantiate(netNodePref) as STNetNode;

            activeNodes.Add(node);

            Vector3 thePos = nodePos;
            thePos.z = 50;

            node.transform.position = thePos;

            node.ChangeType(NET_NODE_T.STAR);
            node.SetActive(true);
        }
    }
예제 #10
0
    public void Clear()
    {
        //Debug.Log ("CLEAR");
//		while(elementNetNodesArray.Count > 0){
//			STNetNode forDel = elementNetNodesArray[0];
//			Destroy(forDel.gameObject);
//			elementNetNodesArray.Remove(forDel);
//
//		}

        //prevElementPostion = Vector3.zero;

        while (activeNodes.Count > 0)
        {
            STNetNode forDel = activeNodes[0];
            Destroy(forDel.gameObject);
            activeNodes.Remove(forDel);
        }
    }
예제 #11
0
    void setElementNodesArray()
    {
        elementNetNodesArray = new List <STNetNode> ();

        Vector3 rootNode = new Vector3(0, 0, 0);

        prevElementPostion = new Vector3(0, 0, 0);

        STNetNode node = Instantiate(netNodePref) as STNetNode;

        node.Net = this;

        elementNetNodesArray.Add(node);
        node.transform.position = rootNode;

        buildNet(rootNode, maxElementNodesDist, ref elementNetNodesArray);

        HideElementNetNode();
    }
예제 #12
0
    void buildNet(int elementCount, ref List <STNetNode> container)
    {
        STNetNode node = Instantiate(netNodePref) as STNetNode;

        node.Net = this;
        node.transform.position = Vector3.zero;
        node.transform.parent   = STLevel.GetNodesNet().transform;
        container.Add(node);

        float angle        = 45.0f;
        float currentAngle = 0.0f;


        for (int i = 1; i <= elementCount; i++)
        {
            currentAngle = 0.0f;
            do
            {
                //	Debug.Log (node.transform.position);
                float posX = i * netBtwNodesWidth * Mathf.Cos(currentAngle / 180 * Mathf.PI);
                float posY = i * netBtwNodesWidth * Mathf.Sin(currentAngle / 180 * Mathf.PI);
                float posZ = 1;

                Vector3 point = new Vector3(posX, posY, posZ);

                node     = Instantiate(netNodePref) as STNetNode;
                node.Net = this;

                container.Add(node);
                node.transform.position = point;

                node.transform.parent = STLevel.GetNodesNet().transform;

                currentAngle += angle;
            } while (currentAngle < 360.0f);
            //angle /= 2.0f;
        }
    }
예제 #13
0
    public Vector3 GetClothestNetNodePos(Vector3 elementPos)
    {
        float     minDistance = 1000000.0f;
        STNetNode minDistNode = null;

        foreach (STNetNode netNode in elementNetNodesArray)
        {
            float curDist = Vector3.Distance(netNode.transform.position, elementPos);
            if (curDist < minDistance)
            {
                minDistance = curDist;
                minDistNode = netNode;
            }
        }

        if (minDistNode != null)
        {
            return(minDistNode.transform.position);
        }
        else
        {
            return(elementPos);
        }
    }
예제 #14
0
    public Vector3 GetClothestNetNodePos(Vector3 elementPos)
    {
        float   minDistance    = 1000000.0f;
        Vector3 clothesNetNode = new Vector3(1000, 1000, 1000);

        for (int i = 0; i < elementNetHeight; i++)
        {
            for (int j = 0; j < elementNetWidth; j++)
            {
                STNetNode netPoint      = elementNetNodesArray[i, j];
                float     distBtwPoints = Vector3.Distance(elementPos, netPoint.transform.position);

                if (distBtwPoints < minDistance)
                {
                    minDistance    = distBtwPoints;
                    clothesNetNode = netPoint.transform.position;
                }
            }
        }

        //Debug.Log ("CLOTHEST NODE - " + clothesNetNode + "THE DISTANCE - " + minDistance);

        return(clothesNetNode);
    }