Example #1
0
        private DebugUiManager CreateUI(Camera camera, Shader textShader, Shader textureShader)
        {
            //camera.clearFlags = CameraClearFlags.Depth;
            //camera.depth = 100;
            //camera.targetDisplay = 0;
            //camera.stereoTargetEye = StereoTargetEyeMask.None;

            var ui = DebugUiManager.Create(
                camera,
                textShader,
                textureShader,
                Resources.GetBuiltinResource <Font>("Arial.ttf"),
                1920, 1080,
                100f, 8192
                );

            //Set up Layer
            camera.cullingMask = 1 << UILayer;
            foreach (var t in camera.gameObject.GetComponentsInChildren <Transform>())
            {
                t.gameObject.layer = UILayer;
            }

            return(ui);
        }
Example #2
0
    void Start()
    {
        _debugUi = DebugUiManager.Create(
            _camera,
            _textShader,
            _texturedShader,
            _font,
            referenceScreenWidth: 1024,
            referenceScreenHeight: 576,
            screenPlaneDistance: 100f,
            triangleCapacity: 8192);
        _sampleWindow = new SampleWindow(_debugUi);
        _debugUi.Add(_sampleWindow, 0, 0, DebugUi.AlignX.Right, DebugUi.AlignY.Bottom);

        _menu = new DebugUiMenu(100, 40);
        var subA = new DebugUiSubMenu("SubA", 100, 40, DebugUi.Direction.Down);

        subA.AddItem("A1", () => Debug.Log("A1"));
        subA.AddItem("A2", () => Debug.Log("A2"));
        var subB = new DebugUiSubMenu("SubA", 100, 40, DebugUi.Direction.Down);

        subB.AddItem("B1", () => Debug.Log("B1"));
        subB.AddItem("B2", () => Debug.Log("B2"));
        subA.AddSubMenu(subB, DebugUi.Direction.Right);
        _menu.AddSubMenu(subA, DebugUi.Direction.Down);
        _menu.AddItem("1", () => Debug.Log("1"));
        _menu.AddItem("2", () => Debug.Log("2"));
        _debugUi.Add(_menu, 0, 0);
    }
Example #3
0
    public DirectViewerSampleUi(
        DebugUiManager manager,
        int serverPort,
        System.Action onClickPlay,
        System.Action onClickStop,
        System.Action onClickNext)
    {
        initialWidth  = Screen.width;
        initialHeight = Screen.height;

        manager.ManualStart();
        // ログできるだけ速く欲しいので、こいつのコンストラクトだけ先にやる
        logWindow         = new LogWindow(12f, 400f, 736f, borderEnabled: true, captureUnityLog: true);
        logWindow.Enabled = false;

        var frameTimeGauge = new FrameTimeGauge(100f, 15f, null);

        manager.Add(frameTimeGauge, 0f, 0f, AlignX.Right, AlignY.Bottom);
        menu = new Menu(100f, 40f, Direction.Down, "DebugMenu");
        manager.Add(menu);
        menu.AddItem("LogWindow", () =>
        {
            logWindow.Enabled = !logWindow.Enabled;
        });
        manager.Add(logWindow, 0f, 0f, AlignX.Center, AlignY.Center);

        var ip = DebugServerUtil.GetLanIpAddress();

        if (ip == null)
        {
            ip = "NO NETWORK";
        }
        ipButton = menu.AddItem(ip, () =>
        {
#if UNITY_EDITOR || UNITY_STANDALONE
            var url = string.Format("http://{0}:{1}/", DebugServerUtil.GetLanIpAddress(), serverPort);
            Application.OpenURL(url);
#endif
        });
        menu.AddItem("Play", onClickPlay);
        menu.AddItem("Stop", onClickStop);
        menu.AddItem("Next", onClickNext);
        var text = string.Format("{0}x{1}", Screen.width, Screen.height);
        resoButton = menu.AddItem(text, () =>
        {
            // sqrt(0.5)倍していく。描画面積は半分になる
            var w = Screen.width * 707 / 1000;
            var h = Screen.height * 707 / 1000;
            if (w < (16 * 9))
            {
                w = initialWidth;
                h = initialHeight;
            }
            Screen.SetResolution(w, h, false, 60);
            resoButton.Text = w.ToString() + "x" + h.ToString();
        });
    }
Example #4
0
    public DebugUiButton(DebugUiManager manager = null) : base(manager)
    {
        BorderWidth     = 1f;
        BackgroundColor = new Color32(100, 100, 100, 100);
        BorderColor     = new Color32(255, 255, 255, 255);
        TextColor       = new Color32(255, 255, 255, 255);
        FontSize        = 10f;

        OnClick = () =>
        {
            Debug.LogFormat("Button.OnClick: id: {0}", Id);
        };
    }
