예제 #1
0
        public void CreateNew(AEType _type)
        {
            AssignmentEntity newEntity = new AssignmentEntity();
            int newID = 1000;

            while (mapSystem.assignmentEntityDictionary.ContainsKey(newID))
            {
                newID++;
            }
            newEntity.aeID   = newID;
            newEntity.aeType = _type;
            newEntity.floor  = mapSystem.currentFloor.Value;
            newEntity.pos    = Vector2.zero;
            newEntity.radius = .5f;
            newEntity.theta  = 0;

            mapSystem.assignmentEntityDictionary.Add(newEntity.aeID, newEntity);

            AssignmentEntityRenderer newRenderer = _type == AEType.computer ?
                                                   GameObject.Instantiate(assCompPrefab, mapSystem.coordinate) :
                                                   GameObject.Instantiate(assWallPrefab, mapSystem.coordinate);

            newRenderer.Initialize(newEntity.aeID, infoSystem, mapSystem);

            mapSystem.SelectAssignmentEntityRenderer(newRenderer);
        }
예제 #2
0
        // Use this for initialization
        void Start()
        {
            myRenderer   = GetComponent <AssignmentEntityRenderer>();
            eventTrigger = GetComponent <EventTrigger>();

            EventTrigger.Entry pointerEnter = new EventTrigger.Entry();
            pointerEnter.eventID = EventTriggerType.PointerEnter;
            pointerEnter.callback.AddListener((eventData) => {
                if (myRenderer.InCurrentFloor())
                {
                    transform.DOScale(new Vector3(1.1f, 1.1f, 1.1f), .35f).SetEase(Ease.OutCubic);
                }
            });

            EventTrigger.Entry pointerExit = new EventTrigger.Entry();
            pointerExit.eventID = EventTriggerType.PointerExit;
            pointerExit.callback.AddListener((eventData) => {
                if (myRenderer.InCurrentFloor())
                {
                    transform.DOScale(new Vector3(1f, 1f, 1f), .35f).SetEase(Ease.OutCubic);
                }
            });

            EventTrigger.Entry pointerDown = new EventTrigger.Entry();
            pointerDown.eventID = EventTriggerType.PointerDown;
            pointerDown.callback.AddListener((eventData) => {
                GetComponent <AssignmentEntityRenderer>().mapSystem
                .ClickAssignmentEntityRenderer(GetComponent <AssignmentEntityRenderer>());
            });

            eventTrigger.triggers.Add(pointerEnter);
            eventTrigger.triggers.Add(pointerExit);
            eventTrigger.triggers.Add(pointerDown);
        }
예제 #3
0
 public void DeleteCurrentEntity()
 {
     if (selectedEntity != null)
     {
         mapSystem.assignmentEntityDictionary.Remove(selectedEntity.aeID);
         Destroy(selectedEntity.gameObject);
         selectedEntity    = null;
         currentMode.Value = EditMode.NONE;
     }
 }
        protected void LoadAssEntity(AssignmentEntityRenderer entityRenderer)
        {
            Debug.Log("dd");
            compDisp.Clear();

            currentRenderer = entityRenderer;
            currentEntity   = entityRenderer.mapSystem.assignmentEntityDictionary[entityRenderer.aeID];
            id.text         = currentEntity.aeID.ToString();
            floor.text      = currentEntity.floor.ToString();
            rad.text        = currentEntity.radius.ToString();
            rot.text        = currentEntity.theta.ToString();
            posX.text       = currentEntity.pos.x.ToString();
            posY.text       = currentEntity.pos.y.ToString();
            string a = "";

            foreach (int i in currentEntity.assignmentIDList)
            {
                a += i + " ";
            }
            assignments.text = a;

            Observable
            .CombineLatest(posX.ObserveEveryValueChanged(__ => __.text), posY.ObserveEveryValueChanged(__ => __.text))
            .Where(__ => editorSystem.currentMode.Value == EditorSystem.EditMode.VALUES)
            .Subscribe(_pos => {
                float pos0, pos1;
                bool canParse;
                canParse = float.TryParse(_pos[0], out pos0);
                canParse = float.TryParse(_pos[1], out pos1) && canParse;
                if (canParse)
                {
                    currentRenderer.transform.localPosition = new Vector2(pos0, pos1);
                }
            }).AddTo(compDisp);

            rot.ObserveEveryValueChanged(__ => __.text)
            .Where(__ => editorSystem.currentMode.Value == EditorSystem.EditMode.VALUES)
            .Subscribe(_rot => {
                float rotOut;
                if (float.TryParse(_rot, out rotOut))
                {
                    currentRenderer.transform.rotation = Quaternion.Euler(0, 0, rotOut);
                }
            });

            rad.ObserveEveryValueChanged(__ => __.text)
            .Where(__ => currentRenderer.myType == AEType.wall)
            .Where(__ => editorSystem.currentMode.Value == EditorSystem.EditMode.VALUES)
            .Subscribe(_rad => {
                float radOut;
                if (float.TryParse(_rad, out radOut))
                {
                    currentRenderer.GetComponentInChildren <SpriteRenderer>().size =
                        new Vector2(radOut, currentRenderer.GetComponentInChildren <SpriteRenderer>().size.y);
                }
            });

            rad.ObserveEveryValueChanged(__ => __.text)
            .Where(__ => currentRenderer.myType == AEType.computer)
            .Where(__ => editorSystem.currentMode.Value == EditorSystem.EditMode.VALUES)
            .Subscribe(_rad => {
                float radOut;
                if (float.TryParse(_rad, out radOut))
                {
                    currentRenderer.GetComponentInChildren <SpriteRenderer>().size =
                        new Vector2(radOut, radOut) * 2;
                }
            });

            entityRenderer.ObserveEveryValueChanged(__ => __.transform.localPosition)
            .Where(__ => editorSystem.currentMode.Value == EditorSystem.EditMode.TRANSFORM)
            .Subscribe(pos => {
                posX.text = pos.x.ToString();
                posY.text = pos.y.ToString();
            }).AddTo(compDisp);

            entityRenderer.ObserveEveryValueChanged(__ => __.transform.localEulerAngles)
            .Where(__ => editorSystem.currentMode.Value == EditorSystem.EditMode.TRANSFORM)
            .Subscribe(_rot => {
                rot.text = _rot.z.ToString();
            }).AddTo(compDisp);

            currentRenderer.GetComponentInChildren <SpriteRenderer>().ObserveEveryValueChanged(__ => __.size)
            .Where(__ => editorSystem.currentMode.Value == EditorSystem.EditMode.TRANSFORM)
            .Subscribe(_size => {
                rad.text = _size.x.ToString();
            }).AddTo(compDisp);
        }
