public Boolean ZBuffer; // Internally is a boolean #endregion Fields #region Constructors /// <summary>New default empty Effect Part</summary> public EffectPart() { EffectId = 0; TextureId = 0; Scale = 1; Asb = D3DBLEND.D3DBLEND_SRCALPHA; Adb = D3DBLEND.D3DBLEND_INVSRCALPHA; ZBuffer = false; Billboard = false; }
public static BlendingFactorDest ConvertToBlendingFactorDest(this D3DBLEND blend) { switch (blend) { case D3DBLEND.ZERO: return(BlendingFactorDest.Zero); case D3DBLEND.ONE: return(BlendingFactorDest.One); case D3DBLEND.SRCCOLOR: return(BlendingFactorDest.SrcColor); case D3DBLEND.INVSRCCOLOR: return(BlendingFactorDest.OneMinusSrcColor); case D3DBLEND.SRCALPHA: return(BlendingFactorDest.SrcAlpha); case D3DBLEND.INVSRCALPHA: return(BlendingFactorDest.OneMinusSrcAlpha); case D3DBLEND.DESTALPHA: return(BlendingFactorDest.DstAlpha); case D3DBLEND.INVDESTALPHA: return(BlendingFactorDest.OneMinusDstAlpha); case D3DBLEND.DESTCOLOR: return(BlendingFactorDest.DstColor); case D3DBLEND.INVDESTCOLOR: return(BlendingFactorDest.OneMinusDstColor); case D3DBLEND.SRCALPHASAT: return(BlendingFactorDest.SrcAlphaSaturate); case D3DBLEND.CONSTANTCOLOR: return(BlendingFactorDest.ConstantColor); case D3DBLEND.INVCONSTANTCOLOR: return(BlendingFactorDest.OneMinusConstantColor); case D3DBLEND.CONSTANTALPHA: return(BlendingFactorDest.ConstantAlpha); case D3DBLEND.INVCONSTANTALPHA: return(BlendingFactorDest.OneMinusConstantAlpha); default: throw new ArgumentOutOfRangeException(nameof(blend), blend, null); } }
/// <summary>New Effect Part from provided fields, all fields /// but Billboard is optional</summary> /// <param name="E">Effect Id, in 3DEffectObj.ini</param> /// <param name="T">Texture Id, in 3DTexture.ini</param> /// <param name="S">Scale, 1 (100%) means no scaling</param> /// <param name="As">Asb, Alpha Source Blending mode /// <seealso cref="D3DBLEND">check possible options</seealso></param> /// <param name="Ad">Adb, Alpha Destination Blending mode /// <seealso cref="D3DBLEND">check possible options</seealso></param> /// <param name="Z">Rendering occupy space, default false(0)</param> /// <param name="B">Optional, Billboard type, default false (0)</param> public EffectPart(UInt32 E, UInt32 T, float S, D3DBLEND As, D3DBLEND Ad, Boolean Z, Boolean B = false) { EffectId = E; TextureId = T; Scale = S; Asb = As; Adb = Ad; ZBuffer = Z; Billboard = B; }
/// <summary>Read Effect Part from string array, as in ini files /// <remarks>Does not check if correct format</remarks></summary> /// <param name="str">Array of strings, one for each line</param> /// <param name="i">Optional, Array index to start reading from /// by default is zero</param> /// <returns>next index to read</returns> public int ReadFromArray(String[] str, int i = 0) { int j = str.Length; Scale = 100; ZBuffer = false; Billboard = false; if (i < j && str[i].StartsWith("EffectId")) { EffectId = UInt32.Parse(str[i].Split('=')[1]); i++; } if (i < j && str[i].StartsWith("TextureId")) { TextureId = UInt32.Parse(str[i].Split('=')[1]); i++; } if (i < j && str[i].StartsWith("Scale")) { Scale = float.Parse(str[i].Split('=')[1]) / 100; i++; } if (i < j && str[i].StartsWith("ASB")) { Asb = (D3DBLEND)Byte.Parse(str[i].Split('=')[1]); i++; } if (i < j && str[i].StartsWith("ADB")) { Adb = (D3DBLEND)Byte.Parse(str[i].Split('=')[1]); i++; } if (i < j && str[i].StartsWith("ZBuffer")) { ZBuffer = (Byte.Parse(str[i].Split('=')[1]) != 0); i++; } if (i < j && str[i].StartsWith("Billboard")) { Billboard = (Byte.Parse(str[i].Split('=')[1]) != 0); i++; } return i; }
/// <summary>New Effect Part from byte array, as in dbc Effe file</summary> /// <param name="buffer">16 bytes of data read from binary dbc file</param> public EffectPart(Byte[] buffer) { // Effe dbc binary files always uses fixed length structure if (buffer.Length < 16) { new EffectPart(); } else { EffectId = BitConverter.ToUInt32(buffer, 0); TextureId = BitConverter.ToUInt32(buffer, 4); Scale = BitConverter.ToSingle(buffer, 8); Asb = (D3DBLEND)buffer[12]; Adb = (D3DBLEND)buffer[13]; ZBuffer = (buffer[14] != 0); Billboard = (buffer[15] != 0); } }
/// <summary>New Effect Part from provided fields, all fields /// except Scale (1 -> 100% by default) and ZBuffer as false (0), /// and Billboard is optional, as default = false (0)</summary> /// <param name="E">Effect Id, in 3DEffectObj.ini</param> /// <param name="T">Texture Id, in 3DTexture.ini</param> /// <param name="As">Asb, Alpha Source Blending mode /// <seealso cref="D3DBLEND">check possible options</seealso></param> /// <param name="Ad">Adb, Alpha Destination Blending mode /// <seealso cref="D3DBLEND">check possible options</seealso></param> /// <param name="B">Optional, Billboard type, default false (0)</param> public EffectPart(UInt32 E, UInt32 T, D3DBLEND As, D3DBLEND Ad, Boolean B = false) { new EffectPart(E, T, 1, As, Ad, false, B); }
public static BlendingFactorSrc ConvertToBlendingFactorSrc(this D3DBLEND blend) { return(( BlendingFactorSrc )blend.ConvertToBlendingFactorDest( )); }