Example #1
0
        public Sprite( ITexture2D texture, IEffect effect )
        {
            if ( effect == null )
            {
                if ( baseSpriteEffect == null )
                    baseSpriteEffect = new SpriteEffect ();
                effect = baseSpriteEffect;
            }

            Texture = texture;
            Effect = effect;

            int width = 1, height = 1;
            if ( texture != null ) { width = texture.Width; height = texture.Height; }

            vertexBuffer = LiqueurSystem.GraphicsDevice.CreateVertexBuffer<SpriteVertex> ( SpriteVertexFormat, new SpriteVertex []
            {
                new SpriteVertex ( new Vector2 ( 0.001f, 0.001f ), Color.White, new Vector2 ( 0.001f, 0.001f ) ),
                new SpriteVertex ( new Vector2 ( width, 0.001f ), Color.White, new Vector2 ( 1, 0.001f ) ),
                new SpriteVertex ( new Vector2 ( 0.001f, height ), Color.White, new Vector2 ( 0.001f, 1 ) ),
                new SpriteVertex ( new Vector2 ( width, height ), Color.White, new Vector2 ( 1, 1 ) ),
            } );
            if ( indexBuffer == null )
                indexBuffer = LiqueurSystem.GraphicsDevice.CreateIndexBuffer ( new int [] { 0, 1, 2, 1, 3, 2 } );
            indexReference++;

            clippingArea = new Rectangle ( 0, 0, width, height );

            TextureFilter = Liqueur.Graphics.TextureFilter.Nearest;
        }
Example #2
0
		public Batcher( GraphicsDevice graphicsDevice )
		{
			Assert.isTrue( graphicsDevice != null );

			this.graphicsDevice = graphicsDevice;

			_vertexInfo = new VertexPositionColorTexture4[MAX_SPRITES];
			_textureInfo = new Texture2D[MAX_SPRITES];
			_vertexBuffer = new DynamicVertexBuffer( graphicsDevice, typeof( VertexPositionColorTexture ), MAX_VERTICES, BufferUsage.WriteOnly );
			_indexBuffer = new IndexBuffer( graphicsDevice, IndexElementSize.SixteenBits, MAX_INDICES, BufferUsage.WriteOnly );
			_indexBuffer.SetData( _indexData );

			_spriteEffect = new SpriteEffect();
			_spriteEffectPass = _spriteEffect.CurrentTechnique.Passes[0];

			_projectionMatrix = new Matrix(
				0f, //(float)( 2.0 / (double)viewport.Width ) is the actual value we will use
				0.0f,
				0.0f,
				0.0f,
				0.0f,
				0f, //(float)( -2.0 / (double)viewport.Height ) is the actual value we will use
				0.0f,
				0.0f,
				0.0f,
				0.0f,
				1.0f,
				0.0f,
				-1.0f,
				1.0f,
				0.0f,
				1.0f
			);
		}
Example #3
0
    public void Sell()
    {
        StopAllCoroutines();

        SpriteEffect effect = null;

        if (PoolManager.Instance != null && PoolManager.Instance.GetEffectFromPool((int)EffectTable.eEffectType.Type_Tower_Sell, out effect))
        {
            effect.Init(transform);
        }
        else
        {
            EffectTable.TableRow effectTable = null;
            if (EffectTable.Instance.FindTable((int)EffectTable.eEffectType.Type_Tower_Sell, out effectTable))
            {
                LoadAssetbundle.LoadPrefabCB loadPrefabCB = new LoadAssetbundle.LoadPrefabCB(LoadDestroyEffectCompleteCB);
                PrefabManager.Instance.LoadPrefab(effectTable.effectPath, System.Guid.NewGuid(), loadPrefabCB, effectTable);
            }
        }

        if (TowerManager.Instance != null)
        {
            TowerManager.Instance.RemoveTowerList(this);
        }

        if (PoolManager.Instance != null)
        {
            PoolManager.Instance.AddTowerPool(this);
        }
        if (GameManager.Instance != null)
        {
            GameManager.Instance.AddGameGold(status.GetSellPrice);
        }
    }
