Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 5
0
 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;
 }
Ejemplo n.º 6
0
    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;
        }
    }
Ejemplo n.º 7
0
 public void HideSceneObjectParameter(object sender, SceneObjectSelectedEventArgs e)
 {
     view.ClearParameterView(e);
 }
Ejemplo n.º 8
0
 public void DisplaySceneObjectParameter(object sender, SceneObjectSelectedEventArgs e)
 {
     view.DisplaySceneObjectParameter(e);
 }
Ejemplo n.º 9
0
 public void HideSceneObjectParameter(object sender, SceneObjectSelectedEventArgs args)
 {
     OnHideSceneObjectParameter(sender, args);
 }
Ejemplo n.º 10
0
 private void DisplaySceneObjectParameter(object sender, SceneObjectSelectedEventArgs e)
 {
     OnDisplaySceneObjectParameter(sender, e);
 }
Ejemplo n.º 11
0
    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;
                }
            }
        }
    }