Ejemplo n.º 1
0
        private void MainMenuBar_MouseEnter(object sender, MouseEventArgs e)
        {
            DoubleAnimation anim = new DoubleAnimation(35d, new Duration(TimeSpan.FromSeconds(0.2d)));

            anim.EasingFunction = new ExponentialEase();
            MainMenuBar.BeginAnimation(HeightProperty, anim);
        }
Ejemplo n.º 2
0
        private void MainMenuBar_MouseLeave(object sender, MouseEventArgs e)
        {
            DoubleAnimation anim = new DoubleAnimation(0d, new Duration(TimeSpan.FromSeconds(0.2d)));

            anim.EasingFunction = new ExponentialEase();

            if (MainMenuBar.Height == 35d)
            {
                Thread.Sleep(TimeSpan.FromSeconds(0.5d));
            }
            MainMenuBar.BeginAnimation(HeightProperty, anim);
        }
Ejemplo n.º 3
0
        // --------------

        public MainWindow() : base(WINDOW_WIDTH, WINDOW_HEIGHT, GraphicsMode.Default, WINDOW_TITLE,
                                   GameWindowFlags.Default, DisplayDevice.Default, GL_MAJOR_VERSION, GL_MINOR_VERSION,
                                   GraphicsContextFlags.Default)
        {
            Instance = this;

            Icon = new Icon(typeof(MainWindow), "appicon.ico");

            GL.Enable(EnableCap.DepthTest);
            GL.Enable(EnableCap.CullFace);

            _cam = new Camera();
            _cam.Transform.Translate(new Vector3(0, 0, -3));
            _fbo = new Framebuffer(WINDOW_WIDTH, WINDOW_HEIGHT, FramebufferTarget.Framebuffer);

            _proj = Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(60f),
                                                         (float)_fbo.Width / _fbo.Height, 0.1f, 100f);

            ImGuiRenderer.Init();
            _guiComponents = new List <ImGuiComponent>();

            _updateAvailableModal = new Modal("New update available!",
                                              "Download at https://github.com/Figglewatts/LSDView/releases/latest");

            createControllers();

            ApplicationArea area = new ApplicationArea();

            TreeView <TreeNode> outlineView = new TreeView <TreeNode>();

            _treeController.SetTree(outlineView);

            area.AddChild(new Columns(2, new List <ImGuiComponent>
            {
                outlineView, new FramebufferArea(_fbo)
            }, new[] { 250f, -1 }));

            var menuBar = new MainMenuBar(_fileOpenController, _vramController, _configController, _cameraController);

            _guiComponents.Add(area);
            _guiComponents.Add(menuBar);
            _guiComponents.Add(_exportFileDialog);
            _guiComponents.Add(_updateAvailableModal);
        }
