コード例 #1
0
ファイル: EffectPart.cs プロジェクト: urgabel/HoMMol
        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;
        }
コード例 #2
0
ファイル: Extensions.cs プロジェクト: mksbamford/Moonfxsh
        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);
            }
        }
コード例 #3
0
ファイル: EffectPart.cs プロジェクト: urgabel/HoMMol
 /// <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;
 }
コード例 #4
0
ファイル: EffectPart.cs プロジェクト: urgabel/HoMMol
 /// <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;
 }
コード例 #5
0
ファイル: EffectPart.cs プロジェクト: urgabel/HoMMol
 /// <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);
     }
 }
コード例 #6
0
ファイル: EffectPart.cs プロジェクト: urgabel/HoMMol
 /// <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);
 }
コード例 #7
0
ファイル: Extensions.cs プロジェクト: mksbamford/Moonfxsh
 public static BlendingFactorSrc ConvertToBlendingFactorSrc(this D3DBLEND blend)
 {
     return(( BlendingFactorSrc )blend.ConvertToBlendingFactorDest( ));
 }