Beispiel #1
0
 public void CancelBuilding()
 {
     Destroy(previewGO);
     previewGO     = null;
     previewScript = null;
     isBuilding    = false;
 }
        public Status <BuildingPreview> GenerateBuildingPreview(Building building)
        {
            if (building == null)
            {
                return(Status.ValidationError <BuildingPreview>(null, "building", "The building cannot be null"));
            }

            var preview = new BuildingPreview()
            {
                Address1              = building.Address1,
                Address2              = building.Address2,
                Bathrooms             = building.Bathrooms.Value,
                Bedrooms              = building.Bedrooms.Value,
                BuildingId            = building.BuildingId,
                City                  = building.City,
                IsActive              = building.IsActive,
                IsRemovedByAdmin      = building.IsRemovedByAdmin,
                Latitude              = building.Latitude,
                Longitude             = building.Longitude,
                Price                 = building.Price,
                PrimaryPhotoExtension = building.PrimaryPhotoExtension,
                PrimaryPhotoId        = building.PrimaryPhotoId,
                RibbonId              = building.RibbonId,
                State                 = building.State,
                Title                 = building.Title,
                Zip = building.Zip
            };

            return(Status.OK <BuildingPreview>(preview));
        }
Beispiel #3
0
        public Status <BuildingPreview> GetUserProperty(string username, long buildingId)
        {
            BuildingPreview building = null;

            using (var context = new RentlerContext())
                building = (from b in context.Buildings
                            where b.BuildingId == buildingId &&
                            (b.User.Username == username || b.User.Email == username)
                            select new BuildingPreview()
                {
                    Bathrooms = b.Bathrooms.Value,
                    Bedrooms = b.Bedrooms.Value,
                    BuildingId = b.BuildingId,
                    City = b.City,
                    IsFeatured = false,
                    Price = b.Price,
                    PrimaryPhotoExtension = b.PrimaryPhotoExtension,
                    PrimaryPhotoId = b.PrimaryPhotoId,
                    State = b.State,
                    Title = b.Title,
                    IsRemovedByAdmin = b.IsRemovedByAdmin,
                    Address1 = b.Address1,
                    IsActive = b.IsActive
                }).SingleOrDefault();

            if (building == null)
            {
                return(Status.NotFound <BuildingPreview>());
            }

            return(Status.OK(building));
        }
    private void CreatePreview(GameObject previewPrefab)
    {
        Destroy(selectedObject);
        selectedObject = null;

        GameObject previewObject = new GameObject("PreviewObject");
        GameObject previewMesh   = new GameObject("PreviewMesh");

        previewMesh.transform.parent = previewObject.transform;

        previewObject.layer = LayerMask.NameToLayer("BuildingPreview");
        previewMesh.layer   = LayerMask.NameToLayer("BuildingPreview");

        MeshFilter meshFilter = previewMesh.AddComponent <MeshFilter>();

        previewRenderer = previewMesh.AddComponent <MeshRenderer>();

        meshFilter.mesh          = previewPrefab.GetComponentInChildren <MeshFilter>().sharedMesh;
        previewRenderer.material = previewMaterial;

        Rigidbody rigidbody = previewMesh.AddComponent <Rigidbody>();

        rigidbody.isKinematic = true;

        previewScript = previewMesh.AddComponent <BuildingPreview>();

        BoxCollider previewCollider = previewMesh.AddComponent <BoxCollider>();

        previewCollider.size      = new Vector3(previewCollider.size.x + 1f, 50, previewCollider.size.z + 1f);
        previewCollider.isTrigger = true;

        previewScript.Initialize(terrainMeshFilter.sharedMesh);

        selectedObject = previewObject;
    }
Beispiel #5
0
        private void Start()
        {
            buildingPreview = GetComponent <BuildingPreview>();

            stoneEfficiency = StoneEfficiency.instance;
            stoneEfficiency.efficiencyText.transform.position = Camera.main.WorldToScreenPoint(transform.position) + new Vector3(0, 50, 0);
            stoneEfficiency.efficiencyText.gameObject.SetActive(true);
            stoneEfficiency.SetCirclesState(true);

            line = Instantiate(linePrefab, position: transform.position, rotation: Quaternion.identity);
        }
    public void DeterminePreviewColor(GameObject preview, int highestLevel)
    {
        BuildingPreview buildingPreview = preview.GetComponent <BuildingPreview>();

        if (buildingPreview)
        {
            SVGImage svgImage1 = preview.transform.Find("Ground").GetComponent <SVGImage>();
            SVGImage svgImage2 = preview.transform.Find("Structure").GetComponent <SVGImage>();
            svgImage1.color = buildingPreview.index <= highestLevel ? Color.white : new Color(0, 0, 0, 0.7f);
            svgImage2.color = buildingPreview.index <= highestLevel ? Color.white : new Color(0, 0, 0, 0.7f);
        }
    }
