public void BlendAnimation(MafiaAnimation anim, int startFrame = 0, int endFrame = 0, float blendDuration = 0.25f) { if (anim == null) { return; } if (mafiaAnimation == anim) { return; } anim.Reset(); if (mafiaAnimation == null) { mafiaAnimation = anim; mafiaAnimation.startFrame = startFrame; mafiaAnimation.endFrame = endFrame; return; } pairAnimation = anim; pairAnimation.blendDuration = blendDuration; pairAnimation.startFrame = startFrame; pairAnimation.endFrame = endFrame; }
public MafiaAnimation LoadAnimation(string animName) { var animation = new MafiaAnimation(); animation.animationSequences = new List <AnimationSequence>(); Stream fs; try { fs = GameManager.instance.fileSystem.GetStreamFromPath(animName); } catch { return(null); } using (var reader = new BinaryReader(fs)) { MafiaFormats.Loader5DS animLoader = new MafiaFormats.Loader5DS(); animLoader.load(reader); foreach (var seq in animLoader.sequences) { var newAnimationSequence = new AnimationSequence(); newAnimationSequence.loaderSequence = seq; animation.animationSequences.Add(newAnimationSequence); } } return(animation); }
public MafiaAnimation LoadAnimation(string animName, int startFrame = 0, int endFrame = 0, float blendDuration = 0.25f) { var animation = new MafiaAnimation(startFrame, endFrame, blendDuration); animation.animationSequences = new List <AnimationSequence>(); Stream fs; try { fs = GameAPI.instance.fileSystem.GetStreamFromPath(animName); } catch { return(null); } using (var reader = new BinaryReader(fs)) { MafiaFormats.Loader5DS animLoader = new MafiaFormats.Loader5DS(); animLoader.load(reader); foreach (var seq in animLoader.sequences) { var newAnimationSequence = new AnimationSequence(); newAnimationSequence.loaderSequence = seq; newAnimationSequence.rootAnimation = animation; animation.animationSequences.Add(newAnimationSequence); } } return(animation); }
public void SetAnimation(MafiaAnimation anim) { if (mafiaAnimation == anim) { return; } mafiaAnimation = anim; }
public void BlendAnimation(MafiaAnimation anim) { if (anim == null || mafiaAnimation == null) { return; } pairAnimation = anim; }
public MafiaAnimation LoadAnimation(string animName, int startFrame = 0, int endFrame = 0, float blendDuration = 0.25f) { var animation = new MafiaAnimation(startFrame, endFrame, blendDuration); animation.animationSequences = new List <AnimationSequence>(); animation.positionOffsets = new List <Vector3>(); //Stream tckfs; //try //{ // Regex rgx = new Regex("5ds"); // string tckFileName = animName.Replace("5ds", "tck"); // tckfs = GameAPI.instance.fileSystem.GetStreamFromPath(tckFileName); // // if .tck exists, load it // MafiaFormats.TckLoader tckFile = new MafiaFormats.TckLoader(); // using (var reader = new BinaryReader(tckfs)) // { // tckFile.load(reader); // foreach (var chunk in tckFile.transforms) // { // animation.positionOffsets.Prepend(chunk.position); // } // } //} //catch //{} Stream fs; try { fs = GameAPI.instance.fileSystem.GetStreamFromPath(animName); } catch { return(null); } using (var reader = new BinaryReader(fs)) { MafiaFormats.Loader5DS animLoader = new MafiaFormats.Loader5DS(); animLoader.load(reader); foreach (var seq in animLoader.sequences) { var newAnimationSequence = new AnimationSequence(); newAnimationSequence.loaderSequence = seq; newAnimationSequence.rootAnimation = animation; animation.animationSequences.Add(newAnimationSequence); } } return(animation); }
public void SetAnimation(MafiaAnimation anim, int startFrame = 0, int endFrame = 0) { if (mafiaAnimation == anim) { return; } if (anim != null) { anim.Reset(); } mafiaAnimation = anim; mafiaAnimation.startFrame = startFrame; mafiaAnimation.endFrame = endFrame; }
public void SetAnimation(MafiaAnimation anim, int startFrame = 0, int endFrame = 0) { if (mafiaAnimation == anim) { return; } if (anim != null) { anim.Reset(); } mafiaAnimation = anim; mafiaAnimation.startFrame = startFrame; mafiaAnimation.endFrame = endFrame; // save the positon of object at the beggining of animation this.objectInitialPosition = gameObject.transform.parent.position; }
private Vector3 objectInitialPosition; // starting GameObject position, applies when .tck is used public MafiaAnimation LoadAndSetAnimation(string animName, int startFrame = 0, int endFrame = 0) { mafiaAnimation = LoadAnimation(animName, startFrame, endFrame); return(mafiaAnimation); }
void FixedUpdate() { if (GameAPI.instance.isPaused) { return; } if (!isPlaying) { return; } if (mafiaAnimation == null || mafiaAnimation.animationSequences == null) { return; } if (pairAnimation != null && pairAnimation.blendDuration > 0f && mafiaAnimation != pairAnimation && blendTime == 0f) { blendTime = pairAnimation.blendDuration; } if (blendTime > 0f && pairAnimation != null && pairAnimation.blendDuration > 0f) { foreach (var seq in pairAnimation.animationSequences) { var bone = seq.FetchBoneTransform(transform); if (bone == null) { continue; } var primarySeq = mafiaAnimation.animationSequences.Find(x => x.loaderSequence.objectName == seq.loaderSequence.objectName); if (primarySeq == null) { continue; } seq.Reset(); var primaryTr = primarySeq.GetCurrentMotion(); var secondaryTr = seq.GetCurrentMotion(); float blendDelta = 1f - blendTime / pairAnimation.blendDuration; if (seq.loaderSequence.hasMovement()) { bone.localPosition = Vector3.Lerp(primaryTr.currentPosition, secondaryTr.currentPosition, blendDelta); } if (seq.loaderSequence.hasRotation()) { bone.localRotation = Quaternion.Slerp(primaryTr.currentRotation, secondaryTr.currentRotation, blendDelta); } if (seq.loaderSequence.hasScale()) { bone.localScale = Vector3.Lerp(primaryTr.currentScale, secondaryTr.currentScale, blendDelta); } } blendTime -= Time.deltaTime; if (blendTime <= 0f) { blendTime = 0f; mafiaAnimation = pairAnimation; pairAnimation = null; AnimReset(); } else { return; } } if (IsFinished()) { FinishAnimation(); if (playbackMode == AnimationPlaybackMode.Once) { return; } } float frameDelta = frameTime / frameStep; foreach (var animationSeq in mafiaAnimation.animationSequences) { if (animationSeq == null) { return; } animationSeq.Update(frameDelta, transform); if (frameTime > frameStep) { animationSeq.NextFrame(); } } if (frameTime > frameStep) { frameTime = 0f; } frameTime += Time.deltaTime; var currentFrameId = mafiaAnimation.animationSequences.Max(x => Mathf.Max(x.positionKeyFrameId, x.rotationKeyFrameId, x.scaleKeyFrameId)); var lastFrameId = mafiaAnimation.animationSequences.Max(x => Mathf.Max(x.loaderSequence.positionFrames.Count, x.loaderSequence.rotationFrames.Count, x.loaderSequence.scaleFrames.Count)); playbackCompletion = currentFrameId / (float)lastFrameId; }
public MafiaAnimation LoadAndSetAnimation(string animName) { mafiaAnimation = LoadAnimation(animName); return(mafiaAnimation); }