Example #1
0
        void _restore()
        {
            var layer = this._currentLayer;

            D.assert(layer.states.Count > 0);
            if (layer.states.Count > 1)
            {
                ObjectPool <State> .release(layer.states[layer.states.Count - 1]);

                layer.states.RemoveAt(layer.states.Count - 1);
                layer.currentState = layer.states[layer.states.Count - 1];
                layer.clipStack.restore();
                return;
            }

            this._layers.RemoveAt(this._layers.Count - 1);
            var currentLayer = this._currentLayer = this._layers[this._layers.Count - 1];
            var state        = currentLayer.currentState;

            var mesh = ImageMeshGenerator.imageMesh(state.matrix, uiRectHelper.one, layer.layerBounds);

            if (!this._applyClip(mesh.bounds))
            {
                ObjectPool <uiMeshMesh> .release(mesh);

                return;
            }

            var renderDraw = CanvasShader.texRT(currentLayer, layer.layerPaint.Value, mesh, layer);

            currentLayer.draws.Add(renderDraw);
        }
Example #2
0
        public void saveLayer(Rect bounds, Paint paint)
        {
            D.assert(bounds != null);
            D.assert(bounds.width > 0);
            D.assert(bounds.height > 0);
            D.assert(paint != null);

            this._saveCount++;

            var state        = this._getState();
            var textureWidth = Mathf.CeilToInt(
                (float)bounds.width * state.scale * this._devicePixelRatio);

            textureWidth = Mathf.Max(textureWidth, 1);

            var textureHeight = Mathf.CeilToInt(
                (float)bounds.height * state.scale * this._devicePixelRatio);

            textureHeight = Mathf.Max(textureHeight, 1);

            var parentLayer = this._getLayer();
            var layer       = new RenderLayer {
                rtID        = Shader.PropertyToID("_rtID_" + this._layers.Count + "_" + parentLayer.layers.Count),
                width       = textureWidth,
                height      = textureHeight,
                layerBounds = bounds,
                layerPaint  = paint,
            };

            parentLayer.layers.Add(layer);
            this._layers.Add(layer);
        }
Example #3
0
 public void DrawRectangle(Rectangle rectangle, int strokeWidth, Color color, RenderLayer layer)
 {
     spriteBatch.Draw(rectangleTexture, new Rectangle(rectangle.Left, rectangle.Top, rectangle.Width, strokeWidth), null, color, 0f, Vector2.Zero, SpriteEffects.None, GetLayerDepth(layer));
     spriteBatch.Draw(rectangleTexture, new Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width + strokeWidth, strokeWidth), null, color, 0f, Vector2.Zero, SpriteEffects.None, GetLayerDepth(layer));
     spriteBatch.Draw(rectangleTexture, new Rectangle(rectangle.Left, rectangle.Top, strokeWidth, rectangle.Height), null, color, 0f, Vector2.Zero, SpriteEffects.None, GetLayerDepth(layer));
     spriteBatch.Draw(rectangleTexture, new Rectangle(rectangle.Right, rectangle.Top, strokeWidth, rectangle.Height), null, color, 0f, Vector2.Zero, SpriteEffects.None, GetLayerDepth(layer));
 }
Example #4
0
        void _clearLayer(RenderLayer layer)
        {
            foreach (var cmdObj in layer.draws)
            {
                switch (cmdObj)
                {
                case CmdDraw cmd:
                    if (cmd.meshObjCreated)
                    {
                        this._meshPool.returnMesh(cmd.meshObj);
                        cmd.meshObj        = null;
                        cmd.meshObjCreated = false;
                    }

                    break;
                }

                cmdObj.release();
            }

            layer.draws.Clear();

            foreach (var subLayer in layer.layers)
            {
                this._clearLayer(subLayer);
                ObjectPool <RenderLayer> .release(subLayer);
            }

            layer.layers.Clear();
        }
