Beispiel #1
0
        public void show(DebugConsoleBinding binding)
        {
            destroy();
            onShow?.Invoke(this);
            onShow = null;

            var view = binding.clone();

            Object.DontDestroyOnLoad(view);

            var currentGroupButtons = ImmutableList <ButtonBinding> .Empty;

            setupList(view.commands, () => currentGroupButtons);

            var commandGroups = commands.Select(commandGroup => {
                var button       = addButton(view.buttonPrefab, view.commandGroups.holder.transform);
                button.text.text = commandGroup.Key;
                button.button.onClick.AddListener(() =>
                                                  currentGroupButtons = showGroup(view, commandGroup.Key, commandGroup.Value)
                                                  );
                return(button);
            }).ToImmutableList();

            setupList(view.commandGroups, () => commandGroups);

            Application.logMessageReceivedThreaded += onLogMessageReceived;
            view.closeButton.onClick.AddListener(destroy);

            current = new Instance(view).some();
        }
Beispiel #2
0
        public void show(DebugConsoleBinding binding)
        {
            destroy();
            onShow?.Invoke(this);
            onShow = null;

            var view = binding.clone();

            Object.DontDestroyOnLoad(view);

            var currentGroupButtons = ImmutableList <ButtonBinding> .Empty;

            setupList(view.commands, () => currentGroupButtons);

            var commandGroups = commands.OrderBy(_ => _.Key).Select(commandGroup => {
                var button       = addButton(view.buttonPrefab, view.commandGroups.holder.transform);
                button.text.text = commandGroup.Key;
                button.button.onClick.AddListener(() =>
                                                  currentGroupButtons = showGroup(view, commandGroup.Key, commandGroup.Value)
                                                  );
                return(button);
            }).ToImmutableList();

            setupList(view.commandGroups, () => commandGroups);

            var logEntryPool = GameObjectPool.a(GameObjectPool.Init <VerticalLayoutLogEntry> .noReparenting(
                                                    nameof(DConsole) + " log entry pool",
                                                    () => view.logEntry.prefab.clone()
                                                    ));

            var cache  = new List <string>();
            var layout = new DynamicVerticalLayout.Init(
                view.dynamicLayout,
                // ReSharper disable once InconsistentlySynchronizedField
                logEntries
                .SelectMany(e => createEntries(e, logEntryPool, cache, view.lineWidth))
                .Select(_ => _.upcast(default(DynamicVerticalLayout.IElementData))),
                renderLatestItemsFirst: true
                );

            var logCallback = onLogMessageReceived(logEntryPool, cache);

            Application.logMessageReceivedThreaded += logCallback;

            view.closeButton.onClick.AddListener(destroy);
            var editorShortcut = instance.editorShortcutObs.filter(_ => instance.current.isSome);

            view.minimizeButton.onClick.join(editorShortcut).subscribe(view.gameObject, _ =>
                                                                       view.minimizableObjectsContainer.SetActive(
                                                                           !view.minimizableObjectsContainer.activeSelf
                                                                           )
                                                                       );

            current = new Instance(view, layout, logCallback, logEntryPool).some();
        }
Beispiel #3
0
        public void show(DebugConsoleBinding binding)
        {
            destroy();

            var view = binding.clone();

            Object.DontDestroyOnLoad(view);
            foreach (var commandGroup in commands)
            {
                var button = addButton(view.buttonPrefab, view.commandGroupsHolder.transform);
                button.text.text = commandGroup.Key;
                button.button.onClick.AddListener(() => showGroup(view, commandGroup.Key, commandGroup.Value));
            }

            Application.logMessageReceived += onLogMessageReceived;
            view.closeButton.onClick.AddListener(destroy);

            current = new Instance(view).some();
        }