Example #1
0
 public void Init(Blending blending, int paletteIndex)
 {
     this.blending     = blending;
     this.paletteIndex = paletteIndex;
     texture           = null;
     material          = null;
 }
Example #2
0
        public override void CleanUp()
        {
            if (OffensiveInfo.HitPauseTime > 1)
            {
                InHitPause = true;
                --OffensiveInfo.HitPauseTime;
            }
            else
            {
                InHitPause = false;
                OffensiveInfo.HitPauseTime = 0;
            }

            if (InHitPause == false)
            {
                base.CleanUp();

                Transparency   = new Blending();
                CameraFollowX  = true;
                CameraFollowY  = true;
                ScreenBound    = true;
                PositionFreeze = false;
                Assertions.Reset();
                Dimensions.ClearOverride();
                DrawOffset         = Vector2.Zero;
                PushFlag           = false;
                DrawScale          = Vector2.One;
                m_updatedanimation = false;

                DoFriction();
            }
        }
    // Use this for initialization
    void Start()
    {
        offX = Random.Range(0f, 999f);
        offY = Random.Range(0f, 999f);

        Terrain terrain = GetComponent <Terrain>();//getting the terrain
        //terrain.terrainData = generateTerrain(terrain.terrainData);

        Blending  blender = new Blending();                           //init blender
        Texture2D grass   = Resources.Load("greenLawn") as Texture2D; //1
        Texture2D wood    = Resources.Load("Holz-34") as Texture2D;   //2
        Texture2D mud     = Resources.Load("mud02") as Texture2D;     //3
        Texture2D stone   = Resources.Load("rock8") as Texture2D;     //4

        Color[,] colorArray = blender.generateBlend(grass, wood, mud, stone, terrain.terrainData, width, height);

        //use this colorArray to calculate a texture and apply it to the terrain
        Texture2D image = new Texture2D(width, height);

        for (int y = 0; y < height; y++)
        {
            for (int x = 0; x < width; x++)
            {
                image.SetPixel(x, y, colorArray[x, y]);
            }
        }

        //save pic
        var Bytes = image.EncodeToPNG();

        File.WriteAllBytes(Application.dataPath + "/Resources/TerrainColorMap.png", Bytes);
    }
Example #4
0
    public void OnDestroy()
    {
        //generate and safe terrain and colormaps for the next run

        Terrain terrain = this.GetComponent <Terrain>();

        data = terrain.terrainData;
        data.heightmapResolution = width;
        data.size           = new Vector3(width, height, depth);
        terrain.terrainData = GenerateTerrain(terrain.terrainData);

        Blending  blender = new Blending();                         //init blender
        Texture2D grass   = Resources.Load("gras15") as Texture2D;  //1
        Texture2D wood    = Resources.Load("Holz-34") as Texture2D; //2
        Texture2D mud     = Resources.Load("mud02") as Texture2D;   //3
        Texture2D stone   = Resources.Load("rock8") as Texture2D;   //4

        Color[,] colorArray = blender.generateBlend(grass, wood, mud, stone, terrain.terrainData, width, height);

        //use this colorArray to calculate a texture and apply it to the terrain
        Texture2D image = new Texture2D(width, height);

        for (int y = 0; y < height; y++)
        {
            for (int x = 0; x < width; x++)
            {
                image.SetPixel(x, y, colorArray[x, y]);
            }
        }

        //save pic
        var Bytes = image.EncodeToPNG();

        File.WriteAllBytes(Application.dataPath + "/Resources/TerrainColorMap.png", Bytes);
    }
Example #5
0
        /// <summary>
        /// Initializes a new instance of this class.
        /// </summary>
        /// <param name="id">The index of this element in the Animation.</param>
        /// <param name="clsns">The collection of collision boxes in this elements.</param>
        /// <param name="ticks">The time, in gameticks, that this element is drawn.</param>
        /// <param name="spriteid">The Sprite that is drawn for this element. SpriteId.Invalid for nothing to be drawn.</param>
        /// <param name="offset">The offset, in pixels, used to draw this element.</param>
        /// <param name="flip">The drawing orientation of this element.</param>
        /// <param name="blending">Alpha blending to be used while drawing this element.</param>
        public AnimationElement(Int32 id, List <Clsn> clsns, Int32 ticks, Int32 starttick, SpriteId spriteid, Point offset, SpriteEffects flip, Blending blending)
        {
            if (id < 0)
            {
                throw new ArgumentOutOfRangeException("id");
            }
            if (clsns == null)
            {
                throw new ArgumentNullException("clsns");
            }
            if (ticks < -1)
            {
                throw new ArgumentOutOfRangeException("ticks");
            }
            if (starttick < 0)
            {
                throw new ArgumentOutOfRangeException("starttick");
            }
            if (blending == null)
            {
                throw new ArgumentNullException("blending");
            }

            m_id        = id;
            m_clsns     = clsns;
            m_gameticks = ticks;
            m_spriteid  = spriteid;
            m_offset    = (Vector2)offset;
            m_flip      = flip;
            m_blending  = blending;
            m_starttick = starttick;
        }