Ejemplo n.º 4
0
    protected override void OnLoad(EventArgs eventArgs)
    {
        base.OnLoad(eventArgs);

        GL.ClearColor(Color4.DimGray);
        GL.DebugMessageCallback(OnDebugMessage, IntPtr.Zero);

        GL.Enable(EnableCap.Blend);
        GL.Enable(EnableCap.DepthTest);
        GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);

        Time.Init();
        ShaderProgram.Init();
        Gizmos.Init();

        Audio.Init();
        MusicPlayer.Init("Content\\Music\\Songs");

        ImGuiOpenTK.Init(this);

        //ImGuiOpenTK.drawGui += new ResizableWindow().DrawGui;

        Editor.Init();
        MainMenuBar.Init();

        m_Canvas = new Canvas(this);

        m_Texture =
            new Texture(
                "Content\\Pictures\\basketball.jpg", TextureMinFilter.Nearest, TextureMagFilter.Nearest);

        var duane =
            new Animation(
                TextureMinFilter.Nearest,
                TextureMagFilter.Nearest,
                "Content\\Pictures\\Duane.gif");

        duane.BufferData();

        var sheGotTheMoves =
            new Animation(
                TextureMinFilter.Nearest,
                TextureMagFilter.Nearest,
                "Content\\Pictures\\SheGotTheMoves.gif");

        sheGotTheMoves.BufferData();

        //var dancing = new Image(m_Canvas, duane, null, sheGotTheMoves);
        //dancing.transform.position =
        //    new Vector3(dancing.transform.localScale.X /2f, dancing.transform.localScale.Y / 2f, 0f);

        var playTexture =
            new Texture(
                "Content\\Pictures\\MediaPlayer\\Play.png",
                TextureMinFilter.Linear, TextureMagFilter.Linear);
        var nextTexture =
            new Texture(
                "Content\\Pictures\\MediaPlayer\\Next.png",
                TextureMinFilter.Linear, TextureMagFilter.Linear);
        var previousTexture =
            new Texture(
                "Content\\Pictures\\MediaPlayer\\Previous.png",
                TextureMinFilter.Linear, TextureMagFilter.Linear);

        var play =
            new Button(
                m_Canvas,
                () => MusicPlayer.TogglePause(), playTexture, null, null);

        play.transform.localScale = new Vector3(50f, 50f, 1f);
        play.transform.position   =
            new Vector3(Width / 2f, -10f + Height - play.transform.localScale.Y / 2f, 0f);

        var next =
            new Button(
                m_Canvas,
                () => MusicPlayer.NextTrack(), nextTexture, null, null);

        next.transform.localScale = new Vector3(50f, 50f, 1f);
        next.transform.position   =
            new Vector3(
                play.transform.position.X + 100f, -10f + Height - next.transform.localScale.Y / 2f, 0f);

        var previous =
            new Button(
                m_Canvas,
                () => MusicPlayer.PreviousTrack(), previousTexture, null, null);

        previous.transform.localScale = new Vector3(50f, 50f, 1f);
        previous.transform.position   =
            new Vector3(
                play.transform.position.X - 100f, -10f + Height - previous.transform.localScale.Y / 2f, 0f);

        ShaderProgram.texture.Use();
        var location = ShaderProgram.texture.GetUniformLocation("lightDirection");

        GL.Uniform3(location, 1f, 0.5f, 0f);

        var mesh = Sphere.GetMesh();

        m_Sun = new GameObject("Sun");

        var sunMeshFilter = m_Sun.AddComponent <MeshFilter <Vertex> >();

        sunMeshFilter.mesh = mesh;

        var sunMeshRenderer = m_Sun.AddComponent <MeshRenderer <Vertex> >();

        sunMeshRenderer.shader         = ShaderProgram.texture;
        sunMeshRenderer.diffuseTexture = m_Texture;

        sunMeshRenderer.Bind();
        sunMeshRenderer.BufferData();
        sunMeshRenderer.UnBind();

        m_MeshRenderers.Add(sunMeshRenderer);

        m_Earth = new GameObject("Earth");

        var earthMeshFilter = m_Earth.AddComponent <MeshFilter <Vertex> >();

        earthMeshFilter.mesh = mesh;

        var earthMeshRenderer = m_Earth.AddComponent <MeshRenderer <Vertex> >();

        earthMeshRenderer.shader         = ShaderProgram.texture;
        earthMeshRenderer.diffuseTexture = duane;

        earthMeshRenderer.Bind();
        earthMeshRenderer.BufferData();
        earthMeshRenderer.UnBind();

        m_Earth.transform.SetParent(m_Sun.transform);

        m_Earth.transform.Translate(new Vector3(1.5f, 0f, 0f));

        m_MeshRenderers.Add(earthMeshRenderer);

        m_Moon = new GameObject("Moon");

        var moonMeshFilter = m_Moon.AddComponent <MeshFilter <Vertex> >();

        moonMeshFilter.mesh = mesh;

        var moonMeshRenderer = m_Moon.AddComponent <MeshRenderer <Vertex> >();

        moonMeshRenderer.shader         = ShaderProgram.texture;
        moonMeshRenderer.diffuseTexture = sheGotTheMoves;

        moonMeshRenderer.Bind();
        moonMeshRenderer.BufferData();
        moonMeshRenderer.UnBind();

        m_Moon.transform.Translate(new Vector3(1.5f, 0f, 0f));
        m_Moon.transform.Scale(new Vector3(0.5f, 0.5f, 0.5f));
        m_Moon.transform.SetParent(m_Earth.transform);

        m_MeshRenderers.Add(moonMeshRenderer);

        m_Camera = new StaticCamera();
        m_Camera.SetLookAt(new Vector3(0f, 5f, 10f), Vector3.Zero, new Vector3(0f, 1f, 0f));
        m_Camera.SetPerspective(MathHelper.PiOver4, Width / (float)Height, 0.1f, 75f);

        var camera = m_MainCamera.AddComponent <BroEngine.Camera>();

        camera.SetLookAt(new Vector3(0f, 5f, 10f), Vector3.Zero, new Vector3(0f, 1f, 0f));
        m_MainCamera.tag = "Main Camera";

        Editor.selectedObject = m_MainCamera;

        RenderFrame += OnRenderFrameEvent;
    }
