public void InsertPresetBeforeLast(Preset preset) { presets.InsertBeforeLast(preset); Poser lastSlot = slots [(SlotsNum / 2) + 1]; lastSlot.ApplyPreset(presets.Get(presets.Count - 1)); }
void ApplyPresetsToSlots() { for (int i = 0; i < SlotsNum; i++) { Poser poser = slots[i]; int indexRelativeToDataSource = i - (SlotsNum / 2) + index; Preset preset = presets.Get(indexRelativeToDataSource); poser.ApplyPreset(preset); } }
public bool Flip(bool toLeft = true, float speedMultiplier = 1) { int desiredIndex = (toLeft? index + 1 : index - 1); if (0 > desiredIndex || desiredIndex >= presets.Count) { return(false); } Poser currentPoser = CurrentPoser(); Preset currentPreset = CurrentPreset(); if (currentPreset.Pose != null) { currentPoser.StopMotion(); currentPoser.ApplyPose(currentPreset.Pose, FLIP_DURATION / speedMultiplier / 2); } index = desiredIndex; int tweenSlotBeginIndex = 0; int tweenSlotEndIndex = 0; int lastSlotIndex = SlotsNum - 1; if (toLeft) { tweenSlotBeginIndex = 1; tweenSlotEndIndex = lastSlotIndex; } else { tweenSlotBeginIndex = 0; tweenSlotEndIndex = lastSlotIndex - 1; } for (int i = tweenSlotBeginIndex; i <= tweenSlotEndIndex; i++) { int newIndex = i + (toLeft? -1 : +1); Vector3 newPosition = GetSlotPosition(newIndex); LTDescr tween = LeanTween.moveLocal(slots[i].gameObject, newPosition, FLIP_DURATION / speedMultiplier).setEase(LeanTweenType.easeInOutCubic); if (i == CenterSlot) { tween.setOnComplete(OnCenterSlotFlipComplete); } } int poppingSlotIndex = (toLeft? 0 : lastSlotIndex); Poser reusedSlot = slots[poppingSlotIndex]; slots.RemoveAt(poppingSlotIndex); int halfSlotsNum = SlotsNum / 2; int endPointPresetIndex = index + (toLeft? halfSlotsNum : -halfSlotsNum); reusedSlot.ApplyPreset(presets.Get(endPointPresetIndex)); int pushingSlotIndex = (toLeft? lastSlotIndex : 0); slots.Insert(pushingSlotIndex, reusedSlot); reusedSlot.transform.localPosition = GetSlotPosition(pushingSlotIndex); return(true); }