Example #6
0
        void SetBlending(Blending blending)
        {
            RenderState r = Device.RenderState;

            switch (blending.BlendType)
            {
            case BlendType.Add:
                GetShaderParameter("xBlendWeight").SetValue((Single)blending.SourceFactor / 255.0f);

                r.AlphaBlendEnable = true;
                r.BlendFunction    = BlendFunction.Add;
                r.SourceBlend      = Blend.SourceAlpha;
                r.DestinationBlend = Blend.BlendFactor;
                r.BlendFactor      = new Color(blending.DestinationFactor, blending.DestinationFactor, blending.DestinationFactor, 255);
                break;

            case BlendType.Subtract:
                GetShaderParameter("xBlendWeight").SetValue((Single)blending.SourceFactor / 255.0f);

                r.AlphaBlendEnable = true;
                r.BlendFunction    = BlendFunction.ReverseSubtract;
                r.SourceBlend      = Blend.SourceAlpha;
                r.DestinationBlend = Blend.BlendFactor;
                r.BlendFactor      = new Color(blending.DestinationFactor, blending.DestinationFactor, blending.DestinationFactor, 255);
                break;

            default:
            case BlendType.None:
                GetShaderParameter("xBlendWeight").SetValue(1.0f);
                r.AlphaBlendEnable = false;
                break;
            }
        }
Example #7
0
 public void Init(Blending blending, ShaderId shader, int[] gradientMapIndices)
 {
     this.blending           = blending;
     this.shader             = shader;
     this.gradientMapIndices = gradientMapIndices;
     material = null;
 }
Example #8
0
 public DistortionMaterial(Blending blending)
 {
     Blending          = blending;
     shaderParams      = new ShaderParams();
     shaderParamsArray = new[] { Renderer.GlobalShaderParams, shaderParams };
     amountKey         = shaderParams.GetParamKey <Vector4>("uAmount");
 }
Example #9
0
 public void Init(Blending blending, ShaderId shader)
 {
     this.blending = blending;
     this.shader   = shader;
     texture       = null;
     material      = null;
 }
Example #10
0
        int GetHotStudioBlending(Blending blending, ShaderId shader)
        {
            if (blending == Blending.Inherited && shader == ShaderId.Inherited)
            {
                return(0);
            }
            if (shader == ShaderId.Diffuse)
            {
                switch (blending)
                {
                case Blending.Add: return(2);

                case Blending.Burn: return(3);

                case Blending.Modulate: return(5);

                case Blending.Opaque: return(8);
                }
            }
            if (shader == ShaderId.Silhuette)
            {
                switch (blending)
                {
                case Blending.Alpha: return(7);

                default: throw new InvalidOperationException("Can't use Silhuette shader with blending other than Alpha");
                }
            }
            return(1);
        }
Example #11
0
        protected void drawInGameObjects(float maxdepth, int firstX, int firstY, int offsetX, int offsetY)
        {
            foreach (InGameObject obj in InGameObjects())
            {
                if (!obj.Visible)
                {
                    continue;
                }

                Rectangle sourceRectangle = obj.SourceRectangle;

                Rectangle destinationRectangle = obj.MakeDestinationRectangle(firstX, firstY, offsetX, offsetY);

                Rectangle objBox = obj.InWorldSquareBoundingBox;

                float depth = calculateDepthOffset(maxdepth, objBox.Right - firstX - 1, objBox.Top - firstY);
                depth -= heightRowDepthMod; //since it's above the ground, level with the first level of walls

                spriteBatch.Draw(
                    obj.Texture,
                    destinationRectangle,
                    sourceRectangle,
                    Blending.MultiplyBlend(obj.Tint, CellTint(obj.SquareCoordinate)),
                    0f,           //no rotation
                    Vector2.Zero, //don't use origin
                    SpriteEffects.None,
                    depth);
            }
        }
Example #12
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="other"></param>
 /// <returns></returns>
 public virtual bool Equals(Material other)
 {
     if (other == null)
     {
         return(false);
     }
     return(AlphaTest.Equals(other.AlphaTest) &&
            Blending.Equals(other.Blending) &&
            ClipIntersections.Equals(other.ClipIntersections) &&
            ClipShadows.Equals(other.ClipShadows) &&
            ColorWrite.Equals(other.ColorWrite) &&
            DepthTest.Equals(other.DepthTest) &&
            DepthWrite.Equals(other.DepthWrite) &&
            Dithering.Equals(other.Dithering) &&
            FlatShading.Equals(other.FlatShading) &&
            Fog.Equals(other.Fog) &&
            Lights.Equals(other.Lights) &&
            Opacity.Equals(other.Opacity) &&
            Overdraw.Equals(other.Overdraw) &&
            PremultipliedAlpha.Equals(other.PremultipliedAlpha) &&
            Side.Equals(other.Side) &&
            Transparent.Equals(other.Transparent) &&
            VertexColors.Equals(other.VertexColors) &&
            Visible.Equals(other.Visible) &&
            UserData == other.UserData &&
            ClippingPlanes == other.ClippingPlanes &&
            string.Equals(Precision, other.Precision));
 }
Example #13
0
        private void SetBlending(Blending blending)
        {
            switch (blending.BlendType)
            {
            case BlendType.Add:
                GetShaderParameter("xBlendWeight").SetValue(blending.SourceFactor / 255.0f);
                Device.BlendState = BlendState.Additive;
                break;

            case BlendType.Subtract:
                GetShaderParameter("xBlendWeight").SetValue(blending.SourceFactor / 255.0f);
                Device.BlendState = new BlendState
                {
                    ColorSourceBlend      = Blend.One,
                    ColorDestinationBlend = Blend.One,
                    ColorBlendFunction    = BlendFunction.ReverseSubtract,
                    AlphaSourceBlend      = Blend.One,
                    AlphaDestinationBlend = Blend.One,
                    AlphaBlendFunction    = BlendFunction.ReverseSubtract
                };
                break;

            default:
                GetShaderParameter("xBlendWeight").SetValue(1.0f);
                Device.BlendState = BlendState.NonPremultiplied;
                break;
            }
        }
