Beispiel #1
0
    //////////////////////////////////////////////

    private int[] ConvertCubeDataIntoIntArray(CubeStruct cubeData)
    {
        int[] dataArray = new int[6];

        dataArray[0] = (int)cubeData.styleType;
        dataArray[1] = (int)cubeData.health;
        dataArray[2] = (int)cubeData.objectType;
        dataArray[3] = (int)cubeData.rotation.x;
        dataArray[4] = (int)cubeData.rotation.y;
        dataArray[5] = (int)cubeData.rotation.z;

        return(dataArray);
    }
Beispiel #2
0
    //////////////////////////////////////////////

    private CubeStruct GetCubeData(GameObject xChild)
    {
        // set a empty data shell
        CubeStruct data = new CubeStruct()
        {
            styleType  = CubeObjectStyles.Default,
            health     = 0,
            objectType = CubeObjectTypes.Empty,
            rotation   = Vector3.zero
        };

        GameObject cubeObject = null;

        int activeChildcount = 0;

        foreach (Transform child in xChild.transform)
        {
            if (child.gameObject.activeSelf)
            {
                cubeObject        = child.gameObject;
                activeChildcount += 1;
                Debug.Log("Adding cubeObject.name >> " + cubeObject.name);
            }
        }


        if (activeChildcount == 1)
        {
            if (!CheckAngle(cubeObject.transform.rotation.eulerAngles))
            {
                Debug.Log("BAD ANGLE at location >> " + xChild.transform.position);
            }

            return(data = new CubeStruct()
            {
                styleType = cubeObject.GetComponent <CubeObjectScript>().cubeStyle,
                health = 100,
                objectType = cubeObject.GetComponent <CubeObjectScript>().cubeType,
                rotation = cubeObject.transform.rotation.eulerAngles
            });
        }
        else if (activeChildcount == 0 || activeChildcount > 1)
        {
            if (activeChildcount > 1)
            {
                Debug.Log("TOOOOOOO many child active at loc: " + xChild.transform.position);
            }
        }
        return(data);
    }