Beispiel #7
0
    public void FinishPreview()
    {
        if (preview)
        {
            Destroy(preview.gameObject);
        }
        preview     = null;
        currentInfo = null;
        WindowsManager.Instance.PauseAll(false);
        IsPreviewing = false;
#if UNITY_ANDROID
        ZetanUtility.SetActive(CancelArea, false);
        UIManager.Instance.EnableJoyStick(true);
#endif
    }
    private void Start()
    {
        BuildingPlace buildingPlaceScript = FindObjectOfType <BuildingPlace>();

        if (buildingPlaceScript != null)
        {
            onCallPreviewBuilding += buildingPlaceScript.AttachPreviewToCursor;
        }

        Factory factoryScript = FindObjectOfType <Factory>();

        if (factoryScript != null)
        {
            onCallCreateUnit += factoryScript.CreateUnit;
        }
    }
Beispiel #9
0
    public void NewBuild(GameObject GO)
    {
        if (GO == null)
        {
            return;
        }

        if (isBuilding == true)
        {
            CancelBuilding();
        }

        previewGO       = Instantiate(GO, Vector3.zero, Quaternion.identity);
        previewGO.layer = LayerMask.NameToLayer("BuildingPreview");
        previewScript   = previewGO.GetComponent <BuildingPreview>();
        previewScript.buildingManager = this;
        isBuilding = true;
    }
Beispiel #10
0
    public void CreatPreview(BuildingInformation info)
    {
        if (info == null)
        {
            return;
        }
        HideDescription();
        HideBuiltList();
        currentInfo = info;
        preview     = Instantiate(currentInfo.Preview);
        WindowsManager.Instance.PauseAll(true);
        IsPreviewing = true;
#if UNITY_ANDROID
        ZetanUtility.SetActive(CancelArea, true);
        UIManager.Instance.EnableJoyStick(false);
#endif
        ShowAndMovePreview();
    }