Example #5
0
    public DebugUiControl(DebugUiManager manager = null)
    {
        // スレッドセーフじゃなくてよさそうなのでInterlocked.Incrementは使わない
        id = instanceCount++;

        if (manager != null)
        {
            this.manager = manager;
            manager.OnCreate(this);
        }

        Enabled = true;
    }
Example #6
0
 void Start()
 {
     _renderer = new DebugPrimitiveRenderer2D(
         _textShader,
         _texturedShader,
         _font,
         _camera,
         capacity: 8192);
     _debugUi = DebugUiManager.Create(
         _gameObjectForDebugUiManager,
         _renderer);
     _sampleWindow = new SampleWindow(_debugUi);
     _debugUi.Add(_sampleWindow);
 }
Example #7
0
 public DebugUiText(string text = "", DebugUiManager manager = null) : base(manager)
 {
     Text      = text;
     TextColor = new Color32(255, 255, 255, 255);
     Format    = new PrimitiveRenderer2D.TextFormat()
     {
         Alignment         = PrimitiveRenderer2D.Alignment.Left,
         VerticalAlignment = PrimitiveRenderer2D.VerticalAlignment.Top,
         Overflow          = PrimitiveRenderer2D.Overflow.Nothing,
         FontStyle         = FontStyle.Normal,
         FontSize          = 10f,
         LineHeight        = 15f,
     };
 }
Example #8
0
 public DebugUiPanel(
     float width            = float.MaxValue,
     float height           = float.MaxValue,
     float borderWidth      = 1f,
     DebugUiManager manager = null) : base(manager)
 {
     BorderWidth       = borderWidth;
     BackgroundColor   = new Color32(100, 100, 100, 100);
     BorderColor       = new Color32(255, 255, 255, 255);
     Width             = width;
     Height            = height;
     nextX             = borderWidth;
     nextY             = nextX;
     currentLineHeight = 0f;
 }
Example #9
0
    public virtual void Dispose()
    {
        if (manager != null)
        {
            manager.OnDispose(this);
            manager = null;
        }

        RemoveAllChildren();

        parent      = null;
        prevSibling = null;
        nextSibling = null;
        firstChild  = null;
        lastChild   = null;
    }
Example #10
0
 public DebugUiColoredControl(DebugUiManager manager = null) : base(manager)
 {
 }
