Пример #1
0
        public override void Initialize()
        {
            base.Initialize();

            Screen.SetSize(1280, 720);

            // render layer for all lights and any emissive Sprites
            var lightRenderLayer = 5;

            ClearColor = Color.White;

            // create a Renderer that renders all but the light layer and screen space layer
            AddRenderer(new RenderLayerExcludeRenderer(0, lightRenderLayer, ScreenSpaceRenderLayer));

            // create a Renderer that renders only the light layer into a render target
            var lightRenderer = AddRenderer(new RenderLayerRenderer(-1, lightRenderLayer));

            lightRenderer.RenderTargetClearColor = new Color(10, 10, 10, 255);
            lightRenderer.RenderTexture          = new RenderTexture();

            // add a PostProcessor that renders the light render target and blurs it
            AddPostProcessor(new PolyLightPostProcessor(0, lightRenderer.RenderTexture))
            .SetEnableBlur(true)
            .SetBlurAmount(0.5f);

            var lightTexture     = Content.LoadTexture(Nez.Content.Shadows.Spritelight);
            var moonTexture      = Content.LoadTexture(Nez.Content.Shared.Moon);
            var blockTexture     = Content.LoadTexture(Nez.Content.Shadows.Block);
            var blockGlowTexture = Content.LoadTexture(Nez.Content.Shadows.BlockGlow);

            // create some boxes
            Action <Vector2, string, bool> boxMaker = (Vector2 pos, string name, bool isTrigger) =>
            {
                var ent = CreateEntity(name);
                ent.Position = pos;
                ent.AddComponent(new SpriteRenderer(blockTexture));
                var collider = ent.AddComponent <BoxCollider>();

                // add a glow sprite on the light render layer
                var glowSprite = new SpriteRenderer(blockGlowTexture);
                glowSprite.RenderLayer = lightRenderLayer;
                ent.AddComponent(glowSprite);

                if (isTrigger)
                {
                    collider.IsTrigger = true;
                    ent.AddComponent(new TriggerListener());
                }
            };

            boxMaker(new Vector2(0, 100), "box0", false);
            boxMaker(new Vector2(150, 100), "box1", false);
            boxMaker(new Vector2(300, 100), "box2", false);
            boxMaker(new Vector2(450, 100), "box3", false);
            boxMaker(new Vector2(600, 100), "box4", false);

            boxMaker(new Vector2(50, 500), "box5", true);
            boxMaker(new Vector2(500, 250), "box6", false);

            var moonEnt = CreateEntity("moon");

            moonEnt.AddComponent(new SpriteRenderer(moonTexture));
            moonEnt.Position = new Vector2(100, 0);

            moonEnt = CreateEntity("moon2");
            moonEnt.AddComponent(new SpriteRenderer(moonTexture));
            moonEnt.Position = new Vector2(-500, 0);


            var lightEnt = CreateEntity("sprite-light");

            lightEnt.AddComponent(new SpriteRenderer(lightTexture));
            lightEnt.Position = new Vector2(-700, 0);
            lightEnt.Scale    = new Vector2(4);
            lightEnt.GetComponent <SpriteRenderer>().RenderLayer = lightRenderLayer;


            // add an animation to "box4"
            FindEntity("box4").AddComponent(new MovingPlatform(250, 400));

            // create a player block
            var entity = CreateEntity("player-block");

            entity.SetPosition(new Vector2(220, 220))
            .AddComponent(new SpriteRenderer(blockTexture).SetRenderLayer(lightRenderLayer))
            .AddComponent(new SimpleMover())
            .AddComponent <BoxCollider>();


            // add a follow camera
            Camera.Entity.AddComponent(new FollowCamera(entity));
            Camera.Entity.AddComponent(new CameraShake());


            // setup some lights and animate the colors
            var pointLight = new PolyLight(600, Color.Red);

            pointLight.RenderLayer = lightRenderLayer;
            pointLight.Power       = 1f;

            var light = CreateEntity("light");

            light.SetPosition(new Vector2(700f, 300f))
            .AddComponent(pointLight);

            pointLight.TweenColorTo(new Color(0, 0, 255, 255), 1f)
            .SetEaseType(EaseType.Linear)
            .SetLoops(LoopType.PingPong, 100)
            .Start();

            PropertyTweens.FloatPropertyTo(pointLight, "Power", 0.1f, 1f)
            .SetEaseType(EaseType.Linear)
            .SetLoops(LoopType.PingPong, 100)
            .Start();


            pointLight             = new PolyLight(500, Color.Yellow);
            pointLight.RenderLayer = lightRenderLayer;
            light          = CreateEntity("light-two");
            light.Position = new Vector2(-50f);
            light.AddComponent(pointLight);

            pointLight.TweenColorTo(new Color(0, 255, 0, 255), 1f)
            .SetEaseType(EaseType.Linear)
            .SetLoops(LoopType.PingPong, 100)
            .Start();


            pointLight             = new PolyLight(500, Color.AliceBlue);
            pointLight.RenderLayer = lightRenderLayer;
            light          = CreateEntity("light-three");
            light.Position = new Vector2(100, 250);
            light.AddComponent(pointLight);

            pointLight.TweenColorTo(new Color(200, 100, 155, 255), 1f)
            .SetEaseType(EaseType.QuadIn)
            .SetLoops(LoopType.PingPong, 100)
            .Start();
        }
