Example #1
0
 /**
  * Render 3D objects into the scene
  */
 IEnumerator RenderObjects(LatLngObject mapMiddlePoint, List <BuildingObject> buildings, List <RoadObject> roads, List <TreeObject> trees)
 {
     while (!CanRenderObjects)
     {
         yield return(new WaitForSeconds(0.1f));
     }
     //render terrain
     TerrainRender.Get().GenerateTerrain(mapMiddlePoint, transform);
     //render buildings
     BuildingRender.Get().Render(transform, buildings);
     //render roads
     RoadRender.Get().Render(mapMiddlePoint, transform, roads);
     //render trees
     TreeRender.Get().GenerateTrees(mapMiddlePoint, trees);
     //init address info game objects
     MenuController.Get().AddAddressGameObjects(AddressBackground, AddressText);
     CanRenderObjects = false;
 }
Example #2
0
    /**
     * Get map middle point and set default camera position
     */
    private LatLngObject GetMiddlePoint(List <BuildingObject> buildings, List <RoadObject> roads)
    {
        LatLngObject middleMapPointLatLng = null;

        if (buildings.Count != 0)
        {
            middleMapPointLatLng = TerrainRender.GetMiddlePoint(buildings);
        }
        else if (roads.Count != 0)
        {
            middleMapPointLatLng = TerrainRender.GetMiddlePoint(roads);
        }

        //set default camera position
        var middlePoint = Converter.ConvertLatLngToXyz(middleMapPointLatLng);

        UiUtils.SetDefaultCameraPos(middlePoint, transform);
        return(middleMapPointLatLng);
    }
        public void Import(Stream input, string path)
        {
            var file = new TerrainRender();

            using (var reader = new BinaryReader(input))
            {
                reader.ReadBytes(236);
                float maxHeight = reader.ReadSingle();
                reader.ReadBytes(12);
                float minHeight = reader.ReadSingle();

                reader.ReadBytes(80);
                var miniHeightMapBytes = reader.ReadUInt32();
                reader.ReadBytes(364);

                Debug.Log(maxHeight);
                Debug.Log(minHeight);

                // Just grab the super low LOD for now
                // It's at position 4 in the heightMap section I think
                reader.ReadBytes((int)(miniHeightMapBytes * 4));

                var miniHeightmap = new float[128, 128];

                for (var x = 0; x < 128; x++)
                {
                    for (var y = 0; y < 128; y++)
                    {
                        miniHeightmap[y, x] = (reader.ReadSingle() - minHeight) / maxHeight;
                    }
                }

                file.TerrainData = CreateTerrainData(128, new Vector3(8192, maxHeight - minHeight, 8192),
                                                     miniHeightmap);
            }

            AssetDatabase.CreateAsset(file.TerrainData, "Assets/New Terrain.asset");
        }
Example #4
0
        /**
         *
         */
        private void AssignBuildingAddresses(BuildingObject building, List <AddressObject> addressObjects)
        {
            var buildingList = new List <BuildingObject> {
                building
            };
            var           middleBuildingPoint = TerrainRender.GetMiddlePoint(buildingList);
            AddressObject finalAddress        = null;
            var           finalDiffLat        = float.MaxValue;
            var           finalDiffLon        = float.MaxValue;

            foreach (var address in addressObjects)
            {
                var diffLat = Math.Abs(middleBuildingPoint.Latitude - address.Position.Latitude);
                var diffLon = Math.Abs(middleBuildingPoint.Longitude - address.Position.Longitude);
                if (diffLat < finalDiffLat && diffLon < finalDiffLon)
                {
                    finalAddress = address;
                    finalDiffLon = diffLon;
                    finalDiffLat = diffLat;
                }
            }

            building.AddressObject = finalAddress;
        }
        /**
         * Nastavení kláves a myši pro rotaci objektu, jeho posun, načtení a jeho umístění
         */
        public static void PlaceNewBuildingListener()
        {
            if (customObject == null)
            {
                return;
            }

            var customObjectTransform = customObject.transform;

            //realtime object position update
            customObjectTransform.position = GetMousePos();

            //custom object ROTATION -- MOUSE
            if (Input.GetAxis("Mouse ScrollWheel") > 0f && activeAction == CanvasActionUtils.RotateAction)
            {
                customObjectTransform.Rotate(Vector3.up * Time.deltaTime * 150f);
            }

            if (Input.GetAxis("Mouse ScrollWheel") < 0f && activeAction == CanvasActionUtils.RotateAction)
            {
                customObject.transform.Rotate(Vector3.down * Time.deltaTime * 150f);
            }

            //custom object ROTATION -- GAMEPAD
            if (Input.GetAxisRaw("Horizontal") > 0 && activeAction == CanvasActionUtils.RotateAction)
            {
                customObjectTransform.Rotate(Vector3.up * Time.deltaTime * 150f);
            }

            if (Input.GetAxisRaw("Horizontal") < 0 && activeAction == CanvasActionUtils.RotateAction)
            {
                customObjectTransform.Rotate(Vector3.down * Time.deltaTime * 150f);
            }

            //custom object SIZE changing -- MOUSE
            if (Input.GetAxis("Mouse ScrollWheel") > 0f && activeAction == CanvasActionUtils.SizeAction)
            {
                customObjectSize = customObjectSize + defaultObjectSize * Time.deltaTime * 2;
                customObjectTransform.localScale = new Vector3(customObjectSize,
                                                               customObjectSize, customObjectSize);
            }

            if ((Input.GetAxis("Mouse ScrollWheel") < 0f && activeAction == CanvasActionUtils.SizeAction))
            {
                customObjectSize = customObjectSize - defaultObjectSize * Time.deltaTime * 2;
                customObjectTransform.localScale = new Vector3(customObjectSize,
                                                               customObjectSize, customObjectSize);
            }

            //custom object SIZE changing -- GAMEPAD
            if (Input.GetAxisRaw("Horizontal") > 0 && activeAction == CanvasActionUtils.SizeAction)
            {
                customObjectSize = customObjectSize + defaultObjectSize * Time.deltaTime * 2;
                customObjectTransform.localScale = new Vector3(customObjectSize,
                                                               customObjectSize, customObjectSize);
            }

            if (Input.GetAxisRaw("Horizontal") < 0 && activeAction == CanvasActionUtils.SizeAction)
            {
                customObjectSize = customObjectSize - defaultObjectSize * Time.deltaTime * 2;
                customObjectTransform.localScale = new Vector3(customObjectSize,
                                                               customObjectSize, customObjectSize);
            }


            //put custom object (with spacebar or gamepad A button)
            if (ControlUtils.ConfirmAction() && customObject != null)
            {
                putted = true;
                var objectFinalPosition = GetMousePos();
                //set terrain height as y coordinate
                objectFinalPosition.y = TerrainRender.Get().Terrain.SampleHeight(objectFinalPosition);
                //remove "clone" text in the name
                var customObjectName = customObject.name.Substring(0, customObject.name.LastIndexOf("("));
                //save added object into List
                var addedObject = new CustomObject
                {
                    Position   = objectFinalPosition,
                    ObjectName = customObjectName,
                    Rotation   = customObjectTransform.rotation.eulerAngles.y,
                    Size       = customObjectSize
                };
                Main.AddedObjects.Add(addedObject);

                //place custom object to the final position
                customObjectTransform.position = objectFinalPosition;
                customObject     = null;
                customObjectSize = defaultObjectSize;
            }
        }