示例#1
0
        public static void DrawRotatingObject <TPipeline, TCamera>(TPipeline pipeline, RenderEntity[] entitiesApply, TCamera camera, CharRenderBuffer <float> charBuffer) where TPipeline : IPipeline where TCamera : ICamera
        {
            float framerate     = 60f;
            float time          = 6f;
            int   totalFrame    = (int)(framerate * time);
            float angleStep     = JMath.PI_TWO / totalFrame;
            int   frameInterval = (int)(1000f / framerate);
            int   elapsed;

            JTimer timer = new JTimer();

            timer.Start();
            for (int i = 0; i < totalFrame; i++)
            {
                CRenderer.UpdateRenderInfo();
                pipeline.Draw(entitiesApply, camera);
                entitiesApply[0].Transform.Rotation.X += angleStep;
                entitiesApply[0].Transform.Rotation.Z += angleStep;

                elapsed = (int)timer.DeltaMS;
                if (elapsed < frameInterval)
                {
                    Thread.Sleep(frameInterval - elapsed);
                }
                CRenderer.Render(charBuffer);
            }
            timer.Stop();
        }
示例#2
0
        public static unsafe void TestRasterize()
        {
            Rasterizer.StartRasterize(CRenderSettings.ResolutionF);
            RenderBuffer <float>     tex0    = new RenderBuffer <float>(CRenderSettings.Resolution, 3);
            CharRenderBuffer <float> texChar = new CharRenderBuffer <float>(tex0);
            Vector2 *points = stackalloc Vector2[4];

            for (float i = 0; i < JMath.PI_TWO; i += .02f)
            {
                Vector2 dir      = new Vector2(MathF.Cos(i) * .3f, MathF.Sin(i) * .3f);
                Vector2 orthoDir = new Vector2(-dir.Y, dir.X);
                points[0] = new Vector2(.5f, .5f) + dir;
                points[1] = new Vector2(.5f, .5f) - dir;
                points[2] = new Vector2(.5f, .5f) + orthoDir;
                points[3] = new Vector2(.5f, .5f) - orthoDir;
                LinePrimitive *line = stackalloc LinePrimitive[1] {
                    new LinePrimitive(points, null, 0)
                };
                Rasterizer.Rasterize <Line, LinePrimitive>(line);
                tex0.WritePixel(Rasterizer.ContriveResult(), new GenericVector <float>(3)
                {
                    1f, 1f, 1f
                });
                CRenderer.Render(texChar);
                tex0.Clear();
                Thread.Sleep(16);
            }

            Rasterizer.EndRasterize();
        }
示例#3
0
        public static void TestRenderFrames()
        {
            RenderBuffer <float>     buffer     = new RenderBuffer <float>(CRenderSettings.RenderWidth, CRenderSettings.RenderHeight, 3);
            CharRenderBuffer <float> charBuffer = new CharRenderBuffer <float>(buffer);

            float framerate             = 25f;
            float time                  = 10f;
            int   totalFrame            = (int)(framerate * time);
            int   frameInterval         = (int)(1000f / framerate);
            GenericVector <float> white = new GenericVector <float>(3)
            {
                1, 1, 1
            };
            GenericVector <float> black = new GenericVector <float>(3)
            {
                0, 0, 0
            };
            int lastU = 0;
            int step  = totalFrame / buffer.Width + 1;

            for (int i = 0; i < totalFrame; i++)
            {
                if (i / step > lastU)
                {
                    buffer.WritePixel(lastU, 0, black);
                    buffer.WritePixel(++lastU, 0, white);
                }
                Thread.Sleep(frameInterval);
                CRenderer.Render(charBuffer);
            }
        }
        protected void OnSizeChanged(int newWidth, int newHeight)
        {
            if (PresentationSource.FromVisual(this) != null)
            {
                Point upperLeft = PointToScreen(new Point(0, 0));

                CRenderer renderer = CRenderer.Instance;
                renderer.Dispatch(ERendererDispatcherPriority.BeginFrame, () => renderer.Resize(newWidth, newHeight, (int)upperLeft.X, (int)upperLeft.Y, Hwnd));
                CEngine.Instance.Dispatch(EEngineUpdatePriority.BeginFrame, () => { World?.ViewManager.ResizeView(newWidth, newHeight, (float)upperLeft.X, (float)upperLeft.Y); });
            }
        }
示例#5
0
 protected override void OnResizeEnd(EventArgs e)
 {
     if (engineWorld != null)
     {
         System.Drawing.Point topLeft  = PointToScreen(new System.Drawing.Point(0, 0));
         CRenderer            renderer = CRenderer.Instance;
         IntPtr handlePtr = Handle;
         renderer.Dispatch(ERendererDispatcherPriority.BeginFrame, () => renderer.Resize(ClientSize.Width, ClientSize.Height, topLeft.X, topLeft.Y, handlePtr));
         CEngine.Instance.Dispatch(EEngineUpdatePriority.BeginFrame, () => { engineWorld.ViewManager.ResizeView(ClientSize.Width, ClientSize.Height, topLeft.X, topLeft.Y); });
     }
     base.OnResizeEnd(e);
 }