Beispiel #3
0
    //////////////////////////////////////////////

    private void GetGridInteriorData()
    {
        dataArrayList = new List <int[]>();

        foreach (List <List <GameObject> > yChild in yObjects)
        {
            foreach (List <GameObject> zChild in yChild)
            {
                foreach (GameObject xChild in zChild)
                {
                    CubeStruct cubeData = GetCubeData(xChild);

                    int[] dataArray = ConvertCubeDataIntoIntArray(cubeData);

                    dataArrayList.Add(dataArray);
                }
            }
        }
    }
 private void FixedUpdate()
 {
     foreach (var chunk in loadedChunks)
     {
         Debug.Log("foreach loadedChunks " + chunk.position.bytePosition);
         Debug.Log("foreach loadedChunks player " + playerTransform.position.x + " " + playerTransform.position.y + " " + playerTransform.position.z);
         var auxPos = chunk.position.position.ToVector3Float() * chunkSize;
         Debug.Log("foreach loadedChunks chunk " + auxPos.x + " " + auxPos.y + " " + auxPos.z);
         if ((playerTransform.position - (chunk.position.position.ToVector3Float() * chunkSize)).magnitude >= processedDistance)
         {
             Debug.Log("foreach loadedChunks >=processedDistance " + chunk.position.bytePosition);
             processedChunks.Enqueue(new QueueActionCube(false, chunk.position));
         }
     }
     if (processedChunks.Count > 0)
     {
         Debug.Log("processedChunks Count>0 " + processedChunks.Count);
         var chunkAction         = processedChunks.Dequeue();
         var chunkPosition       = chunkAction.position;
         var chunkVectorPosition = chunkPosition.position;
         if (chunkAction.add)
         {
             Debug.Log("true " + chunkVectorPosition.x);
             if ((playerTransform.position - chunkVectorPosition.ToVector3Float() * chunkSize).magnitude < processedDistance)
             {
                 Debug.Log("true <processedDistance " + chunkVectorPosition.x);
                 if (dictChunks.ContainsKey(chunkVectorPosition) && dictChunks[chunkVectorPosition] != null)
                 {
                     Debug.Log("true dictChunks Contains !=null " + chunkVectorPosition.x);
                     int halfChunkSize = chunkSize / 2;
                     for (int x = 0; x < chunkSize; x++)
                     {
                         for (int y = 0; y < chunkSize; y++)
                         {
                             for (int z = 0; z < chunkSize; z++)
                             {
                                 if (dictChunks[chunkVectorPosition][x, y, z] != 0)
                                 {
                                     var addedCube = new CubeStruct(new Vector3Int(chunkVectorPosition.x * chunkSize + x - halfChunkSize, chunkVectorPosition.y * chunkSize + y - halfChunkSize, chunkVectorPosition.z * chunkSize + z - halfChunkSize), dictChunks[chunkVectorPosition][x, y, z]);
                                     if (!Player.instance.grid[false].Contains(addedCube) && !Player.instance.grid[true].Contains(addedCube))
                                     {
                                         Player.instance.grid[false].Add(addedCube);
                                         Debug.Log("true dictChunks Contains !=null for " + chunkVectorPosition.x * chunkSize + x);
                                     }
                                 }
                             }
                         }
                     }
                     Debug.Log("true dictChunks Contains !=null after for " + chunkVectorPosition.x);
                     var chunk = new Chunk(dictChunks[chunkVectorPosition], chunkPosition);
                     if (!loadedChunks.Contains(chunk))
                     {
                         Debug.Log("true dictChunks Contains !=null loadChunks NoContains " + chunk.position.bytePosition);
                         loadedChunks.Add(chunk);
                         var rightChunk = new Chunk(null, new ChunkPosition(-1, new Vector3Short(++chunkVectorPosition.x, chunkVectorPosition.y, chunkVectorPosition.z)));
                         chunkVectorPosition.x--;
                         Debug.Log("true dictChunks Contains !=null loadChunks NoContains right " + chunkVectorPosition.x);
                         var leftChunk = new Chunk(null, new ChunkPosition(-1, new Vector3Short(--chunkVectorPosition.x, chunkVectorPosition.y, chunkVectorPosition.z)));
                         chunkVectorPosition.x++;
                         Debug.Log("true dictChunks Contains !=null loadChunks NoContains left " + chunkVectorPosition.x);
                         var upChunk = new Chunk(null, new ChunkPosition(-1, new Vector3Short(chunkVectorPosition.x, ++chunkVectorPosition.y, chunkVectorPosition.z)));
                         chunkVectorPosition.y--;
                         Debug.Log("true dictChunks Contains !=null loadChunks NoContains up " + chunkVectorPosition.y);
                         var downChunk = new Chunk(null, new ChunkPosition(-1, new Vector3Short(chunkVectorPosition.x, --chunkVectorPosition.y, chunkVectorPosition.z)));
                         chunkVectorPosition.y++;
                         Debug.Log("true dictChunks Contains !=null loadChunks NoContains down " + chunkVectorPosition.y);
                         var forwardChunk = new Chunk(null, new ChunkPosition(-1, new Vector3Short(chunkVectorPosition.x, chunkVectorPosition.y, ++chunkVectorPosition.z)));
                         chunkVectorPosition.z--;
                         Debug.Log("true dictChunks Contains !=null loadChunks NoContains forward " + chunkVectorPosition.z);
                         var backwardChunk = new Chunk(null, new ChunkPosition(-1, new Vector3Short(chunkVectorPosition.x, chunkVectorPosition.y, --chunkVectorPosition.z)));
                         chunkVectorPosition.z++;
                         Debug.Log("true dictChunks Contains !=null loadChunks NoContains backward " + chunkVectorPosition.z);
                         if (!dictChunks.ContainsKey(rightChunk.position.position))
                         {
                             Debug.Log("true dictChunks Contains !=null loadChunks NoContains right dictChunks NoContains " + chunkVectorPosition.x);
                             if (!ReadChunkInformation(rightChunk.position.position))
                             {
                                 Debug.Log("true dictChunks Contains !=null loadChunks NoContains right dictChunks NoContains !Read" + chunkVectorPosition.x);
                                 writeQueue.Enqueue(rightChunk.position.position);
                                 processedChunks.Enqueue(new QueueActionCube(true, rightChunk.position));
                             }
                         }
                         if (!dictChunks.ContainsKey(leftChunk.position.position))
                         {
                             if (!ReadChunkInformation(leftChunk.position.position))
                             {
                                 writeQueue.Enqueue(leftChunk.position.position);
                                 processedChunks.Enqueue(new QueueActionCube(true, leftChunk.position));
                             }
                         }
                         if (!dictChunks.ContainsKey(upChunk.position.position))
                         {
                             if (!ReadChunkInformation(upChunk.position.position))
                             {
                                 writeQueue.Enqueue(upChunk.position.position);
                                 processedChunks.Enqueue(new QueueActionCube(true, upChunk.position));
                             }
                         }
                         if (!dictChunks.ContainsKey(downChunk.position.position))
                         {
                             if (!ReadChunkInformation(downChunk.position.position))
                             {
                                 writeQueue.Enqueue(downChunk.position.position);
                                 processedChunks.Enqueue(new QueueActionCube(true, downChunk.position));
                             }
                         }
                         if (!dictChunks.ContainsKey(forwardChunk.position.position))
                         {
                             if (!ReadChunkInformation(forwardChunk.position.position))
                             {
                                 writeQueue.Enqueue(forwardChunk.position.position);
                                 processedChunks.Enqueue(new QueueActionCube(true, forwardChunk.position));
                             }
                         }
                         if (!dictChunks.ContainsKey(backwardChunk.position.position))
                         {
                             if (!ReadChunkInformation(backwardChunk.position.position))
                             {
                                 writeQueue.Enqueue(backwardChunk.position.position);
                                 processedChunks.Enqueue(new QueueActionCube(true, backwardChunk.position));
                             }
                         }
                     }
                 }
                 else
                 {
                     ReadChunkInformation(chunkPosition.position);
                     processedChunks.Enqueue(chunkAction);
                 }
             }
             else
             {
                 processedChunks.Enqueue(new QueueActionCube(false, chunkPosition));
             }
         }
         else
         {
             Debug.Log("false " + chunkVectorPosition.x);
             if (dictChunks.ContainsKey(chunkVectorPosition))
             {
                 Debug.Log("false dictChunks Contains " + chunkVectorPosition.x);
                 var chunk = new Chunk(dictChunks[chunkVectorPosition], chunkPosition);
                 if (loadedChunks.Contains(chunk))
                 {
                     Debug.Log("false loadedChunks Contains " + chunk.position.bytePosition);
                     loadedChunks.Remove(chunk);
                 }
                 dictChunks.Remove(chunkVectorPosition);
             }
         }
     }
 }
    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);
    }
    //////////////////////////////////////////////

    private void SaveDataArrayIntoDoc()
    {
        #if UNITY_EDITOR
        string path = AssetDatabase.GetAssetPath(TextFile);

        File.WriteAllText(path, "");

        if (File.Exists(path))
        {
            int count          = 1;
            int successfulData = 0;
            foreach (Vector3 loc in gridNodeLocations)
            {
                int[] dataArray;

                if (objectsData.ContainsKey(loc))
                {
                    dataArray = objectsData[loc];
                    successfulData++;
                    //Debug.Log("Recording data into file at loc == " + loc);
                }
                else
                {
                    // set a empty data shell
                    CubeStruct data = new CubeStruct()
                    {
                        objectType    = CubeObjectTypes.Empty,
                        styleType     = CubeObjectStyles.Default,
                        objectTexture = ObjectTextures.Nothing,
                        health        = 0,
                        rotation      = Vector3Int.zero
                    };
                    dataArray = ConvertCubeDataIntoIntArray(data);
                }

                string dataString = "";
                for (int i = 0; i < dataArray.Length; i++)
                {
                    int data = dataArray[i];
                    dataString += data.ToString();
                    if (i < dataArray.Length - 1)
                    {
                        dataString += " ";
                    }
                    else if (count != gridNodeLocations.Count)
                    {
                        dataString += ",\n";
                    }
                }
                File.AppendAllText(path, dataString);

                count++;
            }
            Debug.Log("Recording data successfulData == " + successfulData);
        }
        else
        {
            Debug.Log("GOT AN ISSUE HERE");
        }
        #endif
    }
Beispiel #7
0
 public QueueActionPlayer(bool add, CubeStruct cube)
 {
     this.add  = add;
     this.cube = cube;
 }