public static EntityBehaviour Dive(this EntityBehaviour entity, GameObject vanishingPoint, int flatness) { entity.DequeueController("move"); entity.DequeueController("float"); var arc = new ArcMovementController(entity, vanishingPoint, flatness); entity.QueueController("move", arc); return entity; }
public void SpawnPerk(PerkTypes type) { // outsource into init method var perkSpawn = GameObjectRegistry.GetObject("perk_spawn"); var perkImpact = GameObjectRegistry.GetObject("perk_impact"); var perkRetreat = GameObjectRegistry.GetObject("perk_retreat"); var perk = DisplayPerk(type, perkSpawn.transform.position); perk.GrimReaperAppeared += (sender, e) => VoidTargetable(perk); perk.Speed = 240; var arc = new ArcMovementController(perk, perkImpact, 48); arc.ControllerFinished += (sender, e) => { perk.Speed = 20; perk.transform.localRotation = Quaternion.identity; perk.MoveTo(perkRetreat.transform.position, false); perk.QueueController("impact", new WaterImpactController(Environment.SeaLevel) { Strength = 12, Duration = TimeSpan.FromSeconds(10) }); symbolManager.RegisterTargetable(perk); }; perk.QueueController("move", arc); AdjustSymbolChainRange(perk); entities.Add(perk); }