private void SelectSceneObject(object sender, SceneObjectSelectedEventArgs e) { if (view.Selection == e.Selection) { return; } if (view.Selection != null) { DeselectSceneObject(); } view.state = State.ItemSelection; view.Selection = e.Selection; Outline outline = view.Selection.GetComponent <Outline>(); if (outline != null) { outline.enabled = true; } view.Arrow.SetActive(true); view.MoveArrow(); if (e.Selection.tag == "Camera") { view.DisplayCameraPreview(); } OnRequestSceneObjectParameter(this, e); }
public void DisplaySceneObjectParameter(SceneObjectSelectedEventArgs e) { foreach (var parameter in e.Parameter) { GameObject view = parameter.GetGameObjectView(); SceneObjectParameterController controller = new SceneObjectParameterController(parameter, view.GetComponent <ISceneObjectParameterView>()); view.GetComponent <ISceneObjectParameterView>().OnParameterValueChanged += e.Selection.GetComponent <ISceneObjectView>().ParameterValueChanged; e.Selection.GetComponent <SceneObjectView>().OnSceneObjectValueChanged += controller.UpdateParameterView; sceneObjectParameterControllers.Add(controller); view.transform.SetParent(ParameterView); view.transform.localPosition = new Vector3(view.transform.position.x, view.transform.position.y, 0); view.transform.localScale = new Vector3(1, 1, 1); } }
public void ClearParameterView(SceneObjectSelectedEventArgs e) { foreach (SceneObjectParameterController controller in sceneObjectParameterControllers) { e.Selection.GetComponent <SceneObjectView>().OnSceneObjectValueChanged -= controller.UpdateParameterView; } sceneObjectParameterControllers.Clear(); foreach (Transform child in ParameterView) { child.GetComponent <ISceneObjectParameterView>().OnParameterValueChanged -= e.Selection.GetComponent <SceneObjectView>().ParameterValueChanged; Destroy(child.gameObject); } }
public void RequestParameter(object sender, SceneObjectSelectedEventArgs e) { SceneObjectView tmpView = (SceneObjectView)view; if (IsViewNull()) { DestoryController(this, EventArgs.Empty); return; } if (!view.IsEquals(e.Selection)) { return; } e.Parameter = model.Parameter; OnSendParameter(this, e); }
private void DeselectSceneObject() { if (view.Selection != null) { view.HideCameraPreview(); SceneObjectSelectedEventArgs args = new SceneObjectSelectedEventArgs(); args.Selection = view.Selection; OnHideSceneObjectParameter(this, args); Outline outline = view.Selection.GetComponent <Outline>(); if (outline != null) { outline.enabled = false; } view.Arrow.SetActive(false); view.Selection = null; } view.state = State.Idle; }
private void CreateSceneObject(object sender, DisplayItemClickedArgs e) { if (view.state == State.ItemPlacement) { return; } if (e.ItemModel is TextureItemModel) { DeselectSceneObject(); view.state = State.TexturePlacement; view.Selection = GameObject.CreatePrimitive(PrimitiveType.Plane); e.ItemModel.ApplyItemProperties(view.Selection); view.Selection.transform.localScale *= 10; } else { GameObject sceneObject = CreateSceneObject(e.ItemModel); SceneObjectSelectedEventArgs args = new SceneObjectSelectedEventArgs(); args.Selection = sceneObject; SelectSceneObject(this, args); view.state = State.ItemPlacement; } }
public void HideSceneObjectParameter(object sender, SceneObjectSelectedEventArgs e) { view.ClearParameterView(e); }
public void DisplaySceneObjectParameter(object sender, SceneObjectSelectedEventArgs e) { view.DisplaySceneObjectParameter(e); }
public void HideSceneObjectParameter(object sender, SceneObjectSelectedEventArgs args) { OnHideSceneObjectParameter(sender, args); }
private void DisplaySceneObjectParameter(object sender, SceneObjectSelectedEventArgs e) { OnDisplaySceneObjectParameter(sender, e); }
private void Update() { //Item selection if (state == State.Idle || state == State.ItemSelection) { if (Input.GetMouseButtonUp(0) && !IsMouseOverUI()) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerMask.GetMask("SceneObject", "Visualization"))) { SceneObjectSelectedEventArgs args = new SceneObjectSelectedEventArgs(); args.Selection = hit.transform.gameObject; OnSceneObjectSelected(this, args); } else { if (Selection != null) { OnSceneObjectDeselected(); } } } } //Delete selected sceneobject with DeleteKey if (state == State.ItemSelection) { if (Input.GetKeyUp(KeyCode.Delete)) { ISceneObjectView view = Selection.GetComponent <ISceneObjectView>(); if (view != null) { SceneObjectSelectedEventArgs args = new SceneObjectSelectedEventArgs(); view.DeleteSceneObject(); args.Selection = Selection; OnHideParameter(this, args); Selection.GetComponent <SceneObjectView>().DestoyController(); } else { OnDefaultSunDeleted(); } Destroy(Selection); Arrow.SetActive(false); state = State.Idle; Selection = null; } } //During texture placement if (state == State.TexturePlacement) { if (!IsMouseOverUI()) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerMask.GetMask("SceneObject"))) { Selection.transform.position = hit.point; if (Input.GetMouseButtonUp(0)) { ISceneObjectView view = hit.transform.GetComponent <ISceneObjectView>(); if (view != null) { StoreParameterEventArgs args = new StoreParameterEventArgs(Constants.SceneObjectParameter.TEXTURE); args.Value = Selection.GetComponent <Renderer>().material; view.ParameterValueChanged(this, args); } } } else { Vector3 pos = Input.mousePosition; pos.z = objectDistance; Selection.transform.position = Camera.main.ScreenToWorldPoint(pos); } } if (Input.GetMouseButtonUp(1)) { Destroy(Selection); Selection = null; state = State.Idle; } } //During moving with Arrow if (state == State.SelectionMovement) { if (Input.GetMouseButtonUp(0)) { Direction = Vector3.zero; state = State.ItemSelection; } else { Vector2 diff = Input.mousePosition - lastMousePosition; float movementSpeed = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift) ? 0.1f : 0.5f; Selection.transform.position += Direction * movementSpeed * (diff.x + diff.y); lastMousePosition = Input.mousePosition; Selection.GetComponent <ISceneObjectView>().SceneObjectValueChanged(Constants.SceneObjectParameter.POSITION, Selection.transform.position); MoveArrow(); } } //During placement of an item if (Selection != null && state == State.ItemPlacement) { //Dont show item above UI if (!IsMouseOverUI()) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerMask.GetMask("SceneObject", "Visualization"))) { if (hit.transform.tag != "Arrow") { Selection.transform.position = hit.point; } } else { Vector3 pos = Input.mousePosition; pos.z = objectDistance; Selection.transform.position = Camera.main.ScreenToWorldPoint(pos); } MoveArrow(); Selection.GetComponent <ISceneObjectView>().SceneObjectValueChanged(Constants.SceneObjectParameter.POSITION, Selection.transform.position); if (Input.GetMouseButtonUp(0)) { OnPlaceItem(this, EventArgs.Empty); } if (Input.GetMouseButtonUp(1)) { Selection.GetComponent <ISceneObjectView>().DeleteSceneObject(); Selection.GetComponent <ISceneObjectView>().DestoyController(); Destroy(Selection); Arrow.SetActive(false); Selection = null; state = State.Idle; } } } }