示例#6
0
        public bool Render(
            Configuration config,
            TextWriter writer,
            AST <Node> ast,
            out List <Flag> flags)
        {
            Cnst settingValue;
            bool useLineDir = false;

            if (config.TryGetSetting(CollectionName, InstanceName, LineDirectivesSetting, out settingValue))
            {
                if (settingValue.CnstKind == CnstKind.String)
                {
                    if (settingValue.GetStringValue() == "TRUE")
                    {
                        useLineDir = true;
                    }
                    else if (settingValue.GetStringValue() != "FALSE")
                    {
                        flags = new List <Flag>();
                        var flag = new Flag(
                            SeverityKind.Error,
                            settingValue,
                            Constants.BadSetting.ToString(
                                SyntaxKindSetting,
                                settingValue.GetStringValue(),
                                string.Format("Expected setting {0} to be TRUE or FALSE", LineDirectivesSetting)),
                            Constants.BadSetting.Code);
                        flags.Add(flag);
                        return(false);
                    }
                }
                else
                {
                    flags = new List <Flag>();
                    var flag = new Flag(
                        SeverityKind.Error,
                        settingValue,
                        Constants.BadSetting.ToString(
                            SyntaxKindSetting,
                            settingValue.GetNumericValue(),
                            string.Format("Expected setting {0} to be TRUE or FALSE", LineDirectivesSetting)),
                        Constants.BadSetting.Code);
                    flags.Add(flag);
                    return(false);
                }
            }

            var cwriter = new CTextWriter(writer, useLineDir);

            return(CRenderer.Render(ast, cwriter, out flags));
        }
        public ControlClusters()
        {
            InitializeComponent();

            IsInitializeComplete = false;


            GenDPList();

            _renderer = new CRenderer(this, _drwVis);
            _alarmer  = CKernelTerminal.GetKernelTerminalInstance().Alarmer;

            if (_typeFaceDefault == null)
            {
                _typeFaceDefault = new Typeface(_fontFamilyDefault, FontStyles.Normal, _fontWeightDefault, new FontStretch());
            }
            _penClusterTotal = new Pen(Brushes.LightGray, 1.0);
            //KAA removed 2016-May-31
            // StringHeight = 13;
            _lstImageSegments.Add(Image_0);
            _lstImageSegments.Add(Image_1);
            _lstImageSegments.Add(Image_2);
            _lstImageSegments.Add(Image_3);
            _lstImageSegments.Add(Image_4);
            _lstImageSegments.Add(Image_5);
            _lstImageSegments.Add(Image_6);
            _lstImageSegments.Add(Image_7);
            _lstImageSegments.Add(Image_8);
            _lstImageSegments.Add(Image_9);

            ScrollViewerClusters.ScrollToRightEnd();

            for (int i = 0; i < _lstImageSegments.Count; i++)
            {
                RenderOptions.SetBitmapScalingMode(_lstImageSegments[i], BitmapScalingMode.NearestNeighbor);
                TextOptions.SetTextRenderingMode(_lstImageSegments[i], TextRenderingMode.ClearType);
                TextOptions.SetTextFormattingMode(_lstImageSegments[i], TextFormattingMode.Display);
            }
            RenderOptions.SetEdgeMode(this, EdgeMode.Aliased);



            //  CUtil.TaskStart(TaskTriggerPaint);
            CUtil.ThreadStart(ThreadDrawClusters);


            SizeChanged += ControlClusters_SizeChanged;

            GridCanvasControlClusters.MouseEnter += GridCanvasControlClusters_MouseEnter;

            _guiDispatcher = Dispatcher.CurrentDispatcher;
        }
示例#8
0
        private void ShowWorld(CWorld world)
        {
            engineWorld = world;

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

            renderer.Dispatch(ERendererDispatcherPriority.BeginFrame, () => renderer.Resize(ClientSize.Width, ClientSize.Height, topLeft.X, topLeft.Y, handlePtr));
            CEngine.Instance.Dispatch(EEngineUpdatePriority.BeginFrame, () => { engineWorld.ViewManager.ResizeView(ClientSize.Width, ClientSize.Height, topLeft.X, topLeft.Y); });

            Show();
        }
