예제 #1
0
    ////////////////////////////////////////////////////////////////////////////


    // Create World Nodes ///////////////////////////////////////////////////
    public static void CreateWorldNodes(List <Vector3> nodeVects)
    {
        // build inital map Node
        _WorldNodes = new List <WorldNode>();

        int rowMultipler  = MapSettings.worldSizeX;
        int colMultiplier = MapSettings.worldSizeZ;

        int totalMultiplier = MapSettings.worldSizeX * MapSettings.worldSizeZ;

        WorldNodeData_01 worldFloor = ScriptableObject.CreateInstance <WorldNodeData_01>();
        List <int[, ]>   floors     = worldFloor.floors;

        int countFloorX = 0; // complicated to explain to future me
        int countFloorZ = 0;
        int countFloorY = 1;

        int count = 1;

        foreach (Vector3 vect in nodeVects)
        {
            int rotation = 0;
            int mapType  = -1;
            int mapPiece = -1;

            WorldNode nodeScript = WorldBuilder._nodeBuilder.CreateNode <WorldNode>(WorldManager._WorldContainer.transform, vect, rotation, mapType, mapPiece, NodeTypes.WorldNode);
            nodeScript.worldNodeCount = (count - 1);
            nodeScript.NodeLayerCount = countFloorY * 12; // 12 is the number of (mapieces + vents layers) in the y axis of a worldnode

            // for the specified map structures
            if (MapSettings.LOADPREBUILT_STRUCTURE)
            {
                int[,] floor = floors[countFloorY - 1];
                if (floor[countFloorX, countFloorZ] == 01)
                {
                    int randSize = MapSettings.getRandomMapSize;
                    nodeScript.NodeSize = randSize;
                }
                else
                {
                    nodeScript.NodeSize = 0;
                }
            }
            else
            {
                int randSize = MapSettings.getRandomMapSize;
                nodeScript.NodeSize = randSize;
            }


            int shipEntranceProbablity = 20;

            if (nodeScript.NodeSize == 3 && Random.Range(0, shipEntranceProbablity) == 0)
            {
                WorldBuilder._nodeBuilder.AttachCoverToNode(nodeScript, nodeScript.gameObject, CoverTypes.LargeGarageCover, new Vector3(0, 0, 0));
                nodeScript.entrance = true;
            }


            _WorldNodes.Add(nodeScript);

            // for counting, best not to change, even tho its ugly
            countFloorX++;
            if (count % totalMultiplier == 0)
            {
                countFloorY++;
            }
            if (countFloorX % rowMultipler == 0)
            {
                countFloorX = 0;
                countFloorZ++;
            }
            if (countFloorZ % colMultiplier == 0)
            {
                countFloorZ = 0;
            }

            //  think need to add world nodes to layer sytem
            LayerManager.AddNodeToLayer(nodeScript); // for camera layers

            // for the dynamic grid experiment
            LocationManager.SetNodeScriptToLocation_CLIENT(vect, nodeScript);
            //LocationManager.SetNodeScriptToLocation_SERVER(vect, nodeScript); // this needs to do this in the server

            count++;
        }
    }
예제 #2
0
    ////////////////////////////////////////////////////////////////////////////


    ////////////////////////////////////////////
    // Create the Nodes from the Vects ///////
    ////////////////////////////////////////////


    // Create World Nodes ///////////////////////////////////////////////////
    private List <WorldNode> CreateWorldNodes(List <Vector3> nodeVects)
    {
        // build inital map Node
        List <WorldNode> worldNodes = new List <WorldNode>();

        int rowMultipler  = _mapSettings.worldSizeX;
        int colMultiplier = _mapSettings.worldSizeZ;

        int totalMultiplier = _mapSettings.worldSizeX * _mapSettings.worldSizeZ;

        WorldNodeData_01 worldFloor = ScriptableObject.CreateInstance <WorldNodeData_01>();
        List <int[, ]>   floors     = worldFloor.floors;

        int countFloorX = 0; // complicated to explain to future me
        int countFloorZ = 0;
        int countFloorY = 1;

        int count = 1;

        foreach (Vector3 vect in nodeVects)
        {
            int rotation = 0;
            int mapType  = -1;
            int mapPiece = -1;

            WorldNode nodeScript = CreateNode <WorldNode>(this.transform, vect, rotation, mapType, mapPiece, NodeTypes.WorldNode);
            nodeScript.worldNodeCount = (count - 1);

            // for the specified map structures
            if (LOADPREBUILT_STRUCTURE)
            {
                int[,] floor = floors[countFloorY - 1];
                if (floor[countFloorX, countFloorZ] == 01)
                {
                    int randSize = _mapSettings.getRandomMapSize;
                    nodeScript.nodeSize = randSize;
                }
                else
                {
                    nodeScript.nodeSize = 0;
                }
            }
            else
            {
                int randSize = _mapSettings.getRandomMapSize;
                nodeScript.nodeSize = randSize;
            }

            worldNodes.Add(nodeScript);

            // for counting, best not to change, even tho its ugly
            countFloorX++;
            if (count % totalMultiplier == 0)
            {
                countFloorY++;
            }
            if (countFloorX % rowMultipler == 0)
            {
                countFloorX = 0;
                countFloorZ++;
            }
            if (countFloorZ % colMultiplier == 0)
            {
                countFloorZ = 0;
            }
            count++;
        }
        return(worldNodes);
    }