Example #5
0
        void _clearLayer(RenderLayer layer)
        {
            for (var index = 0; index < layer.draws.Count; index++)
            {
                var cmdObj = layer.draws[index];
                switch (cmdObj)
                {
                case RenderDraw cmd:
                    if (cmd.meshObjCreated)
                    {
                        this._meshPool.returnMesh(cmd.meshObj);
                        cmd.meshObj        = null;
                        cmd.meshObjCreated = false;
                    }
                    break;
                }
            }

            layer.draws.Clear();

            foreach (var subLayer in layer.layers)
            {
                this._clearLayer(subLayer);
            }

            layer.layers.Clear();
        }
Example #6
0
 public void Draw(Texture2D texture, Vector2 position, RenderLayer layer)
 {
     if (texture != null)
     {
         spriteBatch.Draw(texture, position, null, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, GetLayerDepth(layer));
     }
 }
Example #7
0
        internal void render(RenderList list, RenderObject obj, ref Transform parent, byte drawLayers = 255)
        {
            Transform trs = Local * parent;
            uint      pos;

            if (this.forceBillboard)
            {
                list.Camera.MakeBillboard(ref trs);
            }
            if (0 != (drawLayers & ChildrenDrawLayerMask))
            {
                GeoNode node;
                for (pos = NumImmediate, node = FirstChild; 0 != pos; node = node.Sibling, --pos)
                {
                    if (0 != (drawLayers & node.DrawLayerMask))
                    {
                        node.render(list, obj, ref trs, drawLayers);
                    }
                }
            }
            if (0 != (drawLayers & SelfDrawLayerMask))
            {
                OpenTK.Vector4 viewProj = list.Camera.ViewProj * new OpenTK.Vector4(trs.translation, 1f);
                GeoModel       model;
                for (pos = ModelCount, model = FirstModel; 0 != pos; model = model.Next, --pos)
                {
                    if (0 != (drawLayers & model.DrawLayerMask))
                    {
                        RenderLayer.Insert(list, obj, model, ref trs, ref viewProj, (byte)(drawLayers & model.DrawLayerMask));
                    }
                }
            }
        }
 void Awake()
 {
     if (renderLayer == null)
     {
         renderLayer = GetComponent <RenderLayer>();
     }
 }
Example #9
0
        public void flush(uiPicture picture)
        {
            this._reset();
            this._resetRenderTextureId();

            this._drawUIPicture(picture, false);

            D.assert(this._layers.Count == 1);
            D.assert(this._layers[0].states.Count == 1);

            var layer = this._currentLayer;

            using (var cmdBuf = new CommandBuffer()) {
                cmdBuf.name = "CommandBufferCanvas";

                this._lastRtID = -1;
                this._drawLayer(layer, cmdBuf);

                // this is necessary for webgl2. not sure why... just to be safe to disable the scissor.
                cmdBuf.DisableScissorRect();

                Graphics.ExecuteCommandBuffer(cmdBuf);
            }

            D.assert(this._layers.Count == 0 || (this._layers.Count == 1 && this._layers[0] == this._currentLayer));
            if (this._currentLayer != null)
            {
                this._clearLayer(this._currentLayer);
                ObjectPool <RenderLayer> .release(this._currentLayer);

                this._currentLayer = null;
                this._lastScissor  = null;
                this._layers.Clear();
            }
        }
        /// <summary>
        /// modelのパターン(x,y)をbufferに描画する
        /// </summary>
        /// <param name="model">レイヤーモデル</param>
        /// <param name="buffer">描画対象バッファ</param>
        /// <param name="xPos">水平位置</param>
        /// <param name="yPos">垂直位置</param>
        public static void Draw(CharaChipRenderData model, ImageBuffer buffer, int xPos, int yPos)
        {
            if ((xPos < 0) || (xPos > 2) || (yPos < 0) || (yPos > 3))
            {
                return;
            }

            buffer.Clear();

            if ((model == null) || (model.LayerCount == 0))
            {
                return;
            }

            for (int i = model.LayerCount - 1; i >= 0; i--)
            {
                RenderLayer layer = model.GetLayer(i);
                if (layer.Image == null)
                {
                    continue;
                }

                // レイヤーを描画する。
                DrawLayer(buffer, xPos, yPos, layer);
            }
        }