Ejemplo n.º 5
0
        // --------------

        public GuiApplication(ILifetimeScope scope) : base(WINDOW_WIDTH, WINDOW_HEIGHT, GraphicsMode.Default,
                                                           WINDOW_TITLE,
                                                           GameWindowFlags.Default, DisplayDevice.Default, GL_MAJOR_VERSION, GL_MINOR_VERSION,
                                                           GraphicsContextFlags.Default)
        {
            Instance = this;

            createControllers(scope);

            Icon = new Icon(typeof(GuiApplication), "appicon.ico");

            GL.Enable(EnableCap.DepthTest);
            GL.Enable(EnableCap.CullFace);

            _cam = new Camera();
            _cameraController.ProvideCamera(_cam);
            _cam.Transform.Translate(new Vector3(0, 0, -3));
            _fbo = new Framebuffer(WINDOW_WIDTH, WINDOW_HEIGHT, FramebufferTarget.Framebuffer);

            _proj = Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(60f),
                                                         (float)_fbo.Width / _fbo.Height, 0.1f, 100f);

            ImGuiRenderer.Init();

            _guiComponents = new List <ImGuiComponent>();

            ApplicationArea area = new ApplicationArea();

            TreeView <TreeNode> outlineView = new TreeView <TreeNode>();

            _treeController.SetTree(outlineView);

            area.AddChild(new Columns(2, new List <ImGuiComponent>
            {
                outlineView, new FramebufferArea(_fbo)
            }, new[] { 250f, -1 }));

            var menuBar = new MainMenuBar(_fileOpenController, _vramController, _configController, _cameraController,
                                          _exportController);

            if (string.IsNullOrWhiteSpace(_configController.Config.GameDataPath))
            {
                // show the set game data path dialog if it hasn't yet been set
                menuBar.OpenSetGameDataPath();
            }

            _updateAvailableModal = new Modal("New update available!",
                                              "Download at https://github.com/Figglewatts/LSDView/releases/latest");

            _fileExportDialog = new FileDialog(_configController.Config.GameDataPath, FileDialog.DialogType.Save);
            _configController.Config.OnGameDataPathChange += () =>
                                                             _fileExportDialog.InitialDir = _configController.Config.GameDataPath;
            _exportController.ProvideFileExportDialog(_fileExportDialog);

            _guiComponents.Add(area);
            _guiComponents.Add(menuBar);
            _guiComponents.Add(_fileExportDialog);
            _guiComponents.Add(_updateAvailableModal);

            if (_updateCheckerController.IsUpdateAvailable())
            {
                _updateAvailableModal.ShowModal();
            }
        }