Esempio n. 1
0
                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);
                }
Esempio n. 2
0
    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;
                    }
                }
            }
        });
    }