예제 #5
0
        // Use this for initialization
        void Start()
        {
            this.UpdateAsObservable()
            .Where(__ => Input.GetKeyDown(KeyCode.F2))
            .Subscribe(__ =>
            {
                editorOn.Value = !editorOn.Value;
            });

            this.UpdateAsObservable()
            .Where(__ => editorOn.Value)
            .Where(__ => currentMode.Value == EditMode.NONE)
            .Where(__ => Input.GetKeyDown(KeyCode.F3))
            .Subscribe(__ =>
            {
                CreateNew(AEType.computer);
            });

            this.UpdateAsObservable()
            .Where(__ => editorOn.Value)
            .Where(__ => currentMode.Value == EditMode.NONE)
            .Where(__ => Input.GetKeyDown(KeyCode.F4))
            .Subscribe(__ =>
            {
                CreateNew(AEType.wall);
            });

            this.UpdateAsObservable()
            .Where(__ => this.currentMode.Value == EditMode.TRANSFORM)
            .Subscribe(__ =>
            {
                if (Input.GetKey(KeyCode.A))
                {
                    Vector3 screenToWorld             = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                    selectedEntity.transform.position = new Vector3(screenToWorld.x, screenToWorld.y, selectedEntity.transform.position.z);
                }
                if (Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.D))
                {
                    mousePos = Input.mousePosition;
                }
                else if (Input.GetKey(KeyCode.S))
                {
                    float deltaY = Input.mousePosition.y - mousePos.y;
                    selectedEntity.transform.Rotate(0, 0, deltaY * Time.deltaTime * 10);
                    mousePos = Input.mousePosition;
                }
                else if (Input.GetKey(KeyCode.D))
                {
                    float deltaX = Input.mousePosition.x - mousePos.x;
                    Vector2 size = selectedEntity.GetComponentInChildren <SpriteRenderer>().size;
                    selectedEntity.GetComponentInChildren <SpriteRenderer>().size = new Vector2(size.x + deltaX * Time.deltaTime, size.y);
                    mousePos = Input.mousePosition;
                }
            });

            editorOn.AsObservable()
            .Subscribe(flag =>
            {
                editorCanvas.SetActive(flag);
            });

            mapSystem.SubjectAssignmentEntityRendererClicked.AsObservable()
            .Where(__ => editorOn.Value)
            .Subscribe(ent =>
            {
                if (currentMode.Value == EditMode.NONE || selectedEntity != ent)
                {
                    currentMode.Value = EditMode.VALUES;
                    selectedEntity    = ent;
                    SubjectAssignmentEntityRendererSelected_Edit.OnNext(ent);
                }
                else
                {
                    if (currentMode.Value == EditMode.TRANSFORM)
                    {
                        Debug.Log("current mode :: values");
                        currentMode.Value = EditMode.VALUES;
                    }
                    else
                    {
                        Debug.Log("current mode :: transform");
                        currentMode.Value = EditMode.TRANSFORM;
                    }
                }
            });
        }
예제 #6
0
 public void EditorWindowClosed()
 {
     currentMode.Value = EditMode.NONE;
     selectedEntity    = null;
 }
예제 #7
0
 public void ClickAssignmentEntityRenderer(AssignmentEntityRenderer r)
 {
     SubjectAssignmentEntityRendererClicked.OnNext(r);
 }
예제 #8
0
 public void SelectAssignmentEntityRenderer(AssignmentEntityRenderer r)
 {
     SubjectAssignmentEntityRendererSelected.OnNext(r);
 }