예제 #1
0
        protected override void OnStart()
        {
            var scene = new asd.Scene();
            var layer = new asd.Layer2D();
            var obj = new asd.TextureObject2D();
            scene.AddLayer(layer);
            layer.AddObject(obj);
            asd.Engine.ChangeScene(scene);

            var g = asd.Engine.Graphics;
            var texture = g.CreateTexture2D("Data/Texture/Sample1.png");
            obj.Texture = texture;
            obj.Scale = new asd.Vector2DF(1, 1);

            pe = new asd.PostEffectGaussianBlur();
            pe.Intensity = intensity;
            layer.AddPostEffect(pe);
        }
예제 #2
0
        protected override void OnStart()
        {
            var scene = new asd.Scene();
            var layer = new asd.Layer2D();
            var obj   = new asd.TextureObject2D();

            scene.AddLayer(layer);
            layer.AddObject(obj);
            asd.Engine.ChangeScene(scene);

            var g       = asd.Engine.Graphics;
            var texture = g.CreateTexture2D("Data/Texture/Sample1.png");

            obj.Texture = texture;
            obj.Scale   = new asd.Vector2DF(1, 1);

            pe           = new asd.PostEffectGaussianBlur();
            pe.Intensity = intensity;
            layer.AddPostEffect(pe);
        }
예제 #3
0
        public void Run()
        {
            // 説明
            Console.WriteLine("Z : グレースケール追加");
            Console.WriteLine("X : セピア調追加");
            Console.WriteLine("C : ガウスぼかし追加");
            Console.WriteLine("V : ライトブルーム追加");
            Console.WriteLine("A : 全てのポストエフェクト消去");

            // aceを初期化する
            asd.Engine.Initialize("PostEffect", 640, 480, new asd.EngineOption());

            // シーン等を初期化する
            var scene = new asd.Scene();
            var layer = new asd.Layer2D();
            var effectObj = new asd.EffectObject2D();
            var effect = asd.Engine.Graphics.CreateEffect("Data/Effect/magic.efk");

            scene.HDRMode = true; ;
            scene.AddLayer(layer);
            layer.AddObject(effectObj);
            asd.Engine.ChangeScene(scene);

            effectObj.Scale = new asd.Vector2DF(50, 50);
            effectObj.Position = new asd.Vector2DF(320, 240);
            effectObj.Effect = effect;
            effectObj.Play();

            // aceが進行可能かチェックする。
            while (asd.Engine.DoEvents())
            {
                // aceを更新する。
                asd.Engine.Update();

                // Aを押したらポストエフェクトを全て破棄する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.A) == asd.KeyState.Push)
                {
                    layer.ClearPostEffects();
                }

                // Zを押したらグレースケールを追加する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.Z) == asd.KeyState.Push)
                {
                    var posteffect = new asd.PostEffectGrayScale();
                    layer.AddPostEffect(posteffect);
                }

                // Xを押したらセピアを追加する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.X) == asd.KeyState.Push)
                {
                    var posteffect = new asd.PostEffectSepia();
                    layer.AddPostEffect(posteffect);
                }

                // Cを押したらガウスぼかしを追加する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.C) == asd.KeyState.Push)
                {
                    var posteffect = new asd.PostEffectGaussianBlur();
                    posteffect.Intensity = 5.0f;
                    layer.AddPostEffect(posteffect);
                }

                // Vを押したらライトブルームを追加する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.V) == asd.KeyState.Push)
                {
                    var posteffect = new asd.PostEffectLightBloom();
                    posteffect.Intensity = 10.0f;
                    posteffect.Exposure = 1.0f;
                    posteffect.Threshold = 0.3f;
                    layer.AddPostEffect(posteffect);
                }
            }

            // aceを終了する。
            asd.Engine.Terminate();
        }
예제 #4
0
        public void Run()
        {
            // 説明
            Console.WriteLine("Z : グレースケール追加");
            Console.WriteLine("X : セピア調追加");
            Console.WriteLine("C : ガウスぼかし追加");
            Console.WriteLine("V : ライトブルーム追加");
            Console.WriteLine("A : 全てのポストエフェクト消去");

            // aceを初期化する
            asd.Engine.Initialize("PostEffect", 640, 480, new asd.EngineOption());

            // シーン等を初期化する
            var scene     = new asd.Scene();
            var layer     = new asd.Layer2D();
            var effectObj = new asd.EffectObject2D();
            var effect    = asd.Engine.Graphics.CreateEffect("Data/Effect/magic.efk");

            scene.HDRMode = true;;
            scene.AddLayer(layer);
            layer.AddObject(effectObj);
            asd.Engine.ChangeScene(scene);

            effectObj.Scale    = new asd.Vector2DF(50, 50);
            effectObj.Position = new asd.Vector2DF(320, 240);
            effectObj.Effect   = effect;
            effectObj.Play();

            // aceが進行可能かチェックする。
            while (asd.Engine.DoEvents())
            {
                // aceを更新する。
                asd.Engine.Update();

                // Aを押したらポストエフェクトを全て破棄する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.A) == asd.KeyState.Push)
                {
                    layer.ClearPostEffects();
                }

                // Zを押したらグレースケールを追加する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.Z) == asd.KeyState.Push)
                {
                    var posteffect = new asd.PostEffectGrayScale();
                    layer.AddPostEffect(posteffect);
                }

                // Xを押したらセピアを追加する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.X) == asd.KeyState.Push)
                {
                    var posteffect = new asd.PostEffectSepia();
                    layer.AddPostEffect(posteffect);
                }

                // Cを押したらガウスぼかしを追加する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.C) == asd.KeyState.Push)
                {
                    var posteffect = new asd.PostEffectGaussianBlur();
                    posteffect.Intensity = 5.0f;
                    layer.AddPostEffect(posteffect);
                }

                // Vを押したらライトブルームを追加する。
                if (asd.Engine.Keyboard.GetKeyState(asd.Keys.V) == asd.KeyState.Push)
                {
                    var posteffect = new asd.PostEffectLightBloom();
                    posteffect.Intensity = 10.0f;
                    posteffect.Exposure  = 1.0f;
                    posteffect.Threshold = 0.3f;
                    layer.AddPostEffect(posteffect);
                }
            }

            // aceを終了する。
            asd.Engine.Terminate();
        }
