// if "force" is true, the cutscene will trigger even if the player doesn't have enough hearts.
        private void openHeartGate(Player player)
        {
            MiniHeartDoor door = findHeartGate();

            if (door != null && !door.Opened && door.Requires <= door.HeartGems && player != null)
            {
                // we got all hearts! trigger the cutscene.
                Scene.Add(new MiniHeartDoorUnlockCutscene(door, player));
                // and save this progress.
                CollabModule.Instance.SaveData.OpenedMiniHeartDoors.Add(door.GetDoorSaveDataID(Scene as Level));

                // remove this trigger once that it was used.
                RemoveSelf();
            }
        }
        public override void OnEnter(Player player)
        {
            base.OnEnter(player);

            MiniHeartDoor door = Scene.Entities.OfType <MiniHeartDoor>().Where(d => d.DoorID == doorID).FirstOrDefault();

            if (door != null && !door.Opened && door.Requires <= door.HeartGems && player != null)
            {
                // we got all hearts! trigger the cutscene.
                Scene.Add(new MiniHeartDoorUnlockCutscene(door, player));
                // and save this progress.
                CollabModule.Instance.SaveData.OpenedMiniHeartDoors.Add(door.GetDoorSaveDataID(Scene as Level));
            }

            // this trigger is one-use.
            RemoveSelf();
        }