Example #11
0
 public override void Render(ModelShader shader, RenderLayer layer)
 {
     foreach (Instance inst in myInstances)
     {
         inst.Render(shader);
     }
 }
Example #12
0
 /// <summary>
 /// Drawing pictures for every frame.
 /// </summary>
 /// <param name="sb"></param>
 /// <param name="dtime"></param>
 public void Render(Microsoft.Xna.Framework.Graphics.SpriteBatch spriteBatch, RenderLayer layer)
 {
     if (isStarted)
     {
         if (layer == RenderLayer.Early)
         {
             DrawBackground(spriteBatch);
         }
         else if (layer == RenderLayer.Normal)
         {
             foreach (Renderable render in Renderable.AllRenderable)
             {
                 render.Render(spriteBatch);
             }
             DrawSelection(spriteBatch);
         }
         else
         {
             DrawHealthBars(spriteBatch);
             DrawControlPointBars(spriteBatch);
             DrawScore(spriteBatch);
             if (paused)
                 DrawPauseScreen(spriteBatch);
             if (gameOver)
             {
                 DrawGameOver(spriteBatch);
             }
         }
     }
     else
         StartScreen(spriteBatch);
 }
Example #13
0
 protected override void OnAwake()
 {
     base.OnAwake();
     renderLayer        = GetComponent <RenderLayer>();
     anchor             = GetComponent <UnitAnchor>();
     buildChangeManager = GetComponent <BBuildChangeManager>();
 }
Example #14
0
        //Accessors


        //Methods

        public override void Render(RenderLayer layer)
        {
            foreach (MenuItem entry in items)
            {
                entry.Render(layer);
            }
        }
Example #15
0
 public void Draw(Texture2D texture, Rectangle destinationRectangle, Color color, RenderLayer layer)
 {
     if (texture != null)
     {
         spriteBatch.Draw(texture, destinationRectangle, null, color, 0f, Vector2.Zero, SpriteEffects.None, GetLayerDepth(layer));
     }
 }
Example #16
0
        RenderLayer _createMaskLayer(RenderLayer parentLayer, Rect maskBounds, Action <Paint> drawCallback, Paint paint)
        {
            var textureWidth = Mathf.CeilToInt((float)maskBounds.width * this._devicePixelRatio);

            textureWidth = Mathf.Max(1, textureWidth);

            var textureHeight = Mathf.CeilToInt((float)maskBounds.height * this._devicePixelRatio);

            textureHeight = Mathf.Max(1, textureHeight);

            var maskLayer = new RenderLayer {
                rtID        = Shader.PropertyToID("_rtID_" + this._layers.Count + "_" + parentLayer.layers.Count),
                width       = textureWidth,
                height      = textureHeight,
                layerBounds = maskBounds,
            };

            parentLayer.layers.Add(maskLayer);
            this._layers.Add(maskLayer);

            var parentState = parentLayer.states.Last();
            var maskState   = maskLayer.states.Last();

            maskState.matrix = parentState.matrix;

            drawCallback(Paint.shapeOnly(paint));

            var removed = this._layers.removeLast();

            D.assert(removed == maskLayer);

            return(maskLayer);
        }
