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); }
// 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); }
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); }
// 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; } } }); }
public void EditorWindowClosed() { currentMode.Value = EditMode.NONE; selectedEntity = null; }
public void ClickAssignmentEntityRenderer(AssignmentEntityRenderer r) { SubjectAssignmentEntityRendererClicked.OnNext(r); }
public void SelectAssignmentEntityRenderer(AssignmentEntityRenderer r) { SubjectAssignmentEntityRendererSelected.OnNext(r); }