Ejemplo n.º 1
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="app"></param>
        /// <param name="ide"></param>
        /// <param name="name"></param>
        public DEMapChip(Application app, InitDrawingEffect ide, string name) : base(app)
        {
            // このクラスを表すID
            //SetID(CDEDefaultID);
            // 一意なエフェクト名
            m_name = name;

            m_hDEInit = ide;

            // レンダー呼び出し回数
            CallRenderCount = 1;
            // 単体描画をする
            IsSimpleProcess = false;
            // スプライトフラグ
            IsSpriteExclusive = true;

            m_isCreated = false;
        }
        /// <summary>
        /// デバイス作成時の処理
        /// </summary>
        /// <param name="device"></param>
        /// <returns></returns>
        public int OnCreateDevice(SharpDX.Direct3D11.Device device)
        {
            int hr = 0;

            if (!IsOnCreate)
            {
                IsOnCreate = true;

                int idx;

                // スプライト

                AddSpriteDrawCommandIdToUse((int)DCRL.DEFAULT);
                AddSpriteDrawCommandIdToUse((int)DCRL.DEF_SPRITE);
                AddSpriteDrawCommandIdToUse((int)DCRL.CONST_SPRITE);
                SetDefaultSpriteDrawCommandId((int)DCRL.D2S_CONST);


                AddSpriteTechnicIdToUse((int)EffectID.Default);
                AddSpriteTechnicIdToUse((int)EffectID.Mosaic);
                AddSpriteTechnicIdToUse((int)EffectID.Gray);
                AddSpriteTechnicIdToUse((int)EffectID.HSV);
                AddSpriteTechnicIdToUse((int)EffectID.GradationMap);
                AddSpriteTechnicIdToUse((int)EffectID.ZoomBloom);
                AddSpriteTechnicIdToUse((int)EffectID.DirectionalBloom);
                AddSpriteTechnicIdToUse((int)EffectID.VelocityBloom);
                AddSpriteTechnicIdToUse((int)EffectID.Ripple);
                AddSpriteTechnicIdToUse((int)EffectID.DisolveTransition);
                AddSpriteTechnicIdToUse((int)EffectID.RadialBlurTransition);
                AddSpriteTechnicIdToUse((int)EffectID.ContrastAdjust);
                SetDefaultSpriteTechnicId((int)EffectID.Default);


                //=====================
                // 0000:初期化
                //=====================
                var hDEI = new InitDrawingEffect(App, "main");
                idx = RegisterDrawEffect((int)DCRL.INIT, hDEI);
                if (-1 == idx)
                {
                    throw new Exception("InitDrawingEffect('main')登録に失敗");
                }
                // effect cnt 1

                //=====================
                // Mapchip関係
                //=====================
                //string[] aCDEMapChipName = new string[]
                //{
                //    "mc_back_tx",
                //    "mc_map_tx00",
                //    "mc_map_tx01",
                //    "mc_front_tx"
                //};
                //DCRL[] aCDEMapChipNo = new DCRL[]
                //{
                //    DCRL.BACK_TX,
                //    DCRL.MCHIP_TX0,
                //    DCRL.MCHIP_TX1,
                //    DCRL.FRONT_TX
                //};
                //for (int i = 0; i < 4; ++i)
                //{
                //    idx = RegisterDrawEffect((int)aCDEMapChipNo[i], new DEMapChip(App, hDEI, aCDEMapChipName[i]));
                //    if (-1 == idx)
                //        throw new Exception("CDEMapChip('" + aCDEMapChipName[i] + "')登録に失敗");
                //}
                //// effect cnt 5

                //=====================
                // レイヤーごとのスプライト
                //=====================
                //string[] a2DSName = new string[]
                //{
                //    "mc_2d_def00",
                //    "mc_2d_def01",
                //    "mc_2d_def02",
                //    "mc_2d_def03",
                //    "mc_2d_def04"
                //};
                //DCRL[] a2DS = new DCRL[]
                //{
                //    DCRL.D2S_DEF00,
                //    DCRL.D2S_DEF01,
                //    DCRL.D2S_DEF02,
                //    DCRL.D2S_DEF03,
                //    DCRL.D2S_DEF04
                //};
                //for (int i = 0; i < 5; ++i)
                //{
                //    idx = RegisterDrawEffect((int)a2DS[i], new DE2DScreenSprite(App, (int)a2DS[i], a2DSName[i]));
                //    if (-1 == idx)
                //        throw new Exception("CDE2DScreenSprite('" + a2DS[i] + "')登録に失敗");
                //}
                // effect cnt 10

                //=====================
                // 通常
                //=====================
                idx = RegisterDrawEffect((int)DCRL.DEFAULT, new DEDefault(App, "mc_default"));
                if (-1 == idx)
                {
                    throw new Exception("エフェクト登録エラー:CDEDefault('mc_default')登録に失敗");
                }
                // effect cnt 12


                //=====================
                // スプライト
                //=====================
                idx = RegisterDrawEffect((int)DCRL.DEF_SPRITE, new DEDefaultSprite(App, "mc_def_sprite"));
                if (-1 == idx)
                {
                    throw new Exception("エフェクト登録エラー:CDEDefSprite('mc_def_sprite')登録に失敗");
                }
                // effect cnt 15

                //=====================
                // 位置が固定のスプライト
                //=====================
                idx = RegisterDrawEffect((int)DCRL.CONST_SPRITE, new DEDefaultSprite(App, "mc_const_sprite", true));
                if (-1 == idx)
                {
                    throw new Exception("エフェクト登録エラー:CDEDefSprite('mc_const_sprite')登録に失敗");
                }
                // effect cnt 16


                // プライオリティーのチェック
                if (m_drawEffect.Count == 0)
                {
                    throw new Exception("一つもRegisterDrawEffectが作られていません。");
                }

                //bool isErr = false;
                //string regList = "RegisterDrawEffectを連番で登録していません。\n";

                //foreach (var val in m_tmpDrawEffect)
                //{
                //    regList += "No." + val.Key + " ClassID:[" + val.Value.GetID() + "] Name:" + val.Value;
                //    if ((DCRL)cnt++ != val.Key)
                //        isErr = true;
                //    m_drawEffect.Add(val.Value);
                //    regList += "\n";
                //}

                //--------------------------------
                foreach (var val in m_drawEffect)
                {
                    hr = val.Value.OnCreateDevice(device);
                    if (hr != 0)
                    {
                        throw new Exception("m_drawEffect.OnCreateDevice 内部でエラー発生");
                    }
                }
            }
            return(hr);
        }