/// <summary> /// Sets up the script according to the given object. If we can edit it, /// then we update our values. Otherwise hide this panel. /// </summary> /// <param name="obj">Object.</param> public void SetEditingObject(GameObject obj) { if (obj == null) { editingObject = null; } else { editingObject = obj.GetComponent <AisleArea>(); } PopulateObject(); }
/// <summary> /// Overwrites this floor's content with JSON object root. /// </summary> /// <param name = "api">The FloorController.</param> /// <param name="root">Root.</param> public void FromJSON(FloorController api, JSONNode root) { if (root == null) { return; } floorId = root["floor_id"]; floorName = root["floor_name"]; floorOrder = root["floor_order"]; libraryId = root["library"]; if (api == null) { // Not ready to expand yet! floorJSONCache = root.ToString(); return; } aisles.Clear(); aisleAreas.Clear(); walls.Clear(); landmarks.Clear(); foreach (JSONObject obj in root["aisles"].AsArray) { Aisle aisle = api.CreateAisle(Rect.zero, false, true); aisle.FromJSON(api, obj); } foreach (JSONObject obj in root["aisle_areas"].AsArray) { AisleArea aisleArea = api.CreateAisleArea(Rect.zero, false, true); aisleArea.FromJSON(api, obj); } foreach (JSONObject obj in root["walls"].AsArray) { Wall wall = api.CreateWall(Vector2.zero, Vector2.zero, false, true); wall.FromJSON(api, obj); } foreach (JSONObject obj in root["landmarks"].AsArray) { Landmark landmark = api.CreateLandmark(Rect.zero, false, true); landmark.FromJSON(api, obj); } }
/// <summary> /// Creates a new aisle area and adds it to the floor. /// </summary> /// <param name="rect">Dimensions of the aisle area.</param> /// <param name = "preview">Whether this is only a preview of the real object.</param> /// <param name = "isUndoRedo">Is this creation a result of undo/redo?</param> public AisleArea CreateAisleArea(Rect rect, bool preview, bool isUndoRedo = false) { if (preview) { // Destroys preview if it is of a different type if (previewObject != null && previewObject.GetComponent <AisleArea>() == null) { ClearPreview(); } // Create a preview object if it is not there already. if (previewObject == null) { previewObject = Instantiate(aisleAreaPrefab, previewLayer).GetComponent <CanvasGroup>(); previewObject.alpha = 0.5f; } // Resize ((RectTransform)previewObject.transform).sizeDelta = rect.size; ((RectTransform)previewObject.transform).anchoredPosition = rect.center; return(null); } else { // Clears the preview object. AisleArea obj = Instantiate(aisleAreaPrefab, aisleAreaLayer); ((RectTransform)obj.transform).sizeDelta = rect.size; ((RectTransform)obj.transform).anchoredPosition = rect.center; floor.aisleAreas.Add(obj); ClearPreview(); if (!isUndoRedo) { ActionManager.shared.Push(); } return(obj); } }