Example #14
0
 public void Apply(int pass)
 {
     shaderParams.Set(amountKey, new Vector4(ChromaticAberration * Red, ChromaticAberration * Green, ChromaticAberration * Blue, BarrelPincushion));
     PlatformRenderer.SetBlendState(!Opaque ? Blending.GetBlendState() : disabledBlendingState);
     PlatformRenderer.SetShaderProgram(DistortionShaderProgram.GetInstance(Opaque));
     PlatformRenderer.SetShaderParams(shaderParamsArray);
 }
Example #15
0
 public SharpenMaterial(Blending blending)
 {
     Blending          = blending;
     shaderParams      = new ShaderParams();
     shaderParamsArray = new[] { Renderer.GlobalShaderParams, shaderParams };
     stepKey           = shaderParams.GetParamKey <Vector2>("step");
     sharpnessKey      = shaderParams.GetParamKey <Vector3>("uSharpness");
 }
Example #16
0
 public void Apply(int pass)
 {
     shaderParams.Set(stepKey, Step);
     shaderParams.Set(sharpnessKey, new Vector3(Strength, Strength * 0.25f, Limit));
     PlatformRenderer.SetBlendState(!Opaque ? Blending.GetBlendState() : disabledBlendingState);
     PlatformRenderer.SetShaderProgram(SharpenShaderProgram.GetInstance(Opaque));
     PlatformRenderer.SetShaderParams(shaderParamsArray);
 }
Example #17
0
 public void Apply(int pass)
 {
     shaderParams.Set(texelStepKey, TexelStep);
     shaderParams.Set(amountKey, new Vector4(LumaTreshold, 0.25f / MulReduce, 1f / MinReduce, MaxSpan));
     PlatformRenderer.SetBlendState(!Opaque ? Blending.GetBlendState() : disabledBlendingState);
     PlatformRenderer.SetShaderProgram(FXAAShaderProgram.GetInstance(Opaque));
     PlatformRenderer.SetShaderParams(shaderParamsArray);
 }
Example #18
0
 public void Apply(int pass)
 {
     shaderParams.Set(stepKey, Dir * Radius * Step);
     shaderParams.Set(alphaCorrectionKey, 1f / AlphaCorrection);
     PlatformRenderer.SetBlendState(!Opaque ? Blending.GetBlendState() : disabledBlendingState);
     PlatformRenderer.SetShaderProgram(BlurShaderProgram.GetInstance(BlurShaderId, Opaque));
     PlatformRenderer.SetShaderParams(shaderParamsArray);
 }
Example #19
0
 private WidgetMaterial(Blending blending, ShaderId shader, int numTextures, bool premulAlpha)
 {
     PremulAlpha   = premulAlpha || blending == Blending.Burn || blending == Blending.Darken;
     ShaderProgram = ShaderPrograms.Instance.GetShaderProgram(shader, numTextures,
                                                              PremulAlpha ? ShaderOptions.PremultiplyAlpha : ShaderOptions.None);
     Blending  = blending;
     PassCount = Blending == Blending.Glow || Blending == Blending.Darken ? 2 : 1;
 }
Example #20
0
 private ColorfulTextMaterial(Blending blending, int styleIndex)
 {
     colorIndex   = ShaderPrograms.ColorfulTextShaderProgram.StyleIndexToColorIndex(styleIndex);
     blendState   = blending.GetBlendState();
     shaderParams = new ShaderParams();
     shaderParams.Set(shaderParams.GetParamKey <float>("colorIndex"), colorIndex);
     shaderParamsArray = new[] { Renderer.GlobalShaderParams, shaderParams };
 }
Example #21
0
 public BlurMaterial(Blending blending)
 {
     Blending           = blending;
     shaderParams       = new ShaderParams();
     shaderParamsArray  = new[] { Renderer.GlobalShaderParams, shaderParams };
     stepKey            = shaderParams.GetParamKey <Vector2>("step");
     alphaCorrectionKey = shaderParams.GetParamKey <float>("inversedAlphaCorrection");
 }
Example #22
0
 public FXAAMaterial(Blending blending)
 {
     Blending          = blending;
     shaderParams      = new ShaderParams();
     shaderParamsArray = new[] { Renderer.GlobalShaderParams, shaderParams };
     texelStepKey      = shaderParams.GetParamKey <Vector2>("uTexelStep");
     amountKey         = shaderParams.GetParamKey <Vector4>("uAmount");
 }
Example #23
0
        public static void SetBlending(Blending value, bool premultipliedAlpha = false)
        {
            if (value == blending && premultipliedAlphaMode == premultipliedAlpha)
            {
                return;
            }
            premultipliedAlphaMode = premultipliedAlpha;
            blending = value;
            switch (blending)
            {
            case Blending.Inherited:
            case Blending.Alpha:
                if (premultipliedAlphaMode)
                {
                    GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha);
                }
                else
                {
                    GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);
                }
                break;

            case Blending.LcdTextFirstPass:
                GL.BlendFunc(BlendingFactorSrc.Zero, BlendingFactorDest.OneMinusSrcColor);
                break;

            case Blending.LcdTextSecondPass:
                GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.One);
                break;

            case Blending.Add:
            case Blending.Glow:
                if (premultipliedAlphaMode)
                {
                    GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One);
                }
                else
                {
                    GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.One);
                }
                break;

            case Blending.Burn:
            case Blending.Darken:
                GL.BlendFunc(BlendingFactorSrc.DstColor, BlendingFactorDest.OneMinusSrcAlpha);
                break;

            case Blending.Modulate:
                GL.BlendFunc(BlendingFactorSrc.DstColor, BlendingFactorDest.Zero);
                break;

            case Blending.Opaque:
                GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.Zero);
                break;
            }
            CheckErrors();
        }
