예제 #1
0
        public CWorkspace()
        {
            CKlaxScriptRegistry registry = CKlaxScriptRegistry.Instance;

            Instance      = this;
            UndoRedoModel = new CUndoRedoModel();

            Tools.Add(new CViewportViewModel());
            Tools.Add(new CConsoleViewModel());
            Tools.Add(new CWorldOutlinerViewModel());
            Tools.Add(new CInspectorViewModel());
            Tools.Add(new MaterialEditorViewModel());
            Tools.Add(new CAssetPreviewerViewModel());
            Tools.Add(new CAssetBrowserViewModel());
            Tools.Add(new CEntityBuilderViewModel());
            Tools.Add(new CEntityBuilderInspectorViewModel());
            Tools.Add(new CNodeGraphViewModel());
            Tools.Add(new CInterfaceEditorViewmodel());

            foreach (var tool in Tools)
            {
                tool.PostToolInit();
            }

            InitCommands();
            InitUndoRedo();
        }
예제 #2
0
        internal void CreateEngineAndShow()
        {
            RenderFormSurface surface = new RenderFormSurface(this);
            CLogger           logger  = new CLogger("game.log", true, true, true);

            CInitializer initializer = new CInitializer();

            initializer.Add("Viewport");
            initializer.Add <IRenderSurface>(surface);
            initializer.Add(logger);
            CEngine.Create(initializer, true);

            CKlaxScriptRegistry dummy = CKlaxScriptRegistry.Instance;

            Input.SetReferenceHWND(Handle);
            Input.CursorVisibilitySetter = (arg) =>
            {
                if (arg)
                {
                    Cursor.Show();
                }
                else
                {
                    Cursor.Hide();
                }
            };

            Width  = WindowWidth;
            Height = WindowHeight;

            CEngine.Instance.Dispatch(EEngineUpdatePriority.BeginFrame, () => { CEngine.Instance.LoadWorld(null, WorldLoadedCallback); });

            Point size = new Point(ClientSize.Width, ClientSize.Height);

            System.Drawing.Point topLeft = PointToScreen(new System.Drawing.Point(0, 0));
            IntPtr    handlePtr          = Handle;
            CRenderer renderer           = CRenderer.Instance;

            CEngine.Instance.Dispatch(EEngineUpdatePriority.BeginFrame, () =>
            {
                renderer.Resize(size.X, size.Y, topLeft.X, topLeft.Y, handlePtr);
                CEngine.Instance.CurrentWorld.StartPlayMode();
            });
        }