示例#9
0
        private static void DrawRotatingObject(IPipeline pipeline, RenderEntity[] entitiesApply, ICamera camera, CharRenderBuffer <float> charBuffer)
        {
            float framerate     = 25f;
            float time          = 10f;
            int   totalFrame    = (int)(framerate * time);
            float angleStep     = JMath.PI_TWO / totalFrame;
            int   frameInterval = (int)(1000f / framerate);

            for (int i = 0; i < totalFrame; i++)
            {
                pipeline.Draw(entitiesApply, camera);
                CRenderer.Render(charBuffer);
                entitiesApply[0].Transform.Rotation.X += angleStep;
                entitiesApply[0].Transform.Rotation.Z += angleStep;
                Thread.Sleep(frameInterval);
            }
        }
示例#10
0
        public static void TestDrawBuffer()
        {
            RenderBuffer <float>     buffer     = new RenderBuffer <float>(CRenderSettings.RenderWidth, CRenderSettings.RenderHeight, channelCount: 3);
            CharRenderBuffer <float> charBuffer = new CharRenderBuffer <float>(buffer);

            GenericVector <float> white = new GenericVector <float>(3)
            {
                1, 1, 1
            };

            buffer.WritePixel(0, 0, white);
            buffer.WritePixel(8, 2, white);
            buffer.WritePixel(16, 4, white);
            buffer.WritePixel(24, 6, white);
            buffer.WritePixel(32, 8, white);
            CRenderer.Render(charBuffer);
        }
示例#11
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();
            });
        }
示例#12
0
        public static void TestDrawColor()
        {
            RenderBuffer <float>     buffer     = new RenderBuffer <float>(CRenderSettings.RenderWidth, CRenderSettings.RenderHeight, channelCount: 3);
            CharRenderBuffer <float> charBuffer = new CharRenderBuffer <float>(buffer);

            GenericVector <float> color = new GenericVector <float>(3)
            {
                0, 0, 0
            };

            for (int i = 0; i < buffer.Width; i++)
            {
                for (int j = 0; j < buffer.Height; j++)
                {
                    buffer.WritePixel(i, j, color);
                }
                color.Write((float)i / buffer.Width);
            }
            CRenderer.Render(charBuffer);
        }
示例#13
0
        static void Main(string[] args)
        {
            Chroma.Instance.Keyboard.SetAll(Color.Black);
            Console.WriteLine("");
            Console.ForegroundColor = ConsoleColor.Cyan;
            VAMemory mem = new VAMemory("starwarsbattlefront");

            ColorManager.CRenderer CR = new CRenderer();

            for (;;)
            {
                Int64 pGameContext     = mem.ReadInt64((IntPtr)(0x142AE8080));
                Int64 pPlayerManager   = mem.ReadInt64((IntPtr)(pGameContext + 0x68));
                Int64 pLocalPlayer     = mem.ReadInt64((IntPtr)(pPlayerManager + 0x550));
                Int64 pLocalSoldier    = mem.ReadInt64((IntPtr)(pLocalPlayer + 0x2cb8));
                Int64 pHealthComponent = mem.ReadInt64((IntPtr)(pLocalSoldier + 0x198));
                float pHealth          = mem.ReadFloat((IntPtr)(pHealthComponent + 0x20));
                float pHealthMax       = mem.ReadFloat((IntPtr)(pHealthComponent + 0x24));
                int   health           = (int)((pHealth / pHealthMax) * 100);



                Int64 pAimer   = mem.ReadInt64((IntPtr)(pLocalSoldier + 0x5e0));
                Int64 pWeap    = mem.ReadInt64((IntPtr)(pAimer + 0x1b8));
                Int64 pPrimary = mem.ReadInt64((IntPtr)(pWeap + 0x5130));
                float Heat     = mem.ReadFloat((IntPtr)(pPrimary + 0x1c8));
                int   heat     = (int)(100 - (Heat * 100));
                // Console.WriteLine(heat);
                CR.DrawHeat(health, true);
                //  Console.WriteLine(pHealthMax);

                /*if (GetAsyncKeyState(Keys.Up)) health += 5;
                 * if (GetAsyncKeyState(Keys.Down)) health -= 5;
                 * if (health > 100) health = 100;
                 * if (health < 0) health = 0;*/
                CR.DrawHealth(heat, true);
                Thread.Sleep(100);
            }
        }
示例#14
0
        private void glControl1_Load(object sender, EventArgs e)
        {
            glControl1_Resize(sender, e);

            //Create a Camera
            pCamera = new ICamera(new Vector4(-1f, 1f, -1f, 1f), -Vector3.UnitY);
            pCamera.SetProjectionPerspective(
                glControl1.ClientSize.Width / glControl1.ClientSize.Height, //Aspect
                75,                                                         //FOV
                0.1f, 1024.0f);                                             //Near, Far

            //Set up the Renderer.
            pRenderer = new CRenderer(pCamera);
            pRenderer.SetClearColour(0.0f, 0.0f, 0.4f, 1.0f);

            //Set up a timer
            T          = new Timer();
            T.Interval = 1000 / 50;
            T.Tick    += new EventHandler(glUpdate);
            T.Start();

            dLastTime = Environment.TickCount;
        }