Example #24
0
 public SDFShadowMaterial(Blending blending)
 {
     Blending          = blending;
     shaderParams      = new ShaderParams();
     shaderParamsArray = new[] { Renderer.GlobalShaderParams, shaderParams };
     dilateKey         = shaderParams.GetParamKey <float>("dilate");
     softnessKey       = shaderParams.GetParamKey <float>("softness");
     colorKey          = shaderParams.GetParamKey <Vector4>("color");
 }
Example #25
0
 public void Apply(int pass)
 {
     shaderParams.Set(dilateKey, 0.5f - Dilate * 0.01f);
     shaderParams.Set(softnessKey, Mathf.Max(Softness * 0.01f, 0.001f));
     shaderParams.Set(colorKey, Color.ToVector4());
     PlatformRenderer.SetBlendState(Blending.GetBlendState());
     PlatformRenderer.SetShaderProgram(SDFShadowShaderProgram.GetInstance());
     PlatformRenderer.SetShaderParams(shaderParamsArray);
 }
Example #26
0
 public WidgetMaterial(Blending blending, ShaderProgram shaderProgram, ITexture texture1, ITexture texture2, bool premulAlpha)
 {
     ShaderProgram = shaderProgram;
     Blending      = blending;
     PassCount     = Blending == Blending.Glow || Blending == Blending.Darken ? 2 : 1;
     Texture1      = texture1;
     Texture2      = texture2;
     PremulAlpha   = premulAlpha;
 }
 public ColorCorrectionMaterial(Blending blending)
 {
     Blending          = blending;
     shaderParams      = new ShaderParams();
     shaderParamsArray = new[] { Renderer.GlobalShaderParams, shaderParams };
     hslKey            = shaderParams.GetParamKey <Vector3>("inHsl");
     brightnessKey     = shaderParams.GetParamKey <float>("brightness");
     contrastKey       = shaderParams.GetParamKey <float>("contrast");
 }
Example #28
0
        public static BlendState GetBlendState(this Blending blending, bool alphaPremul = false)
        {
            var bs = BlendState.Default;

            switch (blending)
            {
            case Blending.Opaque:
                bs.SrcBlend = Blend.One;
                bs.DstBlend = Blend.Zero;
                break;

            case Blending.PremultipliedAlpha:
                bs.SrcBlend = Blend.One;
                bs.DstBlend = Blend.InverseSrcAlpha;
                break;

            case Blending.None:
            case Blending.Inherited:
            case Blending.Alpha:
                bs.SrcBlend = alphaPremul ? Blend.One : Blend.SrcAlpha;
                bs.DstBlend = Blend.InverseSrcAlpha;
                break;

            case Blending.LcdTextFirstPass:
                bs.SrcBlend = Blend.Zero;
                bs.DstBlend = Blend.InverseSrcColor;
                break;

            case Blending.LcdTextSecondPass:
                bs.SrcBlend = Blend.SrcAlpha;
                bs.DstBlend = Blend.One;
                break;

            case Blending.Add:
            case Blending.Glow:
                bs.SrcBlend = alphaPremul ? Blend.One : Blend.SrcAlpha;
                bs.DstBlend = Blend.One;
                break;

            case Blending.Burn:
            case Blending.Darken:
                bs.SrcBlend = Blend.DstColor;
                bs.DstBlend = Blend.InverseSrcAlpha;
                break;

            case Blending.Modulate:
                bs.SrcBlend = Blend.DstColor;
                bs.DstBlend = Blend.Zero;
                break;
            }
            if (PlatformRenderer.OffscreenRendering)
            {
                bs.AlphaSrcBlend = Blend.InverseDstAlpha;
                bs.AlphaDstBlend = Blend.One;
            }
            return(bs);
        }
 public void Apply(int pass)
 {
     shaderParams.Set(hslKey, HSL);
     shaderParams.Set(brightnessKey, Brightness);
     shaderParams.Set(contrastKey, Contrast);
     PlatformRenderer.SetBlendState(!Opaque ? Blending.GetBlendState() : disabledBlendingState);
     PlatformRenderer.SetShaderProgram(ColorCorrectionShaderProgram.GetInstance(RequiredBrightnessContrastProcess, RequiredHSLProcess, Opaque));
     PlatformRenderer.SetShaderParams(shaderParamsArray);
 }
Example #30
0
        public static WidgetMaterial GetInstance(Blending blending, ShaderId shader, ShaderProgram customShader = null, ITexture texture1 = null, ITexture texture2 = null, bool premulAlpha = false)
        {
            premulAlpha |= (blending == Blending.Burn || blending == Blending.Darken);
            var shaderProgram = shader == ShaderId.Custom ?
                                customShader :
                                ShaderPrograms.Instance.GetShaderProgram(shader, texture1, texture2,
                                                                         premulAlpha ? ShaderOptions.PremultiplyAlpha : ShaderOptions.None);

            return(GetInstance(blending, shaderProgram, texture1, texture2, premulAlpha));
        }
Example #31
0
		protected Entity(FightEngine engine)
			: base(engine)
		{
			m_draworder = 0;
			m_location = new Vector2(0, 0);
			m_velocity = new Vector2(0, 0);
			m_acceleration = new Vector2(0, 0);
			m_facing = Facing.Right;
			m_flip = SpriteEffects.None;
			m_scale = new Vector2(1, 1);
			m_blending = new Blending();
			m_afterimages = new AfterImage(this);
			m_drawingangle = 0;
		}
Example #32
0
		public virtual void Reset()
		{
			m_draworder = 0;
			m_location = new Vector2(0, 0);
			m_velocity = new Vector2(0, 0);
			m_acceleration = new Vector2(0, 0);
			m_facing = Facing.Right;
			m_flip = SpriteEffects.None;
			m_scale = new Vector2(1, 1);
			m_blending = new Blending();
			m_drawingangle = 0;
			m_angledraw = false;

			m_afterimages.Reset();
		}