Example #4
0
    private void LoadAttackEffectCompleteCB(GameObject gameObj, System.Guid uid, params object[] param)
    {
        if (gameObj != null)
        {
            GameObject createObj = Instantiate(gameObj) as GameObject;

            createObj.transform.parent = GameManager.Instance.rootPanelArray[(int)GameManager.eRootPanelType.Type_Effect].transform;

            createObj.transform.localScale    = gameObj.transform.localScale;
            createObj.transform.localPosition = Vector3.zero;

            SpriteEffect effect = createObj.GetComponent <SpriteEffect>();
            if (effect != null)
            {
                if (param.Length.Equals(2))
                {
                    effect.Init((Transform)param[0], (EffectTable.TableRow)param[1]);
                }
                else if (param.Length.Equals(3))
                {
                    effect.Init((Transform)param[0], (EffectTable.TableRow)param[1], (SpriteEffect.EffectCompleteCB)param[2]);
                }
            }
        }
    }
Example #5
0
        public override void onStart()
        {
            plr          = Objects.getObject <Player>("Player");
            plr.Position = new Vector(200);
            Level.Camera.TruePosition = plr.Position;

            SpriteEffect fx = new SpriteEffect(Level);

            fx.Position = plr.Position;
            fx.Effect   = "teleport";
            fx.Frames   = new Vector(2, 5);
            fx.Speed    = 7;


            fx          = new SpriteEffect(Level);
            fx.Position = plr.Position + new Vector(150, 200);
            fx.Effect   = "teleport";
            fx.Frames   = new Vector(2, 5);
            fx.Speed    = 7;


            fx               = new SpriteEffect(Level);
            fx.Position      = plr.Position + new Vector(65, 100);
            fx.Effect        = "teleport";
            fx.Frames        = new Vector(2, 5);
            fx.Speed         = 5;
            fx.Sprite.Scale *= 3;

            Objects.getObject <Wall>("WALLPIPE").Active = (Objects.getObject <Wall>("doorA").Y < 1201);
            if (Objects.getObject <Wall>("WALLPIPE").Active)
            {
                Objects.getObject <Wall>("WALLPIPE").X = 9650;
            }
        }
    void Start()
    {
        GameObject deathObj = new GameObject();

        deathSe = deathObj.AddComponent <SpriteEffect> ();
        dead    = false;
    }
Example #7
0
        public void End()
        {
            if (TextureSize == Vector2.Zero)
            {
                return;
            }
            DWRenderTarget.EndDraw();
            MutexD3D10.Release(0);
            MutexD3D11.Acquire(0, 100);
            ShaderResourceView srv            = new ShaderResourceView(DeviceManager.Device, TextureD3D11);
            BlendState         lastBlendState = DeviceManager.Context.OutputMerger.BlendState;

            Viewport[] lastViewports = DeviceManager.Context.Rasterizer.GetViewports();
            //WVP行列をエフェクトに渡す
            SpriteEffect.GetVariableBySemantic("WORLDVIEWPROJECTION")
            .AsMatrix()
            .SetMatrix(ViewMatrix * SpriteProjectionMatrix);
            SpriteEffect.GetVariableBySemantic("SPRITETEXTURE").AsResource().SetResource(srv);
            DeviceManager.Context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(VertexBuffer, SpriteVertexLayout.SizeInBytes, 0));
            DeviceManager.Context.InputAssembler.InputLayout       = VertexInputLayout;
            DeviceManager.Context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
            DeviceManager.Context.OutputMerger.BlendState          = state;
            DeviceManager.Context.Rasterizer.SetViewports(spriteViewport);
            renderPass.Apply(DeviceManager.Context);
            DeviceManager.Context.Draw(6, 0);
            DeviceManager.Context.Rasterizer.SetViewports(lastViewports);
            DeviceManager.Context.OutputMerger.BlendState = lastBlendState;
            srv.Dispose();
            MutexD3D11.Release(0);
        }
