Пример #1
0
    ////////////////////////////////////////////////
    ////////////////////////////////////////////////

    public static void CreatePanelForCube(int[] cubeData, CubeLocationScript cubeScript)
    {
        GameObject panelObject = WorldBuilder._nodeBuilder.CreatePanelObject(cubeScript);

        panelObject.GetComponent <ObjectScript>().objectStyle = (CubeObjectStyles)cubeData[1];

        if (panelObject.GetComponent <Renderer>())
        {
            ObjectTextures texEnum = (ObjectTextures)cubeData[2];
            string         matName = "MapTextures/Materials/" + texEnum.ToString();
            Material       mat     = (Material)Resources.Load(matName, typeof(Material));
            panelObject.GetComponent <Renderer>().material = mat;
        }


        PanelPieceScript panelScript = panelObject.GetComponent <PanelPieceScript>();

        int rotX = cubeData[4];
        int rotY = cubeData[5];
        int rotZ = cubeData[6];

        panelObject.GetComponent <ObjectScript>().forcedRotation = new Vector3Int(rotX, rotY, rotZ);

        panelObject.transform.localScale *= 200;

        if (cubeData[0] == (int)CubeObjectTypes.Panel_Floor) // Floor
        {
            panelObject.GetComponent <ObjectScript>().objectType = CubeObjectTypes.Panel_Floor;
            cubeScript.CubeIsSlope  = false;
            panelScript._panelYAxis = 0;
        }
        else if (cubeData[0] == (int)CubeObjectTypes.Panel_Wall) // Floor
        {
            panelObject.GetComponent <ObjectScript>().objectType = CubeObjectTypes.Panel_Wall;
            cubeScript.CubeIsSlope = false;

            rotZ = 90;

            panelScript._panelYAxis = rotY;
        }
        else if (cubeData[0] == (int)CubeObjectTypes.Panel_Angle) // Floor
        {
            panelObject.GetComponent <ObjectScript>().objectType = CubeObjectTypes.Panel_Angle;
            cubeScript.CubeIsSlope = true;
        }
        else
        {
            Debug.LogError("GOT AN ISSUE HERE");
        }

        //Debug.Log("f**k TEST >>>>>>>>>> rotX " + rotX + " + rotY " + rotY + " + rotZ " + rotZ);

        panelObject.transform.localRotation = Quaternion.Euler(new Vector3Int(rotX, rotY, rotZ));


        // panelObject.transform.tag = panelName;
        // panelScript.name = panelName;
    }
    private void CollectObjectsData()
    {
        ObjectScript[] objs = FindObjectsOfType(typeof(ObjectScript)) as ObjectScript[];

        objectsData = new Dictionary <Vector3, int[]>();

        foreach (ObjectScript obj in objs)
        {
            Vector3 objPos    = obj.transform.position;
            Vector3 globalRot = obj.transform.rotation.eulerAngles;
            Vector3 localRot  = obj.transform.localRotation.eulerAngles;

            Vector3 objFace = obj.transform.forward;

            Vector3Int forceRotation = obj.GetComponent <ObjectScript>().forcedRotation;
            int        parentYAxis   = (int)obj.transform.parent.localEulerAngles.y;

            //Debug.Log("objFace == " + objFace);  //<< This is where we left off (need to combine both trans.forward & tras.euler, to get proper pos/rot data
            // Debug.Log("objRot == " + objRot);    //<< This is where we left off (need to combine both trans.forward & tras.euler, to get proper pos/rot data

            Vector3Int objRot = new Vector3Int(forceRotation.x, forceRotation.y + parentYAxis, forceRotation.z);

            if (objRot.x >= 360)
            {
                objRot.x -= 360;
            }

            if (objRot.y >= 360)
            {
                objRot.y -= 360;
            }

            if (objRot.z >= 360)
            {
                objRot.z -= 360;
            }

            if (objRot.z == 90) // Walls
            {
                if (objRot.y == 0 || objRot.y == 180)
                {
                    objRot.y = 0;
                }

                if (objRot.y == 90 || objRot.y == 270)
                {
                    objRot.y = 90;
                }
            }
            else
            {
            }


            //Debug.Log("globalRot.y == " + globalRot + " localRot.y == " + localRot);    //<< This is where we left off (need to combine both trans.forward & tras.euler, to get proper pos/rot data

            //Debug.Log("objRot >>>>>>>>> " + objRot);    //<< This is where we left off (need to combine both trans.forward & tras.euler, to get proper pos/rot data


            string name = obj.gameObject.GetComponent <Renderer>().material.name.Replace("(Instance)", "");
            //Debug.Log("f**k name >>>>>>>> " + name);
            ObjectTextures objTexture = (ObjectTextures)Enum.Parse(typeof(ObjectTextures), name);

            CubeStruct data = new CubeStruct()
            {
                objectType    = obj.objectType,
                styleType     = obj.objectStyle,
                objectTexture = objTexture,
                health        = 100,
                rotation      = objRot
            };

            int[] dataArray = ConvertCubeDataIntoIntArray(data);

            Vector3 roundedPos = GetRoundedVector3(objPos);

            if (!objectsData.ContainsKey(roundedPos))
            {
                objectsData.Add(roundedPos, dataArray);
            }

            // Debug.Log("Total Panel Objects Postion == " + objPos);
        }

        Debug.Log("Total Panel Objects in Scene == " + objectsData.Count);
    }