Example #11
0
    public DebugService(
        World world,
        int serverPort,
        Camera camera,
        Shader textShader,
        Shader texturedShader,
        Font font,
        Sprite tapMark,
        string debugServerIndexHtml)
    {
        var decodedToken = DebugSlack.DecryptXor(slackKey, slackEncodedToken);

        if (decodedToken != null)
        {
            slack = new DebugSlack(decodedToken, "テキトーなチャンネル名");
        }
        // ログできるだけ速く欲しいので、こいつのコンストラクトだけ先にやる
        Log         = new DebugUiLogWindow(12f, 380f, 700f, borderEnabled: true, captureUnityLog: true);
        Log.enabled = false;

        this.world = world;
        this.debugServerIndexHtml = debugServerIndexHtml;
        server = new DebugServer(serverPort, "/assets/", OnFileChanged);

        uiManager = DebugUiManager.Create(
            camera,
            textShader,
            texturedShader,
            font,
            432,
            768,
            1f,
            8192);
        uiManager.safeAreaVisualizationEnabled = true;
        var frameTimeGauge = new FrameTimeGauge(100f, 15f, null);

        uiManager.Add(frameTimeGauge, 0f, 0f, DebugUi.AlignX.Right, DebugUi.AlignY.Bottom);
        menu = new DebugUiMenu(100f, 40f, DebugUi.Direction.Down, "DebugMenu");
        uiManager.Add(menu);
        menu.AddItem("LogWindow", () =>
        {
            Log.enabled = !Log.enabled;
        });
        uiManager.Add(Log, 0, 40f, DebugUi.AlignX.Center, DebugUi.AlignY.Top);

        var dataSubMenu = new DebugUiSubMenu("Data", 100f, 40f, DebugUi.Direction.Down);

        menu.AddSubMenu(dataSubMenu, DebugUi.Direction.Right);
        dataSubMenu.AddItem("SendJsons", () =>
        {
            world.StartCoroutine(CoSendJsons());
        });
        dataSubMenu.AddItem("Reload\nGlobalParams", () =>
        {
            world.ReloadGlobalParams();
        });

        var debugSubMenu = new DebugUiSubMenu("Debug", 100f, 40f, DebugUi.Direction.Down);

        menu.AddSubMenu(debugSubMenu, DebugUi.Direction.Right);

        debugSubMenu.AddItem("HideDebug", () =>
        {
            ToggleUiEnabled();
        });

        debugSubMenu.AddItem("AutoTap", () =>
        {
            tapper.enabled = !tapper.enabled;
        });

        var resoSubMenu = new DebugUiSubMenu("Resolution", 100f, 40f, DebugUi.Direction.Down);

        menu.AddSubMenu(resoSubMenu, DebugUi.Direction.Right);
        var text = string.Format("{0}x{1}", Screen.width, Screen.height);

        resoButton = resoSubMenu.AddItem(text, () =>
        {
            var w = Screen.width * 70 / 100;
            var h = Screen.height * 70 / 100;
            if (w < (16 * 9))
            {
                w = 720;
                h = 1280;
            }
            Screen.SetResolution(w, h, false, 60);
            resoButton.text = w.ToString() + "x" + h.ToString();
        });
        resoSubMenu.AddItem("Aspect\n4:3", () =>
        {
            ScreenSettings.Save(1536, 2048, 0, 0, 0, 0);
        });
        resoSubMenu.AddItem("Aspect\n16:9", () =>
        {
            ScreenSettings.Save(1080, 1920, 0, 0, 0, 0);
        });
        resoSubMenu.AddItem("Aspect\niPhoneX", () =>
        {
            ScreenSettings.Save(1242, 2688, 0, 0, 132, 102);
        });
        resoSubMenu.AddItem("Aspect\nDefault", () =>
        {
            ScreenSettings.SaveDefault();
        });

        menu.AddItem(DebugServerUtil.GetLanIpAddress(), () =>
        {
            var url = string.Format("http://{0}:{1}/", DebugServerUtil.GetLanIpAddress(), serverPort);
            Application.OpenURL(url);
        });
//		uiManager.enabled = false; // 初期状態は無効

        server.RegisterRequestCallback("/", OnWebRequestRoot);
        server.RegisterRequestCallback("/api/upload-file", OnWebRequestUploadFile);
        server.RegisterRequestCallback("/api/delete-file", OnWebRequestDeleteFile);
        server.RegisterRequestCallback("/api/delete-all-file", OnWebRequestDeleteAllFile);
        server.RegisterRequestCallback("/api/toggle-debug", OnWebRequestToggleDebug);

        var go = new GameObject("DebugTapper");

        tapper = go.AddComponent <DefaultDebugTapper>();
        tapper.ManualStart(8, tapMark);
        tapper.enabled = false;
    }
Example #12
0
    // Use this for initialization
    void Start()
    {
        if (primitiveRenderer == null)
        {
            primitiveRenderer = new PrimitiveRenderer2D(
                camera,
                textShader,
                texturedShader,
                font);
        }
        debugUiManager = DebugUiManager.Create(gameObject, primitiveRenderer);

        serverManager.debugUiManager = debugUiManager;

        var panel = new DebugUiPanel(manager: debugUiManager)
        {
            LocalX          = 10f,
            LocalY          = 10f,
            BackgroundColor = new Color32(0, 255, 0, 100),
            BorderColor     = new Color32(0, 0, 0, 255)
        };

        var panel2 = new DebugUiPanel(manager: debugUiManager)
        {
            BackgroundColor = new Color32(255, 0, 255, 100),
            BorderColor     = new Color32(0, 0, 0, 255)
        };

        var button = new DebugUiButton(debugUiManager)
        {
            LocalX = 100,
            LocalY = 200,
            Width  = 100,
            Height = 50,
            Text   = "ボタン1"
        };

        panel.AddChildAuto(button);

        var text = new DebugUiText("テキスト1\nテキスト2\nテキスト3", debugUiManager);

        text.Width                    = 300f;
        text.Height                   = 300f;
        text.TextColor                = new Color32(128, 0, 255, 255);
        text.Format.Alignment         = PrimitiveRenderer2D.Alignment.Center;
        text.Format.VerticalAlignment = PrimitiveRenderer2D.VerticalAlignment.Middle;
        panel.AddChildAuto(text);

        button = new DebugUiButton(debugUiManager)
        {
            LocalX = 200,
            LocalY = 200,
            Width  = 150,
            Height = 70,
            Text   = "ボタン\n2"
        };
        panel.AddChildAuto(button);

        panel.AdjustSize();
        panel2.AddChild(panel);
        panel2.AdjustSize();
        debugUiManager.Add(panel2);

        debugUiManager.OutputHierarchy();
    }