Beispiel #11
0
    public void Update()
    {
        if (Input.GetKeyDown(KeyCode.R))//Rotate
        {
            if (previewGO != null)
            {
                previewGO.transform.Rotate(Vector3.up, 90);
            }
        }


        if (Input.GetKeyDown(KeyCode.X))//Cancel
        {
            isBuilding = false;
            Destroy(previewGO);
            previewGO     = null;
            previewScript = null;
        }

        if (Input.GetKeyDown(KeyCode.H)) //Build foundation
        {
            NewBuild(buildingBlocks.Find(block => block.GetComponent <BuildingPreview>().buildingType == BuildingPreview.BuildingType.Foundation));
        }


        if (Input.GetKeyDown(KeyCode.J)) //Build foundation
        {
            NewBuild(buildingBlocks.Find(block => block.GetComponent <BuildingPreview>().buildingType == BuildingPreview.BuildingType.Wall));
        }

        if (Input.GetKeyDown(KeyCode.K))
        {
            NewBuild(buildingBlocks.Find(block => block.GetComponent <BuildingPreview>().buildingType == BuildingPreview.BuildingType.Floor));
        }


        if (Input.GetKeyDown(KeyCode.L))
        {
            NewBuild(buildingBlocks.Find(block => block.GetComponent <BuildingPreview>().buildingType == BuildingPreview.BuildingType.Ramp));
        }

        if (Input.GetMouseButtonDown(0))//Rotate
        {
            if (previewScript == null)
            {
                return;
            }

            if (previewScript.GetSnapped())
            {
                StopBuilding();
            }
            else
            {
                Debug.Log("Not Snapped, can't place!");
            }
        }

        if (isBuilding)
        {
            if (pauseBuilding)
            {
                RaycastHit hit;

                if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100f, previewScript.layerMask.value))
                {
                    if ((hit.point - previewGO.transform.position).magnitude > stickTolerance)
                    {
                        pauseBuilding = false;
                    }
                }
            }
            else
            {
                DoBuildRay();
            }
        }
    }
        public Status<BuildingPreview> GenerateBuildingPreview(Building building)
        {
            if (building == null)
                return Status.ValidationError<BuildingPreview>(null, "building", "The building cannot be null");

            var preview = new BuildingPreview()
            {
                Address1 = building.Address1,
                Address2 = building.Address2,
                Bathrooms = building.Bathrooms.Value,
                Bedrooms = building.Bedrooms.Value,
                BuildingId = building.BuildingId,
                City = building.City,
                IsActive = building.IsActive,
                IsRemovedByAdmin = building.IsRemovedByAdmin,
                Latitude = building.Latitude,
                Longitude = building.Longitude,
                Price = building.Price,
                PrimaryPhotoExtension = building.PrimaryPhotoExtension,
                PrimaryPhotoId = building.PrimaryPhotoId,
                RibbonId = building.RibbonId,
                State = building.State,
                Title = building.Title,
                Zip = building.Zip
            };

            return Status.OK<BuildingPreview>(preview);
        }
    private float FlattenTerrain()
    {
        BuildingPreview previewScript = selectedObject.GetComponentInChildren <BuildingPreview>();

        List <GameObject> currentTerrain          = previewScript.GetCurrentTerrains();
        List <Mesh>       currentTerrainMeshes    = new List <Mesh>();
        List <Vector3[]>  currentTerrainVertices  = new List <Vector3[]>();
        List <Vector3[]>  modifiedTerrainVertices = new List <Vector3[]>();

        Bounds  previewBounds       = previewScript.GetNativeBounds();
        Vector2 previewBoundsCenter = new Vector2(previewBounds.center.x, previewBounds.center.z);

        Vector2 topLeft  = new Vector2(previewBounds.center.x - previewBounds.extents.x, previewBounds.center.z + previewBounds.extents.z);
        Vector2 topRight = new Vector2(previewBounds.center.x + previewBounds.extents.x, previewBounds.center.z + previewBounds.extents.z);
        Vector2 botLeft  = new Vector2(previewBounds.center.x - previewBounds.extents.x, previewBounds.center.z - previewBounds.extents.z);

        topLeft  = HelpfullFunctions.RotatePointAroundPivot(topLeft, previewBoundsCenter, -previewRotation.eulerAngles.y);
        topRight = HelpfullFunctions.RotatePointAroundPivot(topRight, previewBoundsCenter, -previewRotation.eulerAngles.y);
        botLeft  = HelpfullFunctions.RotatePointAroundPivot(botLeft, previewBoundsCenter, -previewRotation.eulerAngles.y);

        debugPoint1 = new Vector3(topLeft.x, 0, topLeft.y);
        debugPoint2 = new Vector3(topRight.x, 0, topRight.y);
        debugPoint3 = new Vector3(botLeft.x, 0, botLeft.y);

        float numberOfVertexes = 0;
        float totalY           = 0;
        float averageY         = 0;

        for (int i = 0; i < currentTerrain.Count; i++)
        {
            currentTerrainMeshes.Add(currentTerrain[i].GetComponent <MeshFilter>().sharedMesh);
            currentTerrainVertices.Add(currentTerrainMeshes[i].vertices);
        }

        for (int i = 0; i < currentTerrainMeshes.Count; i++)
        {
            Vector3[] terrainVertices = currentTerrainVertices[i];

            for (int j = 0; j < terrainVertices.Length; j++)
            {
                Vector3 terrainVertex = currentTerrain[i].transform.TransformPoint(terrainVertices[j]);
                Vector2 vertex2D      = new Vector2(terrainVertex.x, terrainVertex.z);

                if (HelpfullFunctions.IsPointInRectangle(topLeft, topRight, botLeft, vertex2D))
                {
                    totalY += terrainVertices[j].y;
                    numberOfVertexes++;
                }
            }
        }

        if (numberOfVertexes != 0)
        {
            averageY = totalY / numberOfVertexes;

            for (int i = 0; i < currentTerrainMeshes.Count; i++)
            {
                Vector3[] terrainVertices = currentTerrainVertices[i];

                for (int j = 0; j < terrainVertices.Length; j++)
                {
                    Vector3 terrainVertex = currentTerrain[i].transform.TransformPoint(terrainVertices[j]);
                    Vector2 vertex2D      = new Vector2(terrainVertex.x, terrainVertex.z);

                    if (HelpfullFunctions.IsPointInRectangle(topLeft, topRight, botLeft, vertex2D))
                    {
                        terrainVertices[j] = new Vector3(terrainVertices[j].x, averageY, terrainVertices[j].z);
                    }
                }

                modifiedTerrainVertices.Add(terrainVertices);
            }

            for (int i = 0; i < modifiedTerrainVertices.Count; i++)
            {
                currentTerrainMeshes[i].vertices = modifiedTerrainVertices[i];
            }
        }

        return(averageY);
    }