/// <inheritdoc /> /// <summary> /// Ctor - /// </summary> /// <param name="ruleset"></param> /// <param name="info"></param> public GameplayHitObjectKeys(HitObjectInfo info, GameplayRulesetKeys ruleset, HitObjectManagerKeys manager) { HitObjectManager = manager; Ruleset = ruleset; InitializeSprites(ruleset, info.Lane - 1); InitializeObject(manager, info); }
/// <inheritdoc /> /// <summary> /// Ctor - /// </summary> /// <param name="ruleset"></param> /// <param name="info"></param> public GameplayHitObjectKeys(HitObjectInfo info, GameplayRulesetKeys ruleset, HitObjectManagerKeys manager) { HitObjectManager = manager; Ruleset = ruleset; var lane = info.Lane - 1; var playfield = (GameplayPlayfieldKeys)ruleset.Playfield; LongNoteSizeDifference = playfield.LongNoteSizeAdjustment[lane]; InitializeSprites(ruleset, lane, playfield.ScrollDirections[lane]); InitializeObject(manager, info); }
/// <summary> /// Initialize Object when created/recycled within its object pool. /// </summary> /// <param name="info"></param> /// <param name="manager"></param> public void InitializeObject(HitObjectManagerKeys manager, HitObjectInfo info) { var playfield = (GameplayPlayfieldKeys)Ruleset.Playfield; HitPosition = info.IsLongNote ? playfield.HoldHitPositionY[info.Lane - 1] : playfield.HitPositionY[info.Lane - 1]; Info = info; // Update Hit Object State HitObjectSprite.Image = GetHitObjectTexture(info.Lane, manager.Ruleset.Mode); HitObjectSprite.Visible = true; HitObjectSprite.Tint = Color.White; InitialTrackPosition = manager.GetPositionFromTime(Info.StartTime); CurrentlyBeingHeld = false; StopLongNoteAnimation(); // Update hit body's size to match image ratio HitObjectSprite.Size = new ScalableVector2(playfield.LaneSize, playfield.LaneSize * HitObjectSprite.Image.Height / HitObjectSprite.Image.Width); LongNoteBodyOffset = HitObjectSprite.Height / 2; // Update Hit Object State depending if its an LN or not if (!Info.IsLongNote) { LongNoteEndSprite.Visible = false; LongNoteBodySprite.Visible = false; InitialLongNoteTrackPosition = InitialTrackPosition; } else { LongNoteBodySprite.Tint = Color.White; LongNoteEndSprite.Tint = Color.White; LongNoteEndSprite.Visible = SkinManager.Skin.Keys[Ruleset.Mode].DrawLongNoteEnd; LongNoteBodySprite.Visible = true; InitialLongNoteTrackPosition = manager.GetPositionFromTime(Info.EndTime); UpdateLongNoteSize(InitialTrackPosition); InitialLongNoteSize = CurrentLongNoteSize; } // Update Positions UpdateSpritePositions(manager.CurrentTrackPosition); }