Example #8
0
        public Sprite( ITexture2D texture, IEffect effect )
        {
            if ( effect == null )
            {
                if ( baseSpriteEffect == null )
                    baseSpriteEffect = new SpriteEffect ();
                effect = baseSpriteEffect;
            }

            if ( projectionMatrix == null )
                projectionMatrix = new OrthographicOffCenterProjection ( 0, 800, 600, 0, 0.001f, 1000.0f );

            Effect = effect;

            if ( vertexDeclaration == null )
            {
                vertexDeclaration = Core.GraphicsDevice.CreateVertexDeclaration ( Utilities.CreateVertexElementArray<SpriteVertex> () );
            }
            indexReference++;

            vertexBuffer = Core.GraphicsDevice.CreateBuffer ( BufferType.VertexBuffer, typeof ( SpriteVertex ), 4 );

            textureArgument = new SamplerState ( texture, Graphics.TextureFilter.Nearest, TextureAddressing.Clamp, 0 );
            Reset ( texture );

            innerWorld = new World2();
        }
Example #9
0
 public void Dispose()
 {
     if (VertexBuffer != null && !VertexBuffer.Disposed)
     {
         VertexBuffer.Dispose();
     }
     if (VertexInputLayout != null && !VertexInputLayout.Disposed)
     {
         VertexInputLayout.Dispose();
     }
     if (SpriteEffect != null && !SpriteEffect.Disposed)
     {
         SpriteEffect.Dispose();
     }
     if (SpriteTexture != null && !SpriteTexture.Disposed)
     {
         SpriteTexture.Dispose();
     }
     if (mapedBitmap != null)
     {
         mapedBitmap.Dispose();
     }
     if (mapedGraphic != null)
     {
         mapedGraphic.Dispose();
     }
 }
Example #10
0
        public void DifferentVboGetsSet()
        {
            var vb1 = new VertexBuffer(gd, VertexPosition.VertexDeclaration, 6, BufferUsage.None);
            var vb2 = new VertexBuffer(gd, VertexPosition.VertexDeclaration, 8, BufferUsage.None);

            var se = new SpriteEffect(gd);

            se.CurrentTechnique.Passes[0].Apply();

            gd.SetVertexBuffer(vb1);
            gd.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);

            int vbo;

            GL.GetInteger(GetPName.ArrayBufferBinding, out vbo);
            Assert.AreEqual(vb1.vbo, vbo);

            gd.SetVertexBuffer(vb2);
            gd.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);

            GL.GetInteger(GetPName.ArrayBufferBinding, out vbo);
            Assert.AreEqual(vb2.vbo, vbo);

            se.Dispose();
            vb1.Dispose();
            vb2.Dispose();
        }