Example #17
0
            public override void RenderContent(RenderLayer renderContext, SpriteBatch spriteBatch)
            {
                Dictionary <string, Texture2D> brushClassOverlays = _form._brushClassOverlays;
                DynamicTileBrush brush = _form._brush;

                if (!brushClassOverlays.ContainsKey(brush.BrushClass.ClassName))
                {
                    System.Drawing.Bitmap overlayBitmap = null;
                    if (brush.BrushClass.ClassName == "Basic")
                    {
                        overlayBitmap = Properties.Resources.DynBrushBasic;
                    }
                    else if (brush.BrushClass.ClassName == "Extended")
                    {
                        overlayBitmap = Properties.Resources.DynBrushExtended;
                    }
                    else
                    {
                        return;
                    }

                    TextureResource overlayResource = TextureResourceBitmapExt.CreateTextureResource(overlayBitmap);
                    brushClassOverlays.Add(brush.BrushClass.ClassName, overlayResource.CreateTexture(spriteBatch.GraphicsDevice));
                }

                Texture2D overlay = brushClassOverlays[brush.BrushClass.ClassName];

                int width  = (int)(overlay.Width * renderContext.LevelGeometry.ZoomFactor * (brush.TileWidth / 16.0));
                int height = (int)(overlay.Height * renderContext.LevelGeometry.ZoomFactor * (brush.TileHeight / 16.0));

                Microsoft.Xna.Framework.Rectangle dstRect = new Microsoft.Xna.Framework.Rectangle(0, 0, width, height);
                spriteBatch.Draw(overlay, dstRect, new Microsoft.Xna.Framework.Color(1f, 1f, 1f, .5f));
            }
Example #18
0
        public void ToItem(AGSSerializationContext context, IObject obj)
        {
            obj.ResetScale(InitialWidth, InitialHeight);
            var image = Image.ToItem(context);

            if (image != null)
            {
                obj.Image = image;
                obj.Scale = new PointF(ScaleX, ScaleY);
            }
            obj.Location = new AGSLocation(Location.Item1, Location.Item2, Location.Item3);
            obj.Pivot    = new PointF(Pivot.Item1, Pivot.Item2);
            obj.Angle    = Angle;
            obj.Tint     = Color.FromHexa(Tint);

            obj.IsPixelPerfect = IsPixelPerfect;
            AnimationComponent.ToItem(context, obj);
            obj.RenderLayer = RenderLayer.ToItem(context);
            obj.Properties.CopyFrom(Properties.ToItem(context));
            obj.Enabled           = Enabled;
            obj.DisplayName       = DisplayName;
            obj.IgnoreViewport    = IgnoreViewport;
            obj.IgnoreScalingArea = IgnoreScalingArea;
            obj.Visible           = Visible;

            if (Parent != null)
            {
                var parent = Parent.ToItem(context);
                obj.TreeNode.SetParent(parent.TreeNode);
            }
        }
Example #19
0
            public static CmdLayer create(RenderLayer layer)
            {
                CmdLayer newCmd = ObjectPool <CmdLayer> .alloc();

                newCmd.layer = layer;
                return(newCmd);
            }
Example #20
0
 public override void Render(RenderLayer layer)
 {
     if (layer == RenderLayer.MENU)
     {
         menuPanel.Render(layer);
     }
 }
Example #21
0
 public override void Render(RenderLayer layer)
 {
     if (Camera.IsInsideCamera(this.Position, AllSprites["Explosion"].Pos.w, AllSprites["Explosion"].Pos.h))
     {
         Coordinate drawPosition = Camera.ConvertMapToScreenCoordinate(this.Position);
         AllSprites["Explosion"].RotateAndRender(drawPosition, 0, AllSprites["Explosion"].Pos.w / 2, AllSprites["Explosion"].Pos.h / 2);
     }
 }
Example #22
0
 protected BaseRenderObject()
 {
     Transform       = new Transform();
     Debug           = false;
     RenderLayer     = RenderLayer.None;
     ZLevel          = 1;
     ParentTransform = null;
 }
Example #23
0
 public Tile(string texture, Vector2 position, float rotation, Vector2 scale, RenderLayer layer, float depth)
 {
     this.Texture = texture;
     this.Position = position;
     this.Rotation = rotation;
     this.Scale = scale;
     this.RenderLayer = layer;
     this.Depth = depth;
 }
        public static RenderLayer AddRenderLayer(RenderLayer layer)
        {
            if (MainWindow != null)
            {
                MainWindow.Layers.Add(layer);
            }

            return(layer);
        }