Пример #2
0
        public override void initialize()
        {
            base.initialize();

            Screen.setSize(1280, 720);

            // render layer for all lights and any emissive Sprites
            var LIGHT_RENDER_LAYER = 5;

            clearColor = Color.White;

            // create a Renderer that renders all but the light layer and screen space layer
            addRenderer(new RenderLayerExcludeRenderer(0, LIGHT_RENDER_LAYER, SCREEN_SPACE_RENDER_LAYER));

            // create a Renderer that renders only the light layer into a render target
            var lightRenderer = addRenderer(new RenderLayerRenderer(-1, LIGHT_RENDER_LAYER));

            lightRenderer.renderTargetClearColor = new Color(10, 10, 10, 255);
            lightRenderer.renderTexture          = new RenderTexture();

            // add a PostProcessor that renders the light render target and blurs it
            addPostProcessor(new PolyLightPostProcessor(0, lightRenderer.renderTexture))
            .setEnableBlur(true)
            .setBlurAmount(0.5f);

            var lightTexture     = content.Load <Texture2D>(Content.Shadows.spritelight);
            var moonTexture      = content.Load <Texture2D>(Content.Shared.moon);
            var blockTexture     = content.Load <Texture2D>(Content.Shadows.block);
            var blockGlowTexture = content.Load <Texture2D>(Content.Shadows.blockGlow);

            // create some boxes
            Action <Vector2, string, bool> boxMaker = (Vector2 pos, string name, bool isTrigger) =>
            {
                var ent = createEntity(name);
                ent.position = pos;
                ent.addComponent(new Sprite(blockTexture));
                var collider = ent.addComponent <BoxCollider>();

                // add a glow sprite on the light render layer
                var glowSprite = new Sprite(blockGlowTexture);
                glowSprite.renderLayer = LIGHT_RENDER_LAYER;
                ent.addComponent(glowSprite);

                if (isTrigger)
                {
                    collider.isTrigger = true;
                    ent.addComponent(new TriggerListener());
                }
            };

            boxMaker(new Vector2(0, 100), "box0", false);
            boxMaker(new Vector2(150, 100), "box1", false);
            boxMaker(new Vector2(300, 100), "box2", false);
            boxMaker(new Vector2(450, 100), "box3", false);
            boxMaker(new Vector2(600, 100), "box4", false);

            boxMaker(new Vector2(50, 500), "box5", true);
            boxMaker(new Vector2(500, 250), "box6", false);

            var moonEnt = createEntity("moon");

            moonEnt.addComponent(new Sprite(moonTexture));
            moonEnt.position = new Vector2(100, 0);

            moonEnt = createEntity("moon2");
            moonEnt.addComponent(new Sprite(moonTexture));
            moonEnt.position = new Vector2(-500, 0);


            var lightEnt = createEntity("sprite-light");

            lightEnt.addComponent(new Sprite(lightTexture));
            lightEnt.position = new Vector2(-700, 0);
            lightEnt.scale    = new Vector2(4);
            lightEnt.getComponent <Sprite>().renderLayer = LIGHT_RENDER_LAYER;


            // add an animation to "box4"
            findEntity("box4").addComponent(new MovingPlatform(250, 400));

            // create a player block
            var entity = createEntity("player-block");

            entity.position = new Vector2(220, 220);
            var sprite = new Sprite(blockTexture);

            sprite.renderLayer = LIGHT_RENDER_LAYER;
            entity.addComponent(sprite);
            entity.addComponent(new SimpleMover());
            entity.addComponent <BoxCollider>();


            // add a follow camera
            camera.entity.addComponent(new FollowCamera(entity));
            camera.entity.addComponent(new CameraShake());


            // setup some lights and animate the colors
            var pointLight = new PolyLight(600, Color.Red);

            pointLight.renderLayer = LIGHT_RENDER_LAYER;
            pointLight.power       = 1f;
            var light = createEntity("light");

            light.position = new Vector2(700f, 300f);
            light.addComponent(pointLight);

            pointLight.tweenColorTo(new Color(0, 0, 255, 255), 1f)
            .setEaseType(EaseType.Linear)
            .setLoops(LoopType.PingPong, 100)
            .start();

            PropertyTweens.floatPropertyTo(pointLight, "power", 0.1f, 1f)
            .setEaseType(EaseType.Linear)
            .setLoops(LoopType.PingPong, 100)
            .start();


            pointLight             = new PolyLight(500, Color.Yellow);
            pointLight.renderLayer = LIGHT_RENDER_LAYER;
            light          = createEntity("light-two");
            light.position = new Vector2(-50f);
            light.addComponent(pointLight);

            pointLight.tweenColorTo(new Color(0, 255, 0, 255), 1f)
            .setEaseType(EaseType.Linear)
            .setLoops(LoopType.PingPong, 100)
            .start();


            pointLight             = new PolyLight(500, Color.AliceBlue);
            pointLight.renderLayer = LIGHT_RENDER_LAYER;
            light          = createEntity("light-three");
            light.position = new Vector2(100, 250);
            light.addComponent(pointLight);

            pointLight.tweenColorTo(new Color(200, 100, 155, 255), 1f)
            .setEaseType(EaseType.QuadIn)
            .setLoops(LoopType.PingPong, 100)
            .start();
        }