Example #1
0
        static void Main()
        {
            bool initialized = false;
            bool resize = false;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            DXConfig = new DXConfigClass("");
            Renderer = new DXRendererClass(DXConfig);

            form = new ArbaroMainForm();
            form.Width = DXConfig.FormDefaultWidth;
            form.Height = DXConfig.FormDefaultHeight;

            // Setup handler on resize form
            (form.renderCtrl as Control).Resize += (sender, args) =>
            {
                resize = true;
            };

            DXShaderManager = new DXShadersManager();

            CS_PreciseTimer preciseTimer = new CS_PreciseTimer(10);
            DateTime tStart = preciseTimer.Now;

            RenderLoop.Run(form, () =>
            {
                if (!initialized)
                {
                    Rectangle r = form.renderCtrl.ClientRectangle;
                    Renderer.Initialize(r.Width, r.Height, form.renderCtrl.Handle, form, DXConfig);
                    initialized = true;
                    form.RendererInitialized();
                }
                if (resize)
                {
                    resize = false;
                    Rectangle r = form.renderCtrl.ClientRectangle;
                    Renderer.Resize(r.Width, r.Height, DXConfig);
                }

                DateTime tEnd = preciseTimer.Now;
                float elapsed = (float)(tEnd.Subtract(tStart)).TotalMilliseconds;
                tStart = tEnd;

                Renderer.Frame();
            });

            Renderer.Dispose();
        }
Example #2
0
        private void MakeTreeFromParams(string filename, bool paramExists = false)
        {
            if (!paramExists)
            {
                csParams = new CS_Params();
                csParams.prepare(13);

                ResetMenuItems();

                if (filename != "")
                {
                    Text = "Arbaro C# V0.1 - " + Path.GetFileName(mainOpenFileDialog.FileName);
                    csParams.readFromXML(mainOpenFileDialog.FileName);
                }
                else
                    Text = "Arbaro C# V0.1";

                // refresh params GUI
                pgv = new CS_ParamGroupsView(treeView1);
                pvt = new CS_ParamValueTable(paramTablePanel, paramExplanationPanel, csParams);
                pev = new CS_ParamExplanationView(paramExplanationPanel, paramTablePanel, csParams);

                csParams.enableDisable();
                csParams.OnParamChanged += csParams_OnParamChanged;
            }

            CS_PreciseTimer t0 = new CS_PreciseTimer(10);
            DateTime tStart = t0.Now;
            CS_TreeGenerator treeGenerator = CS_TreeGeneratorFactory.createShieldedTreeGenerator(csParams);
            tree = treeGenerator.makeTree(new Object());
            DateTime tEnd = t0.Now;

            // make 3D Tree
            if (Program.Renderer.RenderableList.ContainsKey("Skeleton"))
            {
                DXRenderable s = Program.Renderer.RenderableList["Skeleton"];
                Program.Renderer.RenderableList.Remove("Skeleton");
                s.Dispose();
            }
            DXTreeSkeleton sk = new DXTreeSkeleton(tree, csParams);
            sk.Visible = false;
            Program.Renderer.RenderableList.Add("Skeleton", sk);
            if (skeletonToolStripMenuItem.Checked) sk.Visible = true;
            else sk.Visible = false;

            if (Program.Renderer.RenderableList.ContainsKey("TreeMesh"))
            {
                DXRenderable s = Program.Renderer.RenderableList["TreeMesh"];
                Program.Renderer.RenderableList.Remove("TreeMesh");
                s.Dispose();
            }

            //DXTreeMesh me = new DXTreeMesh(tree, csParams);
            //Program.Renderer.RenderableList.Add("TreeMesh", me);
            DXArbaroTreeMesh me = new DXArbaroTreeMesh(tree, csParams);
            Program.Renderer.RenderableList.Add("TreeMesh", me);

            if (solidWireframeToolStripMenuItem.Checked) me.Visible = true;
            else me.Visible = false;

            // only reset the view when a new tree is loaded
            if (!paramExists)
            {
                Program.Renderer.CameraControler.LookAt(me.BBox);
            }

            float elapsed = (float)(tEnd.Subtract(tStart)).TotalMilliseconds;
            Console.WriteLine(elapsed);
        }