bool configGraphic(string key, string value, Configuration.Options options) { Graphic graphic = null; switch (value.ToLower()) { case "text": graphic = new GraphicText(container_, options); break; case "battery": graphic = new GraphicBattery(container_, options); break; case "list": graphic = new GraphicList(container_, options); break; case "bar": graphic = new GraphicBar(container_, options); break; case "icon": graphic = new GraphicIcon(container_, options); break; case "slider": graphic = new GraphicSlider(container_, options); break; case "test": graphic = new GraphicTest(container_, options); break; case "curvedbar": graphic = new GraphicCurvedBar(container_, options); break; } if (graphic != null) { if (graphic.construct()) { setSubHandler(graphic.getConfigHandler()); container_.graphics_.Add(graphic); return(true); } else { container_.log(Console.LogType.Error, $"Failed to construct graphic:{value}"); } } else { container_.log(Console.LogType.Error, $"Invalid graphic type:{value}"); } return(false); }
void Awake() { Canvas canvas2d = VectorLine.canvas; GraphicRaycaster graphicRaycaster = canvas2d.gameObject.AddComponent <GraphicRaycaster>(); graphicRaycaster.blockingObjects = GraphicRaycaster.BlockingObjects.ThreeD; Button drawBtn = GameObject.Find("UIRoot/DrawBtn").GetComponent <Button>(); bool clicked = false; drawBtn.onClick.AddListener(() => { clicked = !clicked; Debug.Log("On DrawBtn clicked.." + clicked); if (clicked) { if (this.mState != State2D.Draw) { this.mState = State2D.Draw; } } else { if (this.mState == State2D.Draw) { this.mState = State2D.Idle; } } }); GameObject background = new GameObject("background", typeof(RectTransform)); RectTransform rectTrans = background.GetComponent <RectTransform>(); rectTrans.parent = canvas2d.transform; rectTrans.anchoredPosition = new Vector2(0.5f, 0.5f); rectTrans.anchorMin = new Vector2(0f, 0f); rectTrans.anchorMax = new Vector2(1f, 1f); GraphicTest test = background.AddComponent <GraphicTest>(); // test.onDrag = (eventData) => { // Debug.Log("onDrag.."); // if(mState == State2D.Idle){ // OnDrag(eventData.delta); // } // }; test.color = new Color(0.95f, 0.95f, 0.95f, 1.0f); EventTrigger trigger = background.AddComponent <EventTrigger>(); //OnClick; EventTrigger.Entry entry = new EventTrigger.Entry(); trigger.triggers.Add(entry); entry.eventID = EventTriggerType.PointerClick; entry.callback.AddListener((eventData) => { // PointerEventData data = eventData as PointerEventData; // if(mState == State2D.Idle){ // //Debug.Log("onClick.."); // Vector2 wordPos = DrawHelper.PixelToReal(camera2d, data.position); // Wall2D wall; // if(segmentFill.Select(wordPos, out wall)){ // wall.Color = Color.green; // } // } }); Wall2D selected = null; //OnPress Down; entry = new EventTrigger.Entry(); trigger.triggers.Add(entry); entry.eventID = EventTriggerType.PointerDown; entry.callback.AddListener((eventData) => { PointerEventData data = eventData as PointerEventData; if (mState == State2D.Idle) { Vector2 wordPos = DrawHelper.PixelToReal(camera2d, data.position); if (segmentFill.Select(wordPos, out selected)) { //Debug.Log(string.Format("change green..{0}, {1}", selected.StartPos, selected.EndPos )); selected.Color = Color.green; Wall2D wall = selected; } } }); //OnPress Up; entry = new EventTrigger.Entry(); trigger.triggers.Add(entry); entry.eventID = EventTriggerType.PointerUp; entry.callback.AddListener((eventData) => { PointerEventData data = eventData as PointerEventData; if (mState == State2D.Idle) { if (selected != null) { selected.Color = Color.red; selected = null; } } }); //OnDrag; entry = new EventTrigger.Entry(); trigger.triggers.Add(entry); entry.eventID = EventTriggerType.Drag; entry.callback.AddListener((eventData) => { //Debug.Log("onDrag.."); PointerEventData data = eventData as PointerEventData; Vector2 realDelta = data.delta * DrawHelper.Scale; if (mState == State2D.Idle) { if (selected == null) { //camera2d.transform.position = camera2d.transform.position + new Vector3(-realDelta.x, -realDelta.y, 0f); DrawHelper.MoveRealRect(camera2d, realDelta); MakeGrid2(); } else { Wall2D wall = selected; Vector2 startT = wall.StartPos + realDelta; Vector2 endT = wall.EndPos + realDelta; List <Wall2D> joined = new List <Wall2D>(); if (wall.WallAtStart == null) { joined.Clear(); AddWallsJoined(joined, wall, true); if (joined.Count > 0) { Vector3 target = joined[joined.Count - 1].EndPos; Vector2 delta = SnapPoint(startT, target); startT = startT + delta; endT = endT + delta; } } if (wall.WallAtEnd == null) { joined.Clear(); AddWallsJoined(joined, wall, false); if (joined.Count > 0) { Vector3 target = joined[joined.Count - 1].StartPos; //Debug.Log(string.Format("endT: ({0}, {1}), target: ({2}, {3})", endT.x, endT.y, target.x - endT.x, target.y - endT.y)); Vector2 delta = SnapPoint(endT, target); startT = startT + delta; endT = endT + delta; } } if (wall.WallAtStart != null && wall.WallAtEnd != null) { Parallel.Line line = mParallel.GetOffsetLine(wall, realDelta); Parallel.Line line1 = mParallel.GetLine(wall.WallAtStart.StartPos, wall.WallAtStart.EndPos); Parallel.Line line2 = mParallel.GetLine(wall.WallAtEnd.StartPos, wall.WallAtEnd.EndPos); Vector2 p = Vector2.zero; if (mParallel.GetCrossPoint(line, line1, out p)) { if (wall.WallAtStart.StartPos != p) { wall.StartPos = p; wall.WallAtStart.EndPos = p; } else { Debug.Log("wallAtStart duplicate.."); } } if (mParallel.GetCrossPoint(line, line2, out p)) { if (wall.WallAtEnd.EndPos != p) { wall.EndPos = p; wall.WallAtEnd.StartPos = p; } else { Debug.Log("wallAtEnd duplicate.."); } } return; } wall.StartPos = startT; if (wall.WallAtStart != null) { // wall.WallAtStart.WallAtEnd = null; // wall.WallAtStart = null; wall.WallAtStart.EndPos = startT; } wall.EndPos = endT; if (wall.WallAtEnd != null) { // wall.WallAtEnd.WallAtStart = null; // wall.WallAtEnd = null; wall.WallAtEnd.StartPos = endT; } } } }); }