Example #33
0
		/// <summary>
		/// Initializes a new instance of this class.
		/// </summary>
		/// <param name="id">The index of this element in the Animation.</param>
		/// <param name="clsns">The collection of collision boxes in this elements.</param>
		/// <param name="ticks">The time, in gameticks, that this element is drawn.</param>
		/// <param name="spriteid">The Sprite that is drawn for this element. SpriteId.Invalid for nothing to be drawn.</param>
		/// <param name="offset">The offset, in pixels, used to draw this element.</param>
		/// <param name="flip">The drawing orientation of this element.</param>
		/// <param name="blending">Alpha blending to be used while drawing this element.</param>
		public AnimationElement(Int32 id, List<Clsn> clsns, Int32 ticks, Int32 starttick, SpriteId spriteid, Point offset, SpriteEffects flip, Blending blending)
		{
			if (id < 0) throw new ArgumentOutOfRangeException("id");
			if (clsns == null) throw new ArgumentNullException("clsns");
			if (ticks < -1) throw new ArgumentOutOfRangeException("ticks");
			if (starttick < 0) throw new ArgumentOutOfRangeException("starttick");
			if (blending == null) throw new ArgumentNullException("blending");

			m_id = id;
			m_clsns = clsns;
			m_gameticks = ticks;
			m_spriteid = spriteid;
			m_offset = (Vector2)offset;
			m_flip = flip;
			m_blending = blending;
			m_starttick = starttick;
		}
Example #34
0
        public DrawState(VideoSystem videosystem)
        {
            if (videosystem == null) throw new ArgumentNullException("videosystem");

            m_videosystem = videosystem;
            m_mode = DrawMode.Normal;
            m_pixels = null;
            m_palette = null;
            m_scissorrect = Rectangle.Empty;
            m_blending = new Blending();
            m_drawdata = new List<DrawData>();
            m_scale = Vector2.One;
            m_axis = Vector2.Zero;
            m_flip = SpriteEffects.None;
            m_rotation = 0;
            m_offset = Vector2.Zero;
            m_stretch = Vector2.One;
            m_parameters = new ShaderParameters();
        }
Example #35
0
        private void ApplyBlending(Blending blending)
        {
            if (_renderState.Blending.Enabled != blending.Enabled)
            {
                Enable(EnableCap.Blend, blending.Enabled);
                _renderState.Blending.Enabled = blending.Enabled;
            }

            if (blending.Enabled)
            {
                if ((_renderState.Blending.SourceRGBFactor != blending.SourceRGBFactor) ||
                    (_renderState.Blending.DestinationRGBFactor != blending.DestinationRGBFactor) ||
                    (_renderState.Blending.SourceAlphaFactor != blending.SourceAlphaFactor) ||
                    (_renderState.Blending.DestinationAlphaFactor != blending.DestinationAlphaFactor))
                {
                    GL.BlendFuncSeparate(
                        TypeConverterGL3x.To(blending.SourceRGBFactor),
                        TypeConverterGL3x.To(blending.DestinationRGBFactor),
                        TypeConverterGL3x.To(blending.SourceAlphaFactor),
                        TypeConverterGL3x.To(blending.DestinationAlphaFactor));

                    _renderState.Blending.SourceRGBFactor = blending.SourceRGBFactor;
                    _renderState.Blending.DestinationRGBFactor = blending.DestinationRGBFactor;
                    _renderState.Blending.SourceAlphaFactor = blending.SourceAlphaFactor;
                    _renderState.Blending.DestinationAlphaFactor = blending.DestinationAlphaFactor;
                }

                if ((_renderState.Blending.RGBEquation != blending.RGBEquation) ||
                    (_renderState.Blending.AlphaEquation != blending.AlphaEquation))
                {
                    GL.BlendEquationSeparate(
                        TypeConverterGL3x.To(blending.RGBEquation),
                        TypeConverterGL3x.To(blending.AlphaEquation));

                    _renderState.Blending.RGBEquation = blending.RGBEquation;
                    _renderState.Blending.AlphaEquation = blending.AlphaEquation;
                }

                if (_renderState.Blending.Color != blending.Color)
                {
                    GL.BlendColor(blending.Color);
                    _renderState.Blending.Color = blending.Color;
                }
            }
        }
Example #36
0
        public override void Run(Combat.Character character)
        {
            Int32 time = EvaluationHelper.AsInt32(character, Time, 1);
            Int32 numberofframes = EvaluationHelper.AsInt32(character, NumberOfFrames, 20);
            Int32 basecolor = EvaluationHelper.AsInt32(character, PaletteColor, 255);
            Boolean invert = EvaluationHelper.AsBoolean(character, PaletteColorInversion, false);
            Vector3 palpreadd = EvaluationHelper.AsVector3(character, PaletteColorBrightness, new Vector3(30, 30, 30));
            Vector3 palcontrast = EvaluationHelper.AsVector3(character, PaletteColorContrast, new Vector3(255, 255, 255));
            Vector3 palpostadd = EvaluationHelper.AsVector3(character, PalettePostBrightness, new Vector3(0, 0, 0));
            Vector3 paladd = EvaluationHelper.AsVector3(character, PaletteColorAdd, new Vector3(10, 10, 25));
            Vector3 palmul = EvaluationHelper.AsVector3(character, PaletteColorMultiply, new Vector3(.65f, .65f, .75f));
            Int32 timegap = EvaluationHelper.AsInt32(character, TimeGap, 1);
            Int32 framegap = EvaluationHelper.AsInt32(character, FrameGap, 4);
            Point alpha = EvaluationHelper.AsPoint(character, Alpha, new Point(255, 0));

            Blending? trans = Transparency;
            if (trans != null && trans.Value.BlendType == BlendType.Add && trans.Value.SourceFactor == 0 && trans.Value.DestinationFactor == 0) trans = new Blending(BlendType.Add, alpha.X, alpha.Y);

            Combat.AfterImage afterimages = character.AfterImages;
            afterimages.Reset();
            afterimages.DisplayTime = time;
            afterimages.NumberOfFrames = numberofframes;
            afterimages.BaseColor = basecolor / 255.0f;
            afterimages.InvertColor = invert;
            afterimages.ColorPreAdd = Vector3.Clamp(palpreadd / 255.0f, Vector3.Zero, Vector3.One);
            afterimages.ColorContrast = Vector3.Clamp(palcontrast / 255.0f, Vector3.Zero, new Vector3(Single.MaxValue));
            afterimages.ColorPostAdd = Vector3.Clamp(palpostadd / 255.0f, Vector3.Zero, Vector3.One);
            afterimages.ColorPaletteAdd = Vector3.Clamp(paladd / 255.0f, Vector3.Zero, Vector3.One);
            afterimages.ColorPaletteMultiply = Vector3.Clamp(palmul, Vector3.Zero, new Vector3(Single.MaxValue));
            afterimages.TimeGap = timegap;
            afterimages.FrameGap = framegap;
            afterimages.Transparency = trans;
            afterimages.IsActive = true;
        }