Example #11
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="context">レンダーコンテキスト</param>
        /// <param name="width">描画に利用するテクスチャの解像度の幅</param>
        /// <param name="height">描画に利用するテクスチャの解像度の高さ</param>
        public GDISpriteBatch(RenderContext context, int width, int height)
        {
            this.Context = context;
            Resize(width, height);
            SpriteEffect      = CGHelper.CreateEffectFx5("Shader\\sprite.fx", context.DeviceManager.Device);
            renderPass        = SpriteEffect.GetTechniqueByIndex(0).GetPassByIndex(0);
            VertexInputLayout = new InputLayout(context.DeviceManager.Device, SpriteEffect.GetTechniqueByIndex(0).GetPassByIndex(0).Description.Signature, SpriteVertexLayout.InputElements);
            SamplerDescription desc = new SamplerDescription();

            desc.Filter   = Filter.MinMagMipLinear;
            desc.AddressU = TextureAddressMode.Wrap;
            desc.AddressV = TextureAddressMode.Wrap;
            desc.AddressW = TextureAddressMode.Wrap;
            sampler       = SamplerState.FromDescription(context.DeviceManager.Device, desc);
            mapedGraphic  = Graphics.FromImage(mapedBitmap);
            BlendStateDescription blendDesc = new BlendStateDescription();

            blendDesc.AlphaToCoverageEnable  = false;
            blendDesc.IndependentBlendEnable = false;
            for (int i = 0; i < blendDesc.RenderTargets.Length; i++)
            {
                blendDesc.RenderTargets[i].BlendEnable           = true;
                blendDesc.RenderTargets[i].SourceBlend           = BlendOption.SourceAlpha;
                blendDesc.RenderTargets[i].DestinationBlend      = BlendOption.InverseSourceAlpha;
                blendDesc.RenderTargets[i].BlendOperation        = BlendOperation.Add;
                blendDesc.RenderTargets[i].SourceBlendAlpha      = BlendOption.One;
                blendDesc.RenderTargets[i].DestinationBlendAlpha = BlendOption.Zero;
                blendDesc.RenderTargets[i].BlendOperationAlpha   = BlendOperation.Add;
                blendDesc.RenderTargets[i].RenderTargetWriteMask = ColorWriteMaskFlags.All;
            }
            ViewMatrix = Matrix.LookAtLH(new Vector3(0, 0, -1), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
            state      = BlendState.FromDescription(context.DeviceManager.Device, blendDesc);
            NeedRedraw = true;
            Update();
        }
Example #12
0
    private void AddEffect(EffectType typeValue, int poolCount = 30)
    {
        GameObject prefab = Resources.Load <GameObject>("Prefabs/Effects/" + effNames[(int)typeValue]);
        //
        List <GameObject> effects = new List <GameObject>();
        //
        GameObject holder = new GameObject(effNames[(int)typeValue] + "_Holder");

        holder.transform.SetParent(transform);
        //
        effHolders.Add((int)typeValue, holder.transform);
        //
        for (int i = 0; i < poolCount; ++i)
        {
            GameObject effect = Instantiate(prefab, holder.transform);
            effect.name = effNames[(int)typeValue] + i;
            effect.SetActive(false);
            //
            SpriteEffect se = null;
            if (effect.TryGetComponent <SpriteEffect>(out se))
            {
                se.type = typeValue;
            }
            //effect.GetComponent<SpriteEffect>().type = typeValue;
            //
            effects.Add(effect);
        }
        //
        totalEffect.Add(effNames[(int)typeValue], effects);
    }
Example #13
0
 public void SetPlayer(GameObject player)
 {
     this.animChar         = player.GetComponent <Animator>();
     this.RgbChar          = player.GetComponent <Rigidbody2D>();
     this.transform        = player.transform;
     this.spriteEffect     = player.GetComponent <SpriteEffect>();
     this.playerController = player.GetComponent <PlayerController>();
     this.scaleX           = transform.localScale.x;
 }
Example #14
0
        /// <summary>
        /// Creates a new instance of the <see cref="SpriteRocket2D"/> class.
        /// </summary>
        /// <param name="device">The graphics device to render all polygons to.</param>
        public SpriteRocket2D(GraphicsDevice device)
        {
            GraphicsDevice = device ?? throw new ArgumentNullException(nameof(device));
            GameUtils.Log("Sprite Rocket is preparing for lift-off.");

            _blankTexture = new Texture2D(device, 1, 1);
            _blankTexture.SetData(new[] { 0xffffffff });

            _spriteEffect = new SpriteEffect(device);
        }
Example #15
0
 public void Draw()
 {
     SpriteEffect.GetVariableBySemantic("WORLDVIEWPROJECTION")
     .AsMatrix()
     .SetMatrix(context.MatrixManager.makeWorldViewProjectionMatrix(this));
     SpriteEffect.GetVariableBySemantic("SPRITETEXTURE").AsResource().SetResource(_resView);
     context.DeviceManager.Context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(VertexBuffer, SpriteVertexLayout.SizeInBytes, 0));
     context.DeviceManager.Context.InputAssembler.InputLayout       = VertexInputLayout;
     context.DeviceManager.Context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
     renderPass.Apply(context.DeviceManager.Context);
     context.DeviceManager.Context.Draw(12, 0);
 }
Example #16
0
        public override void onClose()
        {
            SpriteEffect efx = new SpriteEffect(Level);

            efx.Effect        = "blood";
            efx.Sprite.Scale *= .3f;
            efx.Position      = Gob.Position;
            efx.Frames        = new Vector(4, 2);
            Sound s = new Sound("punch.wav");

            s.play();
        }
Example #17
0
    void CreateSprite(SpriteEffect spriteEffect, Vector3 pos, Vector3 dir)
    {
        SpriteObject spriteObj = new SpriteObject();

        spriteObj.quad = GameObject.CreatePrimitive(PrimitiveType.Quad);
        spriteObj.quad.GetComponent <MeshCollider>().enabled  = false;
        spriteObj.quad.GetComponent <MeshRenderer>().material = spriteEffect.materials[Random.Range(0, spriteEffect.materials.Length)];
        spriteObj.quad.transform.localPosition    = pos;
        spriteObj.quad.transform.localEulerAngles = dir;
        spriteObj.effect = spriteEffect;
        _sprites.Add(spriteObj);
    }