Example #13
0
    void Start()
    {
        debugUi = DebugUiManager.Create(
            mainCamera,
            textShader,
            texturedShader,
            font,
            768,
            432,
            1f,
            100);
        debugUi.Add(new FrameTimeGauge(100f, 20f, null), 0f, 0f, DebugUi.AlignX.Right);

        var toggle = new DebugUiToggle("Thread");

        toggle.onChange = on =>
        {
            threadEnabled = on;
        };
        debugUi.Add(toggle, 0f, 20f, DebugUi.AlignX.Right);

        var button = new DebugUiButton("Fire");

        button.onClick = () =>
        {
            Fire();
        };
        debugUi.Add(button, 0f, -50f, DebugUi.AlignX.Right, DebugUi.AlignY.Bottom);

        button         = new DebugUiButton("Fire16");
        button.onClick = () =>
        {
            Fire(16);
        };
        debugUi.Add(button, 0f, 0f, DebugUi.AlignX.Right, DebugUi.AlignY.Bottom);

        random           = new Random32(0);
        cameraController = new CameraController(mainCamera);
        targetOrigin     = target.transform.position;
        beams            = new Beam[64];
        for (int i = 0; i < beams.Length; i++)
        {
            beams[i] = new Beam();
        }
        particles = new Particle[particleCapacity];
        for (int i = 0; i < particles.Length; i++)
        {
            particles[i].position = new Vector3(1000f, 1000f, -1000f);
            particles[i].time     = -float.MaxValue;
        }

        var threadCount = SystemInfo.processorCount;
        var jobCount    = threadCount * 3;

        threadPool        = new ThreadPool(threadCount, jobCount);
        jobs              = new Job[jobCount];
        particleRenderers = new ParticleRenderer[jobCount];
        int rendererCapacity = (particleCapacity + jobCount - 1) / jobCount;

        for (int i = 0; i < jobCount; i++)
        {
            particleRenderers[i] = Instantiate(particleRendererPrefab, gameObject.transform, false);
            particleRenderers[i].Initialize(mainCamera, rendererCapacity);
            jobs[i] = new Job(particles, i, particleRenderers[i]);
        }

        Update();         // 初回
        LateUpdate();
        cameraController.Converge();
    }
Example #14
0
    public SampleWindow(DebugUiManager manager) : base(manager, "SampleWindow")
    {
        frameTimeWatcher = new FrameTimeWatcher();

        var button = new Button("ボタン", 100f)
        {
            OnClick = () =>
            {
                log.Add("ボタンが押された!");
            }
        };

        AddAuto(button);

        var toggleGroup = new ToggleGroup();
        var toggles     = new Toggle[2];

        toggles[0] = new Toggle("トグルA", 100f, 50f, toggleGroup)
        {
            OnChangeToOn = () =>
            {
                log.Add("Aが有効になった");
            }
        };
        AddAuto(toggles[0]);
        toggles[1] = new Toggle("トグルB", 100f, 50f, toggleGroup)
        {
            OnChangeToOn = () =>
            {
                log.Add("Bが有効になった");
            }
        };
        AddAuto(toggles[1]);

        var text = new Text("テキスト", fontSize: 20f, width: 80f, height: 25f);

        AddAuto(text);

        BreakLine();

        log = new LogWindow(
            fontSize: 20f,
            width: 600f,
            height: 220f,
            borderEnabled: true,
            captureUnityLog: true); // Unityのログも出しちゃうよ
        AddAuto(log);

        graph = new Graph(5, 200f, 220f);
        graph.AddSeries(new Color32(255, 64, 64, 255));
        AddAuto(graph);

        BreakLine();

        var frameTimeGauge = new FrameTimeGauge(200f, 30f, frameTimeWatcher);

        AddAuto(frameTimeGauge);

        var slider = new Slider("スライダー", -100f, 100f, 400f);

        slider.OnDragEnd = () =>
        {
            log.Add("スライダーが" + slider.Value + "に変更された");
        };
        AddAuto(slider);

        BreakLine();

        var table = new Table(
            16f,
            new List <float>()
        {
            80f, 80f, 120f
        },
            3,
            20f);

        table.Cells[0, 0] = "列A";
        table.Cells[0, 1] = "列B";
        table.Cells[0, 2] = "列C";
        table.Cells[1, 0] = "データ10";
        table.Cells[1, 1] = "データ11";
        table.Cells[1, 2] = "データ12";
        table.Cells[2, 0] = "データ20";
        table.Cells[2, 1] = "データ21";
        table.Cells[2, 2] = "データ23";
        AddAuto(table);

        FitSize();
    }