Example #37
0
        public Explod(StateSystem statesystem, String label, TextSection textsection)
            : base(statesystem, label, textsection)
        {
            m_animationnumber = textsection.GetAttribute<Evaluation.PrefixedExpression>("anim", null);
            m_id = textsection.GetAttribute<Evaluation.Expression>("id", null);
            m_position = textsection.GetAttribute<Evaluation.Expression>("pos", null);
            m_postype = textsection.GetAttribute<PositionType>("postype", PositionType.P1);
            m_facing = textsection.GetAttribute<Evaluation.Expression>("facing", null);
            m_verticalfacing = textsection.GetAttribute<Evaluation.Expression>("vfacing", null);
            m_bindtime = textsection.GetAttribute<Evaluation.Expression>("BindTime", null);

            Evaluation.Expression exp_vel = textsection.GetAttribute<Evaluation.Expression>("vel", null);
            Evaluation.Expression exp_velocity = textsection.GetAttribute<Evaluation.Expression>("velocity", null);
            m_velocity = exp_vel ?? exp_velocity;

            m_acceleration = textsection.GetAttribute<Evaluation.Expression>("accel", null);
            m_randomdisplacement = textsection.GetAttribute<Evaluation.Expression>("random", null);
            m_removetime = textsection.GetAttribute<Evaluation.Expression>("removetime", null);
            m_supermove = textsection.GetAttribute<Evaluation.Expression>("supermove", null);
            m_supermovetime = textsection.GetAttribute<Evaluation.Expression>("supermovetime", null);
            m_pausemovetime = textsection.GetAttribute<Evaluation.Expression>("pausemovetime", null);
            m_scale = textsection.GetAttribute<Evaluation.Expression>("scale", null);
            m_spritepriority = textsection.GetAttribute<Evaluation.Expression>("sprpriority", null);
            m_drawontop = textsection.GetAttribute<Evaluation.Expression>("ontop", null);
            m_shadow = textsection.GetAttribute<Evaluation.Expression>("shadow", null);
            m_ownpalette = textsection.GetAttribute<Evaluation.Expression>("ownpal", null);
            m_removeongethit = textsection.GetAttribute<Evaluation.Expression>("removeongethit", null);
            m_explodignorehitpause = textsection.GetAttribute<Evaluation.Expression>("ignorehitpause", null);
            m_blending = textsection.GetAttribute<Blending>("trans", new Blending());
            m_alpha = textsection.GetAttribute<Evaluation.Expression>("alpha", null);
        }
Example #38
0
        Combat.ExplodData CreateExplodData(Combat.Character character)
        {
            if (character == null) throw new ArgumentNullException("character");

            Int32? animationnumber = EvaluationHelper.AsInt32(character, AnimationNumber, null);
            Int32 id = EvaluationHelper.AsInt32(character, Id, -1);
            Point location = EvaluationHelper.AsPoint(character, Position, new Point(0, 0));
            Int32 horizfacing = EvaluationHelper.AsInt32(character, Facing, 1);
            Int32 vertfacing = EvaluationHelper.AsInt32(character, VerticalFacing, 1);
            Int32 bindtime = EvaluationHelper.AsInt32(character, BindTime, 0);
            Vector2 velocity = EvaluationHelper.AsVector2(character, Velocity, new Vector2(0, 0));
            Vector2 acceleration = EvaluationHelper.AsVector2(character, Acceleration, new Vector2(0, 0));
            Point randomdisplacement = EvaluationHelper.AsPoint(character, RandomDisplacement, new Point(0, 0));
            Int32 removetime = EvaluationHelper.AsInt32(character, RemoveTime, -2);
            Boolean supermove = EvaluationHelper.AsBoolean(character, Supermove, false);
            Int32 supermovetime = EvaluationHelper.AsInt32(character, SupermoveTime, 0);
            Int32 pausetime = EvaluationHelper.AsInt32(character, PauseMoveTime, 0);
            Vector2 scale = EvaluationHelper.AsVector2(character, Scale, new Vector2(1, 1));
            Int32 spritepriority = EvaluationHelper.AsInt32(character, SpritePriority, 0);
            Boolean ontop = EvaluationHelper.AsBoolean(character, DrawOnTop, false);
            Boolean ownpalette = EvaluationHelper.AsBoolean(character, OwnPalette, false);
            Boolean removeongethit = EvaluationHelper.AsBoolean(character, RemoveOnGetHit, false);
            Boolean ignorehitpause = EvaluationHelper.AsBoolean(character, ExplodIgnoreHitPause, true);
            Point? alpha = EvaluationHelper.AsPoint(character, Alpha, null);

            if (animationnumber == null) return null;

            SpriteEffects flip = SpriteEffects.None;
            if (horizfacing == -1) flip ^= SpriteEffects.FlipHorizontally;
            if (vertfacing == -1) flip ^= SpriteEffects.FlipVertically;

            Blending transparency = Transparency;
            if (transparency.BlendType == BlendType.Add && transparency.SourceFactor == 0 && transparency.DestinationFactor == 0)
            {
                if (alpha != null)
                {
                    transparency = new Blending(BlendType.Add, alpha.Value.X, alpha.Value.Y);
                }
                else
                {
                    transparency = new Blending();
                }
            }

            Combat.ExplodData data = new Combat.ExplodData();
            data.CommonAnimation = EvaluationHelper.IsCommon(AnimationNumber, false);
            data.AnimationNumber = animationnumber.Value;
            data.Id = id;
            data.RemoveTime = removetime;
            data.Location = (Vector2)location;
            data.PositionType = PositionType;
            data.Velocity = velocity;
            data.Acceleration = acceleration;
            data.Flip = flip;
            data.BindTime = bindtime;
            data.Random = randomdisplacement;
            data.SuperMove = supermove;
            data.SuperMoveTime = supermovetime;
            data.PauseTime = pausetime;
            data.Scale = scale;
            data.SpritePriority = spritepriority;
            data.DrawOnTop = ontop;
            data.OwnPalFx = ownpalette;
            data.RemoveOnGetHit = removeongethit;
            data.IgnoreHitPause = ignorehitpause;
            data.Transparency = transparency;

            return data;
        }
