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); }
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); }
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(); }); }
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); }; }
public DebugUiControl(DebugUiManager manager = null) { // スレッドセーフじゃなくてよさそうなのでInterlocked.Incrementは使わない id = instanceCount++; if (manager != null) { this.manager = manager; manager.OnCreate(this); } Enabled = true; }
void Start() { _renderer = new DebugPrimitiveRenderer2D( _textShader, _texturedShader, _font, _camera, capacity: 8192); _debugUi = DebugUiManager.Create( _gameObjectForDebugUiManager, _renderer); _sampleWindow = new SampleWindow(_debugUi); _debugUi.Add(_sampleWindow); }
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, }; }
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; }
public virtual void Dispose() { if (manager != null) { manager.OnDispose(this); manager = null; } RemoveAllChildren(); parent = null; prevSibling = null; nextSibling = null; firstChild = null; lastChild = null; }
public DebugUiColoredControl(DebugUiManager manager = null) : base(manager) { }
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; }
// 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(); }
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(); }
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(); }