Example #1
0
    public void AddToRenderList(ObjectRenderer obj)
    {
        if (_renderObjects == null)
            _renderObjects = new List<ObjectRenderer>();

        _renderObjects.Add(obj);
    }
Example #2
0
        protected override void OnLoad(EventArgs e)
        {
            multisampling = new Multisampling(4);

            GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
            GL.ClearColor(State.ClearColor);

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

            GL.CullFace(CullFaceMode.Back);
            GL.MinSampleShading(1.0f);

            Map.New(2048);
            debug   = new ObjectRenderer();
            camera  = new Camera();
            terrain = new TerrainRenderer(camera);
            water   = new WaterRenderer();
            light   = new Light();
            assets  = new AssetRenderer();
            ui      = new Ui();
            sky     = new SkyRenderer();
            shadows = new ShadowBox();
        }
Example #3
0
 public void RemoveFromRenderList(ObjectRenderer obj)
 {
     if (_renderObjects != null)
     {
         if (_renderObjects.Contains(obj))
             _renderObjects.Remove(obj);
     }
 }
Example #4
0
    public void AddToRenderList(ObjectRenderer obj)
    {
        if (_renderObjects == null)
        {
            _renderObjects = new List <ObjectRenderer>();
        }

        _renderObjects.Add(obj);
    }
Example #5
0
 public void RemoveFromRenderList(ObjectRenderer obj)
 {
     if (_renderObjects != null)
     {
         if (_renderObjects.Contains(obj))
         {
             _renderObjects.Remove(obj);
         }
     }
 }
Example #6
0
 public MapRenderer(Assets.Scripts.Map.Map map, Transform prefab_trees,
                    Transform prefab_grass, Transform prefab_water, Transform prefab_sand,
                    List <Assets.Scripts.Map.MapObject> listOfMapObjects, ObjectRenderer objectRenderer)
 {
     this.map = map;
     this.listOfMapObjects = listOfMapObjects;
     this.objectRenderer   = objectRenderer;
     this.prefab_trees     = prefab_trees;
     prefabs = new List <Transform> {
         prefab_grass, prefab_water, prefab_sand
     };
 }
Example #7
0
    protected virtual void PrepareComponent()
    {
        childAnimator   = GetComponentInChildren <Animator>();
        animatorWrapper = new AnimatorWrapper(childAnimator);

        if (objectRenderer == null)
        {
            objectRenderer = GetComponentInChildren <ObjectRenderer>();
            objectRenderer.InitRenderer(this);
        }
        objectRenderer.UpdateHealthBar(1f);
        objectRenderer.OnParentObjectRespawn();
    }
        /// <summary>
        /// Find object on screen
        /// </summary>
        /// <param name="findshader">The shader to use for the find</param>
        /// <param name="glstate">Render state</param>
        /// <param name="pos">Position on screen of find point</param>
        /// <param name="size">Screen size</param>
        /// <returns>Return block list render group and index into it, or null</returns>
        public Tuple <int, int> Find(GLShaderPipeline findshader, GLRenderState glstate, Point pos, Size size)
        {
            var geo = findshader.GetShader <GLPLGeoShaderFindTriangles>(OpenTK.Graphics.OpenGL4.ShaderType.GeometryShader);

            geo.SetScreenCoords(pos, size);
            ObjectRenderer.Execute(findshader, glstate);
            var res = geo.GetResult();

            if (res != null)
            {
                //System.Diagnostics.Debug.WriteLine("Set Found something");  for (int i = 0; i < res.Length; i++) System.Diagnostics.Debug.WriteLine(i + " = " + res[i]);
                return(new Tuple <int, int>((int)res[0].W, (int)res[0].Y));
            }
            else
            {
                return(null);
            }
        }
Example #9
0
    protected virtual void PrepareComponent()
    {
        if (navMeshAgent == null)
        {
            navMeshAgent = GetComponent <NavMeshAgent>();
        }
        navMeshAgent.speed = objectData.moveSpeed;
        childAnimator      = GetComponentInChildren <Animator>();
        animatorWrapper    = new AnimatorWrapper(childAnimator);

        if (objectRenderer == null)
        {
            objectRenderer = GetComponentInChildren <ObjectRenderer>();
            objectRenderer.InitRenderer(this);
        }
        objectRenderer.UpdateHealthBar(1f);
        objectRenderer.OnParentObjectRespawn();
    }
Example #10
0
        private string RenderModule(Package package, string moduleName)
        {
            var packageContext = new TypeScriptPackageContext(package, new TypeScriptOptions());
            var moduleContext  = new TypeScriptModuleContext(packageContext, moduleName, new ITypeHandler[] { new StackinoUnoTypeHandler(), new DefaultTypeHandler() });

            var enumRenderer    = new EnumRenderer();
            var objectRenderer  = new ObjectRenderer();
            var serviceRenderer = new ServiceRenderer();

            var stringBuilder = new StringBuilder();

            using (var stringWriter = new StringWriter(stringBuilder))
            {
                using (var indentedWriter = new IndentedTextWriter(stringWriter))
                {
                    foreach (var @enum in package.Enums.Where(e => e.ModuleName == moduleName))
                    {
                        enumRenderer.Render(moduleContext, @enum, indentedWriter);
                    }
                    foreach (var @object in package.Objects.Where(e => e.ModuleName == moduleName))
                    {
                        objectRenderer.Render(moduleContext, @object, indentedWriter);
                    }
                    foreach (var service in package.Services.Where(e => e.ModuleName == moduleName))
                    {
                        serviceRenderer.Render(moduleContext, service, indentedWriter);
                    }
                }
            }
            stringBuilder.TrimEnd();

            using (var resultWriter = new StringWriter())
            {
                using (var indentedWriter = new IndentedTextWriter(resultWriter))
                {
                    moduleContext.RenderHeader(indentedWriter);
                    moduleContext.RenderBody(indentedWriter, stringBuilder.ToString());
                    moduleContext.RenderFooter(indentedWriter);
                }

                return(resultWriter.ToString());
            }
        }