Example #39
0
 public Projectile(StateSystem statesystem, String label, TextSection textsection)
     : base(statesystem, label, textsection)
 {
     m_priority = textsection.GetAttribute<Evaluation.Expression>("value", null);
     m_priority = textsection.GetAttribute<Evaluation.Expression>("value", null);
     m_projectileid = textsection.GetAttribute<Evaluation.Expression>("ProjID", null);
     m_animation = textsection.GetAttribute<Evaluation.Expression>("projanim", null);
     m_hitanimation = textsection.GetAttribute<Evaluation.Expression>("projhitanim", null);
     m_removeanimation = textsection.GetAttribute<Evaluation.Expression>("projremanim", null);
     m_cancelanimation = textsection.GetAttribute<Evaluation.Expression>("projcancelanim", null);
     m_scale = textsection.GetAttribute<Evaluation.Expression>("projscale", null);
     m_removeonhit = textsection.GetAttribute<Evaluation.Expression>("projremove", null);
     m_removetime = textsection.GetAttribute<Evaluation.Expression>("projremovetime", null);
     m_velocity = textsection.GetAttribute<Evaluation.Expression>("velocity", null);
     m_removevelocity = textsection.GetAttribute<Evaluation.Expression>("remvelocity", null);
     m_acceleration = textsection.GetAttribute<Evaluation.Expression>("accel", null);
     m_velocitymultiplier = textsection.GetAttribute<Evaluation.Expression>("velmul", null);
     m_hits = textsection.GetAttribute<Evaluation.Expression>("projhits", null);
     m_misstime = textsection.GetAttribute<Evaluation.Expression>("projmisstime", null);
     m_priority = textsection.GetAttribute<Evaluation.Expression>("projpriority", null);
     m_spritepriority = textsection.GetAttribute<Evaluation.Expression>("projsprpriority", null);
     m_edgebound = textsection.GetAttribute<Evaluation.Expression>("projedgebound", null);
     m_stagebound = textsection.GetAttribute<Evaluation.Expression>("projstagebound", null);
     m_heightbound = textsection.GetAttribute<Evaluation.Expression>("projheightbound", null);
     m_offset = textsection.GetAttribute<Evaluation.Expression>("offset", null);
     m_postype = textsection.GetAttribute<PositionType>("postype", PositionType.P1);
     m_shadow = textsection.GetAttribute<Evaluation.Expression>("projshadow", null);
     m_supermovetime = textsection.GetAttribute<Evaluation.Expression>("supermovetime", null);
     m_pausetime = textsection.GetAttribute<Evaluation.Expression>("pausemovetime", null);
     m_afterimagetime = textsection.GetAttribute<Evaluation.Expression>("afterimage.Time", null);
     m_afterimageframes = textsection.GetAttribute<Evaluation.Expression>("afterimage.length", null);
     m_afterimagecolor = textsection.GetAttribute<Evaluation.Expression>("afterimage.palcolor", null);
     m_afterimageinversion = textsection.GetAttribute<Evaluation.Expression>("afterimage.palinvertall", null);
     m_afterimageprebrightness = textsection.GetAttribute<Evaluation.Expression>("afterimage.palbright", null);
     m_afterimagecontrast = textsection.GetAttribute<Evaluation.Expression>("afterimage.palcontrast", null);
     m_afterimagepostbrightness = textsection.GetAttribute<Evaluation.Expression>("afterimage.palpostbright", null);
     m_afterimagecoloradd = textsection.GetAttribute<Evaluation.Expression>("afterimage.paladd", null);
     m_afterimagecolormul = textsection.GetAttribute<Evaluation.Expression>("afterimage.palmul", null);
     m_afterimagetimegap = textsection.GetAttribute<Evaluation.Expression>("afterimage.TimeGap", null);
     m_afterimageframegap = textsection.GetAttribute<Evaluation.Expression>("afterimage.FrameGap", null);
     m_afterimageblending = textsection.GetAttribute<Blending>("afterimage.trans", new Blending());
 }