示例#15
0
        public static void TestDrawLine()
        {
            PipelineBase <AppdataBasic, V2FBasic> pipeline = new PipelineBase <AppdataBasic, V2FBasic>();
            CharRenderBuffer <float> charBuffer            = new CharRenderBuffer <float>(pipeline.RenderTarget);

            RenderEntity entity = new RenderEntity(new Transform(Vector3.Zero),
                                                   new Model(
                                                       vertices: new Vector3[] { new Vector3(-.5f, .5f, -.5f), new Vector3(-.5f, -.5f, -.5f), new Vector3(.5f, -.5f, -.5f), new Vector3(.5f, .5f, -.5f),
                                                                                 new Vector3(-.5f, .5f, .5f), new Vector3(-.5f, -.5f, .5f), new Vector3(.5f, -.5f, .5f), new Vector3(.5f, .5f, .5f) },
                                                       primitives: new IPrimitive[] { new LinePrimitive(0, 1), new LinePrimitive(1, 2), new LinePrimitive(2, 3), new LinePrimitive(3, 0),
                                                                                      new LinePrimitive(4, 5), new LinePrimitive(5, 6), new LinePrimitive(6, 7), new LinePrimitive(7, 4),
                                                                                      new LinePrimitive(0, 4), new LinePrimitive(1, 5), new LinePrimitive(2, 6), new LinePrimitive(3, 7) },
                                                       uvs: null,
                                                       normals: null
                                                       ), null);
            ICamera camera = new Camera_Orthographic(width: 3.5f, height: 3.5f, near: -2.5f, far: 2.5f,
                                                     new Transform(
                                                         pos: Vector3.Zero,
                                                         rotation: new Vector3(0, JMath.PI_HALF * .35f, -JMath.PI_HALF * 1.5f)));

            RenderEntity[] entitiesApply = new RenderEntity[] { entity };

            float framerate     = 25f;
            float time          = 10f;
            int   totalFrame    = (int)(framerate * time);
            float angleStep     = JMath.PI_TWO / totalFrame;
            int   frameInterval = (int)(1000f / framerate);

            for (int i = 0; i < totalFrame; i++)
            {
                pipeline.Draw(entitiesApply, camera);
                CRenderer.Render(charBuffer);
                entity.Transform.Rotation.X += angleStep;
                entity.Transform.Rotation.Z += angleStep;
                Thread.Sleep(frameInterval);
            }
        }
示例#16
0
        private static bool IsNamedType(Node n, out string tag, out string typename)
        {
            if (n.NodeKind != NodeKind.FuncTerm)
            {
                tag = typename = null;
                return(false);
            }

            var funcTerm = (FuncTerm)n;

            if (funcTerm.Args.Count != 2)
            {
                tag = typename = null;
                return(false);
            }

            var func = funcTerm.Function as Id;

            if (func == null ||
                func.Name != FormulaNodes.NmdType_Iden.Node.Name)
            {
                tag = typename = null;
                return(false);
            }

            Node arg1 = null, arg2 = null;

            using (var it = funcTerm.Args.GetEnumerator())
            {
                it.MoveNext();
                arg1 = it.Current;
                it.MoveNext();
                arg2 = it.Current;
            }

            var tagNode = arg1 as Id;

            if (tagNode == null)
            {
                tag = typename = null;
                return(false);
            }
            else if (tagNode.Name == FormulaNodes.union_Iden.Node.Name)
            {
                tag = "union ";
            }
            else if (tagNode.Name == FormulaNodes.enum_Iden.Node.Name)
            {
                tag = "enum ";
            }
            else if (tagNode.Name == FormulaNodes.struct_Iden.Node.Name)
            {
                tag = "struct ";
            }
            else if (tagNode.Name == FormulaNodes.Nil_Iden.Node.Name)
            {
                tag = "";
            }
            else
            {
                tag = typename = null;
                return(false);
            }

            var name = arg2 as Cnst;

            if (name == null ||
                name.CnstKind != CnstKind.String ||
                !CRenderer.IsCIdentifier(name.GetStringValue()))
            {
                tag = typename = null;
                return(false);
            }

            typename = name.GetStringValue();
            return(true);
        }
示例#17
0
 public static void DrawOneFrame <TPipeline, TCamera>(TPipeline pipeline, RenderEntity[] entitiesApply, TCamera camera, CharRenderBuffer <float> charBuffer) where TPipeline : IPipeline where TCamera : ICamera
 {
     CRenderer.UpdateRenderInfo();
     pipeline.Draw(entitiesApply, camera);
     CRenderer.Render(charBuffer);
 }