Example #25
0
        RenderLayer _createBlurLayer(RenderLayer maskLayer, float sigmaX, float sigmaY, RenderLayer parentLayer)
        {
            sigmaX = BlurUtils.adjustSigma(sigmaX, out var scaleFactorX, out var radiusX);
            sigmaY = BlurUtils.adjustSigma(sigmaY, out var scaleFactorY, out var radiusY);

            var textureWidth = Mathf.CeilToInt((float)maskLayer.width / scaleFactorX);

            if (textureWidth < 1)
            {
                textureWidth = 1;
            }

            var textureHeight = Mathf.CeilToInt((float)maskLayer.height / scaleFactorY);

            if (textureHeight < 1)
            {
                textureHeight = 1;
            }

            var blurXLayer = RenderLayer.create(
                rtID: Shader.PropertyToID(this._getNewRenderTextureKey()),
                width: textureWidth,
                height: textureHeight,
                layerBounds: maskLayer.layerBounds,
                filterMode: FilterMode.Bilinear,
                noMSAA: true
                );

            parentLayer.addLayer(blurXLayer);

            var blurYLayer = RenderLayer.create(
                rtID: Shader.PropertyToID(this._getNewRenderTextureKey()),
                width: textureWidth,
                height: textureHeight,
                layerBounds: maskLayer.layerBounds,
                filterMode: FilterMode.Bilinear,
                noMSAA: true
                );

            parentLayer.addLayer(blurYLayer);

            var blurMesh = ImageMeshGenerator.imageMesh(null, uiRectHelper.one, maskLayer.layerBounds);

            var kernelX = BlurUtils.get1DGaussianKernel(sigmaX, radiusX);
            var kernelY = BlurUtils.get1DGaussianKernel(sigmaY, radiusY);

            blurXLayer.draws.Add(CanvasShader.maskFilter(
                                     blurXLayer, blurMesh, maskLayer,
                                     radiusX, new Vector2(1f / textureWidth, 0), kernelX));

            blurYLayer.draws.Add(CanvasShader.maskFilter(
                                     blurYLayer, blurMesh.duplicate(), blurXLayer,
                                     radiusY, new Vector2(0, -1f / textureHeight), kernelY));

            return(blurYLayer);
        }
Example #26
0
        //Accessors

        //Methods

        public override void Render(RenderLayer layer)
        {
            clock.Render(layer);
            if (timeUp)
            {
                title.RenderAtPosition(title.Pos.x, title.Pos.y);
                score1.RenderAtPosition(score1.Pos.x, score1.Pos.y);
                score2.RenderAtPosition(score2.Pos.x, score2.Pos.y);
            }
        }
Example #27
0
        public TextureComponent(string textureFilename, RenderLayer layer)
        {
            ResourceManager rm = ResourceManager.GetInstance();

            TextureFilename = textureFilename;
            Layer           = layer;

            Texture = rm.GetResource <Texture2D>(textureFilename);
            Offset  = new Point(Texture.Width / 2, Texture.Height / 2);
        }
        private void buttonOK_Click(object sender, EventArgs e)
        {
            //有效性验证

            m_dataInfo = inputAndOutput.GetDataInfo();
            string filePath = m_dataInfo.GetOutputFilePath();
            string fileName = m_dataInfo.GetOutputFileName();

            #region 参数有效性验证
            if (m_dataInfo.IsValid() == false)
            {
                return;
            }

            if (textBoxEps.Text == "")
            {
                MessageBox.Show("区域半径输入错误!");
                return;
            }
            if (textBoxMinPts.Text == "")
            {
                MessageBox.Show("最小点数输入错误!");
                return;
            }
            if (File.Exists(filePath + "\\" + fileName))
            {
                MessageBox.Show(fileName + "文件已存在,请重新输入!");
                return;
            }
            #endregion

            //参数获取
            m_dEps    = m_dataInfo.UnitsConvertToMeters(float.Parse(textBoxEps.Text), m_mapControl.MapUnits);
            m_nMinPts = int.Parse(textBoxMinPts.Text);

            //计算得到聚类结果
            m_DBSCANCluster = new DBSCAN(m_dataInfo, m_dEps, m_nMinPts);
            m_Clusters      = m_DBSCANCluster.GetClusters();
            //保存到shp
            SaveShapefile shapefile = new SaveShapefile(m_dataInfo, m_Clusters);
            shapefile.CreatePolygonShapefile();
            shapefile.CreatePointsShapefile();

            IFeatureLayer pointLayer   = shapefile.GetPointFeatureLayer();
            IFeatureLayer polygonLayer = shapefile.GetPolygonFeatureLayer();
            //渲染显示
            RenderLayer layerRenderer = new RenderLayer();
            layerRenderer.DefinePointUniqueValueRenderer(pointLayer as IGeoFeatureLayer, "index");
            layerRenderer.DefinePolygonUniqueValueRenderer(polygonLayer as IGeoFeatureLayer, "index");
            m_mapControl.AddLayer(polygonLayer as ILayer);
            m_mapControl.AddLayer(pointLayer as ILayer);
            this.m_mapControl.Refresh();

            this.Close();
        }
