private ObjectCurves GetOrCreateAnimationCurves(string path) { ObjectCurves objCurves; if (!curveCache.TryGetValue(path, out objCurves)) { objCurves = new ObjectCurves(); objCurves.Curves = new AnimationCurve[(int)AnimationCurveIndex.ENUM_COUNT]; for (int i = 0; i < (int)AnimationCurveIndex.ENUM_COUNT; i++) { objCurves.Curves[i] = new AnimationCurve(); } curveCache[path] = objCurves; } return(objCurves); }
private void UpdateTransformCurve(ObjectCurves obj, Transform current, float time, TimelineKey lastTimelineKey, int zIndex = -1) { float val; //IsActive curve val = (current.gameObject.activeSelf) ? 1.0f : 0.0f; obj.Curves[(int)AnimationCurveIndex.IsActive].AddKey(new Keyframe(time, val, float.PositiveInfinity, float.PositiveInfinity) { tangentMode = 0 }); //Position curves obj.Curves[(int)AnimationCurveIndex.LocalPositionX].AddKey(new Keyframe(time, current.localPosition.x) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.LocalPositionY].AddKey(new Keyframe(time, current.localPosition.y) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.LocalPositionZ].AddKey(new Keyframe(time, current.localPosition.z, float.PositiveInfinity, float.PositiveInfinity)); //Z value always has instant transition //Rotation curves var quat = Quaternion.Euler(current.localEulerAngles); obj.Curves[(int)AnimationCurveIndex.LocalRotationX].AddKey(new Keyframe(time, quat.x) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.LocalRotationY].AddKey(new Keyframe(time, quat.y) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.LocalRotationZ].AddKey(new Keyframe(time, quat.z) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.LocalRotationW].AddKey(new Keyframe(time, quat.w) { tangentMode = 0 }, lastTimelineKey); //Scale curves obj.Curves[(int)AnimationCurveIndex.LocalScaleX].AddKey(new Keyframe(time, current.localScale.x) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.LocalScaleY].AddKey(new Keyframe(time, current.localScale.y) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.LocalScaleZ].AddKey(new Keyframe(time, current.localScale.z) { tangentMode = 0 }, lastTimelineKey); //Sprite Curves var spriteTimelineKey = lastTimelineKey as SpriteTimelineKey; if (spriteTimelineKey != null) { obj.IsSpriteKey = true; obj.Curves[(int)AnimationCurveIndex.ColorR].AddKey(new Keyframe(time, spriteTimelineKey.Tint.r) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.ColorG].AddKey(new Keyframe(time, spriteTimelineKey.Tint.g) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.ColorB].AddKey(new Keyframe(time, spriteTimelineKey.Tint.b) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.ColorA].AddKey(new Keyframe(time, spriteTimelineKey.Tint.a) { tangentMode = 0 }, lastTimelineKey); obj.Curves[(int)AnimationCurveIndex.ZIndex].AddKey(new Keyframe(time, zIndex, float.PositiveInfinity, float.PositiveInfinity)); } }
private ObjectCurves GetOrCreateAnimationCurves(string path) { ObjectCurves objCurves; if (!curveCache.TryGetValue(path, out objCurves)) { objCurves = new ObjectCurves(); objCurves.Curves = new AnimationCurve[(int)AnimationCurveIndex.ENUM_COUNT]; for (int i = 0; i < (int) AnimationCurveIndex.ENUM_COUNT; i++) { objCurves.Curves[i] = new AnimationCurve(); } curveCache[path] = objCurves; } return objCurves; }