public GraphicSnapshot(GraphicSnapshot toCopy) { SyncSize = toCopy.SyncSize; SyncScale = toCopy.SyncScale; SizeDelta = toCopy.SizeDelta; ScaleDelta = toCopy.ScaleDelta; Position = toCopy.Position; Rotation = toCopy.Rotation; Color = toCopy.Color; }
public static void ApplySnapshotLerp(MaskableGraphic graphic, GraphicState state, TransitionParameters transition, GraphicSnapshot origin, GraphicSnapshot target, float t) { RectTransform rect = graphic.GetComponent <RectTransform>(); float progress = 0; if (state.ChangeSize == true) { UpdateProgress(ref progress, t, state.Size_SeparateTransition, transition.SizeUseCurve, transition.SizeCurve, transition.SizePower, transition.UseCurve, transition.Curve, transition.Power); if (state.SyncSizeAxises == true) { rect.sizeDelta = Vector2.one * Mathf.LerpUnclamped(origin.SyncSize, target.SyncSize, progress); } else { rect.sizeDelta = Vector2.LerpUnclamped(origin.SizeDelta, target.SizeDelta, progress); } } if (state.ChangeScale == true) { UpdateProgress(ref progress, t, state.Scale_SeparateTransition, transition.ScaleUseCurve, transition.ScaleCurve, transition.ScalePower, transition.UseCurve, transition.Curve, transition.Power); if (state.SyncScaleAxises == true) { rect.localScale = Vector3.one * Mathf.LerpUnclamped(origin.SyncScale, target.SyncScale, progress); } else { rect.localScale = Vector3.LerpUnclamped(origin.ScaleDelta, target.ScaleDelta, progress); } } if (state.ChangePosition == true) { UpdateProgress(ref progress, t, state.Position_SeparateTransition, transition.PositionUseCurve, transition.PositionCurve, transition.PositionPower, transition.UseCurve, transition.Curve, transition.Power); rect.anchoredPosition3D = Vector3.LerpUnclamped(origin.Position, target.Position, progress); } if (state.ChangeRotation == true) { UpdateProgress(ref progress, t, state.Rotation_SeparateTransition, transition.RotationUseCurve, transition.RotationCurve, transition.RotationPower, transition.UseCurve, transition.Curve, transition.Power); rect.localEulerAngles = rect.localEulerAngles.SetZ(Mathf.LerpUnclamped(origin.Rotation, target.Rotation, progress)); } if (state.ChangeColor == true) { UpdateProgress(ref progress, t, state.Color_SeparateTransition, transition.ColorUseCurve, transition.ColorCurve, transition.ColorPower, transition.UseCurve, transition.Curve, transition.Power); graphic.color = Color.LerpUnclamped(origin.Color, target.Color, progress); } }
public void CopyFrom(GraphicState state, GraphicSnapshot snap) { if (snap == this) { snap = new GraphicSnapshot(this); } if (state.RandomSize == true) { SyncSize = Random.Range(state.MinSyncSize, state.MaxSyncSize); SizeDelta.x = Random.Range(state.MinSizeDelta.x, state.MaxSizeDelta.x); SizeDelta.y = Random.Range(state.MinSizeDelta.y, state.MaxSizeDelta.y); } else { SyncSize = state.SyncSize; SizeDelta = state.SizeDelta; } if (state.AbsoluteSize == false) { SizeDelta += snap.SizeDelta; SyncSize += snap.SyncSize; } if (state.RandomScale == true) { SyncScale = Random.Range(state.MinSyncScale, state.MaxSyncScale); ScaleDelta.x = Random.Range(state.MinScaleDelta.x, state.MaxScaleDelta.x); ScaleDelta.y = Random.Range(state.MinScaleDelta.y, state.MaxScaleDelta.y); } else { SyncScale = state.SyncScale; ScaleDelta = state.ScaleDelta; } if (state.AbsoluteScale == false) { ScaleDelta += snap.ScaleDelta; SyncScale += snap.SyncScale; } if (state.RandomPosition == true) { if (state.PositionSeparateAxisRandom == true) { Position.x = Random.Range(state.MinPosition.x, state.MaxPosition.x); Position.y = Random.Range(state.MinPosition.y, state.MaxPosition.y); Position.z = Random.Range(state.MinPosition.z, state.MaxPosition.z); } else { Position = Vector3.Lerp(state.MinPosition, state.MaxPosition, Random.value); } } else { Position = state.Position; } if (state.AbsolutePosition == false) { Position += snap.Position; } if (state.RandomRotation == true) { Rotation = Random.Range(state.MinRotation, state.MaxRotation); } else { Rotation = state.Rotation; } if (state.AbsoluteRotation == false) { Rotation += snap.Rotation; } if (state.RandomColor == true) { Color = Color.Lerp(state.MinColor, state.MaxColor, Random.value); } else { Color = state.Color; } }
public GraphicSnapshot(GraphicState state, GraphicSnapshot snap) { CopyFrom(state, snap); }