protected CutsceneEntity CreateEntity(string modelPath) { var entity = new CutsceneEntity(Model.Get(modelPath), RenderPass.Opaque); Level.Entities.Add(entity); return(entity); }
protected override void OnReveal() { base.OnReveal(); // Create robot m_robot = CreateEntity("models/entities/new/red_robot.obj"); // Start animation StartCameraAnimation("animation/menus/startscreen/camera_initial.anim.lua"); m_robot.StartAnimation(LuaAnimation.Get("animation/menus/startscreen/robot.anim.lua"), false); // Reposition sky Game.Sky.ForegroundModelTransform = Matrix4.CreateTranslation(-5.0f, 5.0f, -20.0f); }
public LuaArgs createEntity(LuaArgs args) { var path = args.GetString(0); var renderPassStr = args.IsNil(1) ? "opaque" : args.GetString(1); if (Assets.Exists <Model>(path)) { RenderPass renderPass; switch (renderPassStr) { case "opaque": { renderPass = RenderPass.Opaque; break; } case "cutout": { renderPass = RenderPass.Cutout; break; } case "translucent": { renderPass = RenderPass.Translucent; break; } default: { throw new LuaError("Unsupported render pass: "******"No such model: {0}", path)); } }
public LuaCutsceneEntity(CutsceneEntity entity) { m_entity = entity; }
private IEnumerator Cutscene(Level level) { this.sfx = Audio.Play("event:/game/general/seed_complete_main", this.Position); this.snapshot = Audio.CreateSnapshot("snapshot:/music_mains_mute", true); Player player = base.Scene.Tracker.GetEntity <Player>(); if (player != null) { this.cameraStart = player.CameraTarget; } // Shorten code for reading. List <GenericStrawberrySeed> seeds = strawberry.Seeds; Entity entity = (Entity)this.strawberry; foreach (GenericStrawberrySeed seed in seeds) { seed.OnAllCollected(); } entity.Depth = -2000002; entity.AddTag(Tags.FrozenUpdate); yield return(0.35f); base.Tag = (Tags.FrozenUpdate | Tags.HUD); level.Frozen = true; level.FormationBackdrop.Display = true; level.FormationBackdrop.Alpha = 0.5f; level.Displacement.Clear(); level.Displacement.Enabled = false; Audio.BusPaused("bus:/gameplay_sfx/ambience", new bool?(true)); Audio.BusPaused("bus:/gameplay_sfx/char", new bool?(true)); Audio.BusPaused("bus:/gameplay_sfx/game/general/yes_pause", new bool?(true)); Audio.BusPaused("bus:/gameplay_sfx/game/chapters", new bool?(true)); yield return(0.1f); this.system = new ParticleSystem(-2000002, 50); this.system.Tag = Tags.FrozenUpdate; level.Add(this.system); float angleSep = 6.2831855f / (float)seeds.Count; float angle = 1.5707964f; Vector2 avg = Vector2.Zero; foreach (GenericStrawberrySeed seed in seeds) { avg += seed.Position; } avg /= (float)seeds.Count; foreach (GenericStrawberrySeed seed in seeds) { seed.StartSpinAnimation(avg, entity.Position, angle, 4f); angle -= angleSep; } avg = default(Vector2); Vector2 target = entity.Position - new Vector2(160f, 90f); target = target.Clamp((float)level.Bounds.Left, (float)level.Bounds.Top, (float)(level.Bounds.Right - 320), (float)(level.Bounds.Bottom - 180)); base.Add(new Coroutine(CutsceneEntity.CameraTo(target, 3.5f, Ease.CubeInOut, 0f), true)); target = default(Vector2); yield return(4f); Input.Rumble(RumbleStrength.Light, RumbleLength.Long); Audio.Play("event:/game/general/seed_complete_berry", entity.Position); foreach (GenericStrawberrySeed seed in seeds) { seed.StartCombineAnimation(entity.Position, 0.6f, this.system); } yield return(0.6f); Input.Rumble(RumbleStrength.Medium, RumbleLength.Medium); foreach (GenericStrawberrySeed seed in seeds) { seed.RemoveSelf(); } this.strawberry.CollectedSeeds(); yield return(0.5f); float dist = (level.Camera.Position - this.cameraStart).Length(); yield return(CutsceneEntity.CameraTo(this.cameraStart, dist / 180f, null, 0f)); if (dist > 80f) { yield return(0.25f); } level.EndCutscene(); this.OnEnd(level); yield break; }
private static void OnStartCutscene2(On.Celeste.CutsceneEntity.orig_Added orig, CutsceneEntity self, Scene scene) { orig(self, scene); OnStartCutsceneCommon(self.Scene as Level); }