예제 #5
0
        public IEnumerator Save()
        {
            IsActive            = true;
            Layer.Scene.HDRMode = true;
            foreach (var item in Layer.Objects.Where(obj => obj != this && !(obj is MapEvent.MapEvent)))
            {
                item.IsUpdated = false;
            }
            var blur = new asd.PostEffectGaussianBlur();

            Layer.AddPostEffect(blur);
            foreach (Player item in Layer.Objects.Where(obj => obj is Player))
            {
                item.HP = Player.MaxHP;
            }

            for (int i = 0; i < 20; i++)
            {
                yield return(0);
            }

            YesNoLayer2D askSave = new YesNoLayer2D("セーブする?");

            askSave.DrawingPriority = 3;
            Layer.Scene.AddLayer(askSave);
            askSave.IsUpdated = false;

            for (int i = 0; i < 15; i++)
            {
                blur.Intensity = i * 0.2f;
                foreach (asd.DrawnObject2D item in askSave.Objects)
                {
                    item.Color = new asd.Color(255, 255, 255, (int)(255f * i / 15));
                }
                yield return(0);
            }
            askSave.IsUpdated = true;

            while (!askSave.IsEnd)
            {
                yield return(0);
            }

            for (int i = 0; i < 15; i++)
            {
                foreach (asd.DrawnObject2D item in askSave.Objects)
                {
                    item.Color = new asd.Color(255, 255, 255, (int)(255f - 255f * i / 15));
                }
                yield return(0);
            }

            if (askSave.IsYes)
            {
                askSave.Dispose();

                SaveLayer2D save = new SaveLayer2D(ID);
                save.DrawingPriority = 3;
                Layer.Scene.AddLayer(save);
                save.IsUpdated = false;

                for (int i = 0; i < 15; i++)
                {
                    foreach (asd.DrawnObject2D item in save.Objects)
                    {
                        var temp = item.Color;
                        temp.A     = (byte)(255f * i / 15);
                        item.Color = temp;
                    }
                    yield return(0);
                }
                save.IsUpdated = true;

                while (!save.IsEnd)
                {
                    yield return(0);
                }

                for (int i = 0; i < 15; i++)
                {
                    foreach (asd.DrawnObject2D item in save.Objects)
                    {
                        item.Color = new asd.Color(255, 255, 255, (int)(255f - 255f * i / 15));
                    }
                    yield return(0);
                }

                save.Dispose();

                YesNoLayer2D askEnd = new YesNoLayer2D("タイトルに戻る?");
                askEnd.DrawingPriority = 3;
                Layer.Scene.AddLayer(askEnd);
                askEnd.IsUpdated = false;

                for (int i = 0; i < 15; i++)
                {
                    foreach (asd.DrawnObject2D item in askEnd.Objects)
                    {
                        item.Color = new asd.Color(255, 255, 255, (int)(255f * i / 15));
                    }
                    yield return(0);
                }
                askEnd.IsUpdated = true;

                while (!askEnd.IsEnd)
                {
                    yield return(0);
                }

                if (askEnd.IsYes)
                {
                    (Layer.Scene as GameScene)?.End();
                }

                for (int i = 0; i < 15; i++)
                {
                    blur.Intensity = 3f - i * 0.2f;
                    foreach (asd.DrawnObject2D item in askEnd.Objects)
                    {
                        item.Color = new asd.Color(255, 255, 255, (int)(255f - 255f * i / 15));
                    }
                    yield return(0);
                }

                askEnd.Dispose();
            }
            else
            {
                askSave.Dispose();
                for (int i = 0; i < 15; i++)
                {
                    blur.Intensity = 3f - i * 0.2f;
                    yield return(0);
                }
            }

            foreach (var item in Layer.Objects.Where(obj => !(obj is MapEvent.MapEvent)))
            {
                item.IsUpdated = true;
            }
            Layer.ClearPostEffects();
            IsActive            = false;
            Layer.Scene.HDRMode = false;
            yield return(0);
        }