Example #40
0
		/// <summary>
		/// Creates a new AnimationElement initialized from a line of text.
		/// </summary>
		/// <param name="line"></param>
		/// <param name="elementid"></param>
		/// <param name="default_clsn"></param>
		/// <param name="loading_clsn"></param>
		/// <returns></returns>
		AnimationElement CreateElement(String line, Int32 elementid, Int32 starttick, List<Clsn> default_type1, List<Clsn> default_type2, List<Clsn> loading_type1, List<Clsn> loading_type2)
		{
			if (line == null) throw new ArgumentNullException("line");
			if (elementid < 0) throw new ArgumentOutOfRangeException("elementid");
			if (starttick < 0) throw new ArgumentOutOfRangeException("starttick");
			if (default_type1 == null) throw new ArgumentNullException("default_type1");
			if (default_type2 == null) throw new ArgumentNullException("default_type2");
			if (loading_type1 == null) throw new ArgumentNullException("loading_type1");
			if (loading_type2 == null) throw new ArgumentNullException("loading_type2");

			String[] elements = m_elementregex.Split(line);
			if (elements == null) return null;

			Int32 groupnumber;
			if (Int32.TryParse(elements[0], out groupnumber) == false) return null;

			Int32 imagenumber;
			if (Int32.TryParse(elements[1], out imagenumber) == false) return null;

			Int32 offset_x;
			if (Int32.TryParse(elements[2], out offset_x) == false) return null;

			Int32 offset_y;
			if (Int32.TryParse(elements[3], out offset_y) == false) return null;

			Int32 gameticks;
			if (Int32.TryParse(elements[4], out gameticks) == false) return null;

			SpriteEffects flip = SpriteEffects.None;
			if (elements.Length >= 6)
			{
				if (elements[5].IndexOf('H') != -1 || elements[5].IndexOf('h') != -1) flip |= SpriteEffects.FlipHorizontally;
				if (elements[5].IndexOf('V') != -1 || elements[5].IndexOf('v') != -1) flip |= SpriteEffects.FlipVertically;
			}

			Blending blending = new Blending();
			if (elements.Length >= 7)
			{
				blending = m_animationsystem.GetSubSystem<StringConverter>().Convert<Blending>(elements[6]);
			}

			List<Clsn> clsn = new List<Clsn>();
			clsn.AddRange(loading_type1.Count != 0 ? loading_type1 : default_type1);
			clsn.AddRange(loading_type2.Count != 0 ? loading_type2 : default_type2);

			AnimationElement element = new AnimationElement(elementid, clsn, gameticks, starttick, new SpriteId(groupnumber, imagenumber), new Point(offset_x, offset_y), flip, blending);
			return element;
		}
Example #41
0
 public Trans(StateSystem statesystem, String label, TextSection textsection)
     : base(statesystem, label, textsection)
 {
     m_blending = textsection.GetAttribute<Blending>("trans", new Blending());
     m_alpha = textsection.GetAttribute<Evaluation.Expression>("alpha", null);
 }
Example #42
0
        public void Reset()
        {
            m_mode = DrawMode.Normal;
            m_pixels = null;
            m_palette = null;
            m_scissorrect = Rectangle.Empty;
            m_blending = new Blending();
            m_drawdata.Clear();
            m_scale = Vector2.One;
            m_axis = Vector2.Zero;
            m_flip = SpriteEffects.None;
            m_rotation = 0;
            m_offset = Vector2.Zero;
            m_stretch = Vector2.One;

            m_parameters.Reset();
        }
Example #43
0
		public override void CleanUp()
		{
			if (OffensiveInfo.HitPauseTime > 1)
			{
				InHitPause = true;
				--OffensiveInfo.HitPauseTime;
			}
			else
			{
				InHitPause = false;
				OffensiveInfo.HitPauseTime = 0;
			}

			if (InHitPause == false)
			{
				base.CleanUp();

				Transparency = new Blending();
				CameraFollowX = true;
				CameraFollowY = true;
				ScreenBound = true;
				PositionFreeze = false;
				Assertions.Reset();
				Dimensions.ClearOverride();
				DrawOffset = Vector2.Zero;
				PushFlag = false;
				DrawScale = Vector2.One;
				m_updatedanimation = false;

				DoFriction();
			}
		}
Example #44
0
        void SetBlending(Blending blending)
        {
            RenderState r = Device.RenderState;

            switch (blending.BlendType)
            {
                case BlendType.Add:
                    GetShaderParameter("xBlendWeight").SetValue((Single)blending.SourceFactor / 255.0f);

                    r.AlphaBlendEnable = true;
                    r.BlendFunction = BlendFunction.Add;
                    r.SourceBlend = Blend.SourceAlpha;
                    r.DestinationBlend = Blend.BlendFactor;
                    r.BlendFactor = new Color(blending.DestinationFactor, blending.DestinationFactor, blending.DestinationFactor, 255);
                    break;

                case BlendType.Subtract:
                    GetShaderParameter("xBlendWeight").SetValue((Single)blending.SourceFactor / 255.0f);

                    r.AlphaBlendEnable = true;
                    r.BlendFunction = BlendFunction.ReverseSubtract;
                    r.SourceBlend = Blend.SourceAlpha;
                    r.DestinationBlend = Blend.BlendFactor;
                    r.BlendFactor = new Color(blending.DestinationFactor, blending.DestinationFactor, blending.DestinationFactor, 255);
                    break;

                default:
                case BlendType.None:
                    GetShaderParameter("xBlendWeight").SetValue(1.0f);
                    r.AlphaBlendEnable = false;
                    break;
            }
        }