Example #29
0
        public GUIComponent(GUIType type, string textureName, Point screenPosition, RenderLayer layer)
        {
            ResourceManager rm = ResourceManager.GetInstance();

            Type           = type;
            TexturePath    = textureName;
            ScreenPosition = screenPosition;
            Layer          = layer;
            IsActive       = true;
            Texture        = rm.GetResource <Texture2D>(textureName);
        }
 public MenuButtonComponent(MenuButtonType type, ButtonAction buttonAction, string normalTexturePath, string highlightTexturePath, Vector2 position, RenderLayer layer)
 {
     IsActive             = false;
     Ishighlighted        = false;
     Type                 = type;
     Use                  = buttonAction;
     NormalTexturePath    = normalTexturePath;
     HighlightTexturePath = highlightTexturePath;
     Position             = position;
     Layer                = layer;
 }
Example #31
0
        public SpriteComponent(Sprite sprite, String renderLayer)
        {
            m_sprite          = sprite;
            m_attachedToOwner = true;
            m_visible         = true;

            if (Engine.Renderer.RenderLayers.ContainsKey(renderLayer))
            {
                m_layer = Engine.Renderer.RenderLayers[renderLayer];
            }
        }
Example #32
0
        void _tryAddScissor(RenderLayer layer, uiRect?scissor)
        {
            if (uiRectHelper.equals(scissor, this._lastScissor))
            {
                return;
            }

            layer.draws.Add(CmdScissor.create(
                                deviceScissor: scissor
                                ));
            this._lastScissor = scissor;
        }
Example #33
0
        public override void Render( ModelShader shader, RenderLayer layer )
        {
            float rx, rz;
            for ( int x = 0; x < myGridWidth; ++x ) for ( int z = 0; z < myGridDepth; ++z )
            {
                ExteriorBlock blk = myInstGrid[ x, z ];

                rx = blk.CenterPos.X - shader.Camera.Position.X;
                rz = blk.CenterPos.Y - shader.Camera.Position.Z;

                if ( ( rx * rx + rz * rz ) < shader.Camera.ViewDistance2 + blk.Radius2 )
                    blk.Render( shader, layer );
            }
        }
Example #34
0
 public override void Render( ModelShader shader, RenderLayer layer )
 {
     foreach ( Instance inst in myInstances )
         inst.Render( shader );
 }
Example #35
0
 public abstract void Render( ModelShader shader, RenderLayer layer );
Example #36
0
 private float getDepthScale(RenderLayer l)
 {
     switch (l)
     {
         case RenderLayer.Background:
             return .6f;
         default:
             return 1;
     }
 }
Example #37
0
 /// <summary>
 /// Run render on the currently active game screen
 /// </summary>
 /// <param name="sb">The spritebatch used for drawing</param>
 /// <param name="dtime">The time passed since last frame</param>
 public void Render(Microsoft.Xna.Framework.Graphics.SpriteBatch sb, RenderLayer layer)
 {
     activeScreen.Render(sb, layer);
 }