Example #11
0
        private Bitmap GetPreview()
        {
            if (obj == null)
            {
                return(null);
            }
            if (pausePreview)
            {
                return(null);
            }

            var newObj = GetClonedObject();
            var tt     = ThingDb.Things[newObj.Name];

            var    r   = new ObjectRenderer(MainWindow.Instance.mapView.MapRenderer);
            Bitmap img = r.GetObjectImageSpecial(newObj, tt, false);

            return(img);
        }
Example #12
0
    public static ObjectRenderer StartRendering(GameObject characterInstance, RenderSettings renderSettings)
    {
        var camera          = GetPooledCamera(out var cameraIndex);
        var cameraTransform = camera.transform;

        cameraTransform.position = (new Vector3(0, -100, 0) + IndexOffset * cameraIndex);

        var targetData = new ObjectRenderer
        {
            _target           = characterInstance,
            RenderingCamera   = camera,
            _originalPosition = characterInstance.transform.position,
            _originalRotation = characterInstance.transform.rotation
        };

        var renderTexture = new RenderTexture(renderSettings.TextureWidth, renderSettings.TextureHeight, renderSettings.TextureDepth, RenderTextureFormat.ARGB32)
        {
            useMipMap  = false,
            filterMode = FilterMode.Trilinear,
            name       = "ObjectRenderer"
        };

        characterInstance.SetActive(true);

        characterInstance.transform.position = cameraTransform.TransformPoint(renderSettings.ToCameraOffset);
        Quaternion look = Quaternion.LookRotation(cameraTransform.position - characterInstance.transform.position);

        characterInstance.transform.rotation = Quaternion.Euler(0, look.eulerAngles.y, 0);

        camera.enabled       = true;
        camera.targetTexture = renderTexture;
        camera.RenderWithoutUIUpdate();
        targetData.Texture = renderTexture;

        return(targetData);
    }
        MathboxRenderer(Machine machine, ScreenManager screenManager)
        {
            Machine       = machine;
            Memory        = Machine.Mathbox.Memory16;
            ScreenManager = screenManager;

            if (!(screenManager.Game is I_Robot.Game game))
            {
                throw new Exception("VideoInterpreter can only be used with I_Robot.Game");
            }
            Game = game;

            DisplayListManager = new DisplayList.Manager(this);
            Object             = new ObjectRenderer(this);
            Terrain            = new TerrainRenderer(this);

            // create our scene buffer
            // this buffer has a z-buffer
            SceneBuffer = new RenderTarget2D(
                Game.GraphicsDevice,
                Game.GraphicsDevice.Viewport.Width,
                Game.GraphicsDevice.Viewport.Height,
                false,
                Game.GraphicsDevice.PresentationParameters.BackBufferFormat,
                DepthFormat.None,
                8,
                RenderTargetUsage.DiscardContents);

            // create our two screen buffers
            // these buffers do not require depth sorting, they are simply raw bitmaps
            // however the contents need to be preserved when rendering context is reset
            for (int n = 0; n < ScreenBuffers.Length; n++)
            {
                ScreenBuffers[n] = new RenderTarget2D(
                    Game.GraphicsDevice,
                    Game.GraphicsDevice.Viewport.Width,
                    Game.GraphicsDevice.Viewport.Height,
                    false,
                    Game.GraphicsDevice.PresentationParameters.BackBufferFormat,
                    DepthFormat.None,
                    0,
                    RenderTargetUsage.PreserveContents);
            }

            camTarget   = new Vector3(0f, 0f, 0f);
            camPosition = new Vector3(0f, 0f, -1f);

            double scaleToMonitor = Emulation.Machine.MonitorAspectRatio / Emulation.Machine.NativeAspectRatio;

            projectionMatrix = Matrix.CreatePerspectiveFieldOfView(
                MathHelper.ToRadians(45f),
                (float)(Game.GraphicsDevice.Viewport.AspectRatio / scaleToMonitor),
                0.1f,
                65536f);

            // it's important to move the projection matrix down a bit, this matches what I, Robot seems to do
            projectionMatrix = projectionMatrix * Matrix.CreateTranslation(new Vector3(0, -0.1f, 0));
            viewMatrix       = Matrix.CreateLookAt(camPosition, camTarget, Vector3.Up);
            worldMatrix      = Matrix.CreateWorld(Vector3.Zero, Vector3.Forward, Vector3.Down);

            basicEffect       = new BasicEffect(Game.GraphicsDevice);
            basicEffect.Alpha = 1f;
            basicEffect.VertexColorEnabled = true; // Want to see the colors of the vertices, this needs to be on
            // Lighting requires normal information which VertexPositionColor does not have
            // If you want to use lighting and VPC you need to create a custom def
            basicEffect.LightingEnabled = false;
        }