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(); }
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(); }