Example #18
0
 public GameObject(Texture2D texture, Vector2 position, Rectangle sourceRectangle,
                   Color tint, float angle, Vector2 origin, float scale, SpriteEffect spriteEffects, int layerDepth)
 {
     this.texture         = texture;
     this.positon         = position;
     this.sourceRectangle = sourceRectangle;
     this.tint            = tint;
     this.angle           = angle;
     this.origin          = origin;
     this.scale           = scale;
     this.effects         = spriteEffects;
     this.depth           = layerDepth;
 }
Example #19
0
 public virtual void Start()
 {
     RenderPass   = new BasicRenderPass(Graphics);
     SpriteEffect = new SpriteEffect(
         Graphics,
         RenderPass,
         MaxActors,
         PreviousEffect?.FinalLayout ?? ImageLayout.Undefined,
         PreviousEffect?.FinalAccess ?? Accesses.None,
         PreviousEffect?.FinalStage ?? PipelineStages.TopOfPipe
         );
     SpriteEffect.Start();
     SpriteEffect.SetCamera(Vector2.Zero, new Vector2(Graphics.Window.Size.X, -Graphics.Window.Size.Y));
 }
Example #20
0
    void ZoomOut()
    {
        //set all receipts unseeable for raycast
        foreach (GameObject go in ReceiptManager.Instance.Receipts)
        {
            go.layer = 8;
        }
        //the screen goes bright
        GameObject   darkScreenPic = GameObject.Find("DarkBackground");
        SpriteEffect effect        = darkScreenPic.AddComponent <SpriteEffect>();

        effect.numberAssignment(3f, SpriteEffect.EffectType.FadeImage);
        //Destroy the game object
        Destroy(gameObject);
    }
Example #21
0
 public void Dispose()
 {
     if (BatchDisposing != null)
     {
         BatchDisposing(this, new EventArgs());
     }
     if (TextureD3D10 != null && !TextureD3D10.Disposed)
     {
         TextureD3D10.Dispose();
     }
     if (TextureD3D11 != null && !TextureD3D11.Disposed)
     {
         TextureD3D11.Dispose();
     }
     if (MutexD3D10 != null && !MutexD3D10.Disposed)
     {
         MutexD3D10.Dispose();
     }
     if (MutexD3D11 != null && !MutexD3D11.Disposed)
     {
         MutexD3D11.Dispose();
     }
     if (DWRenderTarget != null && !DWRenderTarget.Disposed)
     {
         DWRenderTarget.Dispose();
     }
     if (VertexBuffer != null && !VertexBuffer.Disposed)
     {
         VertexBuffer.Dispose();
     }
     if (VertexInputLayout != null && !VertexInputLayout.Disposed)
     {
         VertexInputLayout.Dispose();
     }
     if (SpriteEffect != null && !SpriteEffect.Disposed)
     {
         SpriteEffect.Dispose();
     }
     if (sampler != null && !sampler.Disposed)
     {
         sampler.Dispose();
     }
     //以下の二つはRenderContextがDisposeされるときに呼ばれないとバグが出る。(画面真っ黒)
     //これは同じ種類のブレンドステートがDisposeされてしまうからだと予測できる。
     //このため、Dispose予定リストに含めておき、RenderContextの破棄時に処理をする
     context.Disposables.Add(TransParentBlendState);
     context.Disposables.Add(state);
 }
Example #22
0
        protected override void Start()
        {
            base.Start();

            _effect = ContentManager.GetEffect <SpriteEffect>();

            var rasterizerState = RasterizerStateDescription.CullBackSolid;

            rasterizerState.IsFrontCounterClockwise = false;

            _pipelineStateHandle = new EffectPipelineState(
                rasterizerState,
                DepthStencilStateDescription.None,
                BlendStateDescription.Opaque)
                                   .GetHandle();
        }
Example #23
0
 public void Do(params object[] args)
 {
     Album   = args[0] as Album;
     Mode    = (int)args[1];
     Indices = args[2] as int[];
     Path    = args[3] as string;
     if (args.Length > 4)
     {
         Prefix    = (args[4] as string).Replace("\\", "/");
         Increment = (int)args[5];
         Digit     = (int)args[6];
         FullPath  = (bool)args[7];
         OnSaving  = args[8] as SpriteEffect;
     }
     Action(Album, Indices);
 }
Example #24
0
    private void LoadDamageEffectCompleteCB(GameObject gameObj, System.Guid uid, params object[] param)
    {
        if (gameObj != null)
        {
            GameObject createObj = Instantiate(gameObj) as GameObject;

            createObj.transform.parent     = GameManager.Instance.rootPanelArray[(int)GameManager.eRootPanelType.Type_Effect].transform;
            createObj.transform.localScale = gameObj.transform.localScale;

            SpriteEffect effect = createObj.GetComponent <SpriteEffect>();
            if (effect != null)
            {
                effect.Init(effectDummy, (EffectTable.TableRow)param[0]);
            }
        }
    }
Example #25
0
 private void LoadAttackEffect(Transform target, SpriteEffect.EffectCompleteCB effectCompleteCB)
 {
     if (status.GetEffectTable != null)
     {
         SpriteEffect effect = null;
         if (PoolManager.Instance != null && PoolManager.Instance.GetEffectFromPool(status.GetEffectTable.id, out effect))
         {
             effect.Init(target, effectCompleteCB);
         }
         else
         {
             LoadAssetbundle.LoadPrefabCB loadEffectCB = new LoadAssetbundle.LoadPrefabCB(LoadAttackEffectCompleteCB);
             PrefabManager.Instance.LoadPrefab(status.GetEffectTable.effectPath, System.Guid.NewGuid(),
                                               loadEffectCB, target, status.GetEffectTable, effectCompleteCB);
         }
     }
 }
Example #26
0
    private void SetDamageEffect(DamageParam param)
    {
        SpriteEffect effect = null;

        if (PoolManager.Instance != null && PoolManager.Instance.GetEffectFromPool(param.GetDamageEffectID, out effect))
        {
            effect.Init(effectDummy);
        }
        else
        {
            EffectTable.TableRow effectTable = null;
            if (EffectTable.Instance.FindTable(param.GetDamageEffectID, out effectTable))
            {
                LoadAssetbundle.LoadPrefabCB loadDamageEffectPrefabCB = new LoadAssetbundle.LoadPrefabCB(LoadDamageEffectCompleteCB);
                PrefabManager.Instance.LoadPrefab(effectTable.effectPath, System.Guid.NewGuid(), loadDamageEffectPrefabCB, effectTable);
            }
        }
    }
Example #27
0
        public D2DSpriteBatch(RenderContext context)
        {
            this.context      = context;
            DeviceManager     = context.DeviceManager;
            SpriteEffect      = CGHelper.CreateEffectFx5FromResource("MMF.Resource.Shader.SpriteShader.fx", DeviceManager.Device);
            renderPass        = SpriteEffect.GetTechniqueByIndex(0).GetPassByIndex(1);
            VertexInputLayout = new InputLayout(DeviceManager.Device, SpriteEffect.GetTechniqueByIndex(0).GetPassByIndex(0).Description.Signature, SpriteVertexLayout.InputElements);
            SamplerDescription desc = new SamplerDescription();

            desc.Filter   = Filter.MinMagMipLinear;
            desc.AddressU = TextureAddressMode.Wrap;
            desc.AddressV = TextureAddressMode.Wrap;
            desc.AddressW = TextureAddressMode.Wrap;
            sampler       = SamplerState.FromDescription(DeviceManager.Device, desc);
            BlendStateDescription blendDesc = new BlendStateDescription();

            blendDesc.AlphaToCoverageEnable  = false;
            blendDesc.IndependentBlendEnable = false;
            for (int i = 0; i < blendDesc.RenderTargets.Length; i++)
            {
                blendDesc.RenderTargets[i].BlendEnable           = true;
                blendDesc.RenderTargets[i].SourceBlend           = BlendOption.SourceAlpha;
                blendDesc.RenderTargets[i].DestinationBlend      = BlendOption.InverseSourceAlpha;
                blendDesc.RenderTargets[i].BlendOperation        = BlendOperation.Add;
                blendDesc.RenderTargets[i].SourceBlendAlpha      = BlendOption.One;
                blendDesc.RenderTargets[i].DestinationBlendAlpha = BlendOption.Zero;
                blendDesc.RenderTargets[i].BlendOperationAlpha   = BlendOperation.Add;
                blendDesc.RenderTargets[i].RenderTargetWriteMask = ColorWriteMaskFlags.All;
            }
            state = BlendState.FromDescription(DeviceManager.Device, blendDesc);

            BlendStateDescription bsd = new BlendStateDescription();

            bsd.RenderTargets[0].BlendEnable           = true;
            bsd.RenderTargets[0].SourceBlend           = BlendOption.SourceAlpha;
            bsd.RenderTargets[0].DestinationBlend      = BlendOption.InverseSourceAlpha;
            bsd.RenderTargets[0].BlendOperation        = BlendOperation.Add;
            bsd.RenderTargets[0].SourceBlendAlpha      = BlendOption.One;
            bsd.RenderTargets[0].DestinationBlendAlpha = BlendOption.Zero;
            bsd.RenderTargets[0].BlendOperationAlpha   = BlendOperation.Add;
            bsd.RenderTargets[0].RenderTargetWriteMask = ColorWriteMaskFlags.All;
            TransParentBlendState = BlendState.FromDescription(DeviceManager.Device, bsd);
            Resize();
        }
Example #28
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GeometryBatchRenderer"/> class.
        /// </summary>
        /// <param name="graphicsDevice">The graphics device.</param>
        /// <exception cref="ArgumentNullException">graphicsDevice - GraphicsDevice must not be null.</exception>
        public GeometryBatchRenderer(GraphicsDevice graphicsDevice) : base()
        {
            GraphicsDevice = graphicsDevice ?? throw new ArgumentNullException(nameof(graphicsDevice), "GraphicsDevice must not be null.");

            _spriteEffect    = new SpriteEffect(graphicsDevice);
            _spritePass      = _spriteEffect.CurrentTechnique.Passes[0];
            _matrixTransform = _spriteEffect.Parameters["MatrixTransform"];
            //_batcher = new SpriteBatcher(graphicsDevice);

            _beginCalled = false;

            _index       = new short[65536];
            _vertexArray = new VertexPositionColorTexture[32768];

            PolygonCompiler = new ActionBlock <int>(a => CompilePolygon(a),
                                                    new ExecutionDataflowBlockOptions()
            {
                MaxDegreeOfParallelism = Environment.ProcessorCount
            });
        }
Example #29
0
        public FairyBatch()
        {
            _clipStack     = new Stack <RectangleF>();
            _renderTargets = new Stack <RenderTarget>();
            _vertexCache   = new VertexPositionColorTexture[1024];
            _indexCache    = new int[1024];

            _device = Stage.game.GraphicsDevice;

            _scissorTestEnabled                   = new RasterizerState();
            _scissorTestEnabled.CullMode          = CullMode.None;
            _scissorTestEnabled.ScissorTestEnable = true;

            _defaultEffect = Stage.game.Content.Load <Effect>("FairyGUI");
            _defaultPass   = _defaultEffect.Techniques["Default"].Passes[0];
            _grayedPass    = _defaultEffect.Techniques["Grayed"].Passes[0];

            _spriteEffect = new SpriteEffect(_device);
            _spritePass   = _spriteEffect.CurrentTechnique.Passes[0];
        }
Example #30
0
    public void ZoomIn()
    {
        //set all receipts unseeable for raycast
        foreach (GameObject go in ReceiptManager.Instance.Receipts)
        {
            go.layer = 2;
        }
        //the screen goes dark
        GameObject   darkScreenPic = GameObject.Find("DarkBackground");
        SpriteEffect effect        = darkScreenPic.AddComponent <SpriteEffect>();

        effect.numberAssignment(5f, SpriteEffect.EffectType.ShowSomeImage);
        //creat a copy in UI layer
        Sprite     receiptSprite = GetComponent <SpriteRenderer>().sprite;
        GameObject zoomInObj     = Instantiate(Resources.Load <GameObject>("Prefab/ZoomInImage"), darkScreenPic.transform.parent);

        zoomInObj.GetComponent <Image>().sprite = receiptSprite;
        zoomInObj.GetComponent <Image>().SetNativeSize();
        zoomInObj.transform.localScale = zoomScale * zoomInObj.transform.localScale;
        StartCoroutine(waitAndAddCanvasImage(0.5f, zoomInObj));
    }
Example #31
0
    public void PlayerDiedEffect()
    {
        GameObject obj = Instantiate(effectPrefab);


        RectTransform rect            = obj.GetComponent <RectTransform>();
        Transform     parent          = gameObject.transform.parent;
        GameObject    UI              = parent.gameObject;
        GameObject    canvas          = UI.GetComponent <Canvas>().gameObject;
        GameObject    EffectContainer = canvas.transform.Find("Effects").gameObject;

        obj.transform.SetParent(EffectContainer.transform);
        SpriteEffect spriteEffect = obj.GetComponent <SpriteEffect>();

        spriteEffect.colorEffect   = Color.white;
        spriteEffect.colorEffect.a = .6f;
        spriteEffect.colorTime     = 1f;
        rect.localPosition         = parent.localPosition;
        rect.localScale            = parent.localScale;
        rect.localRotation         = parent.localRotation;
    }
Example #32
0
        /// <summary>
        /// スプライトを描画する
        /// </summary>
        public void Draw()
        {
            BlendState lastBlendState = Context.DeviceManager.Context.OutputMerger.BlendState;

            Viewport[] lastViewports = Context.DeviceManager.Context.Rasterizer.GetViewports();
            //WVP行列をエフェクトに渡す
            SpriteEffect.GetVariableBySemantic("WORLDVIEWPROJECTION")
            .AsMatrix()
            .SetMatrix(ViewMatrix * SpriteProjectionMatrix);
            SpriteEffect.GetVariableBySemantic("TRANSCOLOR").AsVector().Set(TransparentColor);
            SpriteEffect.GetVariableBySemantic("SPRITETEXTURE").AsResource().SetResource(SpriteTexture);
            Context.DeviceManager.Context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(VertexBuffer, SpriteVertexLayout.SizeInBytes, 0));
            Context.DeviceManager.Context.InputAssembler.InputLayout       = VertexInputLayout;
            Context.DeviceManager.Context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
            Context.DeviceManager.Context.OutputMerger.BlendState          = state;
            Context.DeviceManager.Context.Rasterizer.SetViewports(spriteViewport);
            renderPass.Apply(Context.DeviceManager.Context);
            Context.DeviceManager.Context.Draw(6, 0);
            Context.DeviceManager.Context.Rasterizer.SetViewports(lastViewports);
            Context.DeviceManager.Context.OutputMerger.BlendState = lastBlendState;
        }
Example #33
0
        public override void onClose()
        {
            float        x    = Math.Sign(vis.Sprite.Scale.X);
            SpriteEffect boom = new SpriteEffect(Level);

            boom.Effect        = "bigBang";
            boom.Frames        = new Vector(1, 48);
            boom.Position      = Gob.Position;
            boom.Speed         = 1;
            boom.Sprite.Scale *= 1.5f;

            vis.close();

            SpriteEffect death = new SpriteEffect(Level);

            death.Effect       = "enemy1c";
            death.Frames       = new Vector(1, 27);
            death.Position     = Gob.Position + new Vector(0, -75);;
            death.Speed        = 13;
            death.StartFrame   = 7;
            death.EndFrame     = 13;
            death.Sprite.Scale = new Vector(x, 1) * 1.5f;
        }
Example #34
0
 /// <summary>
 /// Creates a new SpriteEffect by cloning parameter settings from an existing instance.
 /// </summary>
 protected SpriteEffect(SpriteEffect cloneSource)
     : base(cloneSource)
 {
     CacheEffectParameters();
 }
Example #35
0
        public void Dispose()
        {
            if ( vertexBuffer != null )
            {
                if ( --indexReference == 0 )
                {
                    vertexDeclaration.Dispose ();
                    vertexDeclaration = null;

                    if ( baseSpriteEffect != null )
                    {
                        baseSpriteEffect.Dispose ();
                        baseSpriteEffect = null;
                    }
                }

                vertexBuffer.Dispose ();
                vertexBuffer = null;
            }
        }