public void AnimateControl(NotepadListItem nli, AnimationFlag af) { switch (af) { case AnimationFlag.NotepadItemOPEN: AnimationLib.OpacityControl(nli, 0, 1, GlobalPreferences.ANIMATION_SPEED_SEC); AnimationLib.MoveToTargetX(nli, 0, -ActualWidth, GlobalPreferences.ANIMATION_SPEED_SEC); break; //Cant really do this. Animations are async so i'd have to have a timed delay when //removing the item from the NotepadList, which would be... a bit complex. //If anyone wants to try and add that delay (using tasks maybe, have a go) //(and msg me or something with the code, and ill add it) case AnimationFlag.NotepadItemCLOSE: //AnimationLib.OpacityControl(nli, 1, 0, AnimationSpeedSeconds); //AnimationLib.MoveToTargetX(nli, -ActualWidth, 0, AnimationSpeedSeconds * 15); // //Task.Run(async () => //{ // await Task.Delay(TimeSpan.FromSeconds(AnimationSpeedSeconds)); // await Application.Current.Dispatcher.InvokeAsync(() => { ViewModel.NotepadItems.Remove(nli); }); //}); break; } }
// void GoBack(AnimationFlag animationFlag) // { // GoBack(); // } public void GoBack(AnimationFlag animationFlag) { var nav = CurrentNavigationController(); if (nav != null) { nav.PopViewController(true); } }
public static AnimationFlag GetAnimFlags(ushort Flag) { AnimationFlag flag = new AnimationFlag(); flag.TranslationX = BitsUtil.Int.GetBit(Flag, 0); flag.TranslationY = BitsUtil.Int.GetBit(Flag, 1); flag.TranslationZ = BitsUtil.Int.GetBit(Flag, 2); flag.RotationX = BitsUtil.Int.GetBit(Flag, 3); flag.RotationY = BitsUtil.Int.GetBit(Flag, 4); flag.RotationZ = BitsUtil.Int.GetBit(Flag, 5); flag.ScaleX = BitsUtil.Int.GetBit(Flag, 6); flag.ScaleY = BitsUtil.Int.GetBit(Flag, 7); flag.ScaleZ = BitsUtil.Int.GetBit(Flag, 8); return(flag); }
public void GoBack(AnimationFlag animationFlag) { Activity.GoBack(); switch (animationFlag) { case AnimationFlag.Grow: case AnimationFlag.Up: case AnimationFlag.Forward: _activity.OverridePendingTransition(Resource.Animation.pull_in_right, Resource.Animation.push_out_left); break; case AnimationFlag.Down: case AnimationFlag.Back: _activity.OverridePendingTransition(Resource.Animation.pull_in_left, Resource.Animation.push_out_right); break; } }
private void StartIntentAndAnimate(Intent intent, string pageKey = "", AnimationFlag animationFlag = AnimationFlag.Forward) { Activity.NextPageKey = pageKey; _activity.StartActivity(intent); switch (animationFlag) { case AnimationFlag.Grow: case AnimationFlag.Up: case AnimationFlag.Forward: _activity.OverridePendingTransition(Resource.Animation.pull_in_right, Resource.Animation.push_out_left); break; case AnimationFlag.Down: case AnimationFlag.Back: _activity.OverridePendingTransition(Resource.Animation.pull_in_left, Resource.Animation.push_out_right); break; } }
public static Pam Read(Stream stream) { Pam pam = new Pam(); pam.header = BinaryMapping.ReadObject <Header>(stream); pam.animList = new List <AnimationInfo>(); for (int i = 0; i < pam.header.AnimationCount; i++) { pam.animList.Add(new AnimationInfo()); pam.animList[i].AnimEntry = BinaryMapping.ReadObject <AnimationEntry>(stream); } // Get all anims in PAM pack. for (int j = 0; j < pam.animList.Count; j++) { stream.Seek(pam.animList[j].AnimEntry.AnimationOffset, SeekOrigin.Begin); pam.animList[j].AnimHeader = BinaryMapping.ReadObject <AnimationHeader>(stream); byte BoneNum = pam.animList[j].AnimHeader.BoneCount; ushort frameNum = pam.animList[j].AnimHeader.FrameCount; pam.animList[j].ChannelFlags = new List <ushort>(); // Channel Flags for (int k = 0; k < BoneNum; k++) { pam.animList[j].ChannelFlags.Add(stream.ReadUInt16()); } pam.animList[j].BoneChannels = new List <BoneChannel>(); // Channel Header & Data for (int l = 0; l < BoneNum; l++) { BoneChannel boneChannel = new BoneChannel(); AnimationFlag flg = GetAnimFlags(pam.animList[j].ChannelFlags[l]); ushort frameCnt = pam.animList[j].AnimHeader.FrameCount; /** TRANSLATION **/ if (flg.TranslationX) { ushort keyframeCnt = 0; boneChannel.TranslationX = new AnimationData(); boneChannel.TranslationX.Header = new ChannelHeader(); boneChannel.TranslationX.Header.MaxValue = stream.ReadFloat(); boneChannel.TranslationX.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.TranslationX.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.TranslationX.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.TranslationX.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.TranslationX.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.TranslationX.Keyframes.Add(ent); } } } } if (flg.TranslationY) { ushort keyframeCnt = 0; boneChannel.TranslationY = new AnimationData(); boneChannel.TranslationY.Header = new ChannelHeader(); boneChannel.TranslationY.Header.MaxValue = stream.ReadFloat(); boneChannel.TranslationY.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.TranslationY.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.TranslationY.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.TranslationY.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.TranslationY.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.TranslationY.Keyframes.Add(ent); } } } } if (flg.TranslationZ) { ushort keyframeCnt = 0; boneChannel.TranslationZ = new AnimationData(); boneChannel.TranslationZ.Header = new ChannelHeader(); boneChannel.TranslationZ.Header.MaxValue = stream.ReadFloat(); boneChannel.TranslationZ.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.TranslationZ.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.TranslationZ.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.TranslationZ.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.TranslationZ.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.TranslationZ.Keyframes.Add(ent); } } } } /** ROTATION **/ if (flg.RotationX) { ushort keyframeCnt = 0; boneChannel.RotationX = new AnimationData(); boneChannel.RotationX.Header = new ChannelHeader(); boneChannel.RotationX.Header.MaxValue = stream.ReadFloat(); boneChannel.RotationX.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.RotationX.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.RotationX.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.RotationX.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.RotationX.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.RotationX.Keyframes.Add(ent); } } } } if (flg.RotationY) { ushort keyframeCnt = 0; boneChannel.RotationY = new AnimationData(); boneChannel.RotationY.Header = new ChannelHeader(); boneChannel.RotationY.Header.MaxValue = stream.ReadFloat(); boneChannel.RotationY.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.RotationY.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.RotationY.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.RotationY.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.RotationY.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.RotationY.Keyframes.Add(ent); } } } } if (flg.RotationZ) { ushort keyframeCnt = 0; boneChannel.RotationZ = new AnimationData(); boneChannel.RotationZ.Header = new ChannelHeader(); boneChannel.RotationZ.Header.MaxValue = stream.ReadFloat(); boneChannel.RotationZ.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.RotationZ.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.RotationZ.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.RotationZ.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.RotationZ.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.RotationZ.Keyframes.Add(ent); } } } } /** SCALE **/ if (flg.ScaleX) { ushort keyframeCnt = 0; boneChannel.ScaleX = new AnimationData(); boneChannel.ScaleX.Header = new ChannelHeader(); boneChannel.ScaleX.Header.MaxValue = stream.ReadFloat(); boneChannel.ScaleX.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.ScaleX.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.ScaleX.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.ScaleX.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.ScaleX.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.ScaleX.Keyframes.Add(ent); } } } } if (flg.ScaleY) { ushort keyframeCnt = 0; boneChannel.ScaleY = new AnimationData(); boneChannel.ScaleY.Header = new ChannelHeader(); boneChannel.ScaleY.Header.MaxValue = stream.ReadFloat(); boneChannel.ScaleY.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.ScaleY.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.ScaleY.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.ScaleY.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.ScaleY.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.ScaleY.Keyframes.Add(ent); } } } } if (flg.ScaleZ) { ushort keyframeCnt = 0; boneChannel.ScaleZ = new AnimationData(); boneChannel.ScaleZ.Header = new ChannelHeader(); boneChannel.ScaleZ.Header.MaxValue = stream.ReadFloat(); boneChannel.ScaleZ.Header.MinValue = stream.ReadFloat(); if (frameCnt > 255) { keyframeCnt = boneChannel.ScaleZ.Header.KeyframeCount_16bits = stream.ReadUInt16(); } else { keyframeCnt = boneChannel.ScaleZ.Header.KeyframeCount_8bits = (byte)stream.ReadByte(); } if (keyframeCnt != 1) { boneChannel.ScaleZ.Keyframes = new List <KeyframeEntry>(); for (ushort z = 0; z < keyframeCnt; z++) { KeyframeEntry ent = new KeyframeEntry(); if (keyframeCnt == frameCnt) { ent.FrameID_16bits = z; ent.Value = stream.ReadUInt16(); boneChannel.ScaleZ.Keyframes.Add(ent); } else { if (frameCnt > 255) { ent.FrameID_16bits = stream.ReadUInt16(); } else { ent.FrameID_8bits = (byte)stream.ReadByte(); } ent.Value = stream.ReadUInt16(); boneChannel.ScaleZ.Keyframes.Add(ent); } } } } pam.animList[j].BoneChannels.Add(boneChannel); } } return(pam); }
public void NavigateTo(string pageKey, object parameter, List <NavigationFlag> navigationFlags, AnimationFlag animationFlags = AnimationFlag.Forward) { NavigateTo(pageKey, parameter); }
public void NavigateTo(string pageKey, object parameter, List <NavigationFlag> navigationFlags, AnimationFlag animationFlag = AnimationFlag.Forward) { Intent intent = null; lock (_pagesByKey) { if (!_pagesByKey.ContainsKey(pageKey)) { throw new ArgumentException( string.Format( "No such page: {0}. Did you forget to call NavigationService.Configure?", pageKey), "pageKey"); } intent = new Intent(_activity, _pagesByKey[pageKey]); } if (navigationFlags != null && navigationFlags.Any()) { foreach (var flag in navigationFlags) { switch (flag) { case NavigationFlag.ClearStack: intent.AddFlags(ActivityFlags.ClearTop); break; case NavigationFlag.SingleInstance: intent.AddFlags(ActivityFlags.SingleTop); break; case NavigationFlag.ClearTask: intent.AddFlags(ActivityFlags.ClearTask); break; case NavigationFlag.NewTask: intent.AddFlags(ActivityFlags.NewTask); break; } } } if (parameter != null) { lock (_parametersByKey) { var guid = Guid.NewGuid().ToString(); _parametersByKey.Add(guid, parameter); intent.PutExtra(ParameterKeyName, guid); } } StartIntentAndAnimate(intent, pageKey, animationFlag); }
public bool HasFlags(AnimationFlag flag) { return(Flags.Contains(flag)); }
/// <summary> /// Helper method to read all animations from a Puppet file and return a list of them /// </summary> /// <param name="sectionReader">BinaryReader instance containing the Animation section data</param> /// <param name="version">Version of the Puppet file</param> /// <returns>List of animations from the Puppet file</returns> public static List <Animation> ReadAllAnimations(BinaryReader sectionReader, Version version) { List <Animation> Animations = new List <Animation>(); while (sectionReader.BaseStream.Position < sectionReader.BaseStream.Length) { Animation animation = new Animation(); animation.BoneID = sectionReader.ReadByte(); // Once the root bone is reached (ID 255) stop reading animations if (animation.BoneID == 255) { break; } // Bone ID 254 have two additional bytes after the ID (FE 00) to skip over if (animation.BoneID == 254) { animation.SubID = sectionReader.ReadByte(); animation.SubSubID = sectionReader.ReadByte(); } uint positionDataCount = sectionReader.ReadUInt32(); animation.PositionData = new PositionData[positionDataCount]; for (int i = 0; i < positionDataCount; i++) { PositionData positionData = new PositionData { Time = sectionReader.ReadSingle(), X = sectionReader.ReadSingle(), Y = sectionReader.ReadSingle(), Z = sectionReader.ReadSingle(), }; animation.PositionData[i] = positionData; } uint rotationDataCount = sectionReader.ReadUInt32(); animation.RotationData = new RotationData[rotationDataCount]; if (version.Minor == 0) { // TODO: Check if this is an unknown value or just padding animation.Unknown1 = sectionReader.ReadUInt32(); } for (int i = 0; i < rotationDataCount; i++) { RotationData rotationData; if (version.Minor >= 2) { rotationData = new RotationData { Time = sectionReader.ReadSingle(), X = sectionReader.ReadSingle(), Y = sectionReader.ReadSingle(), Z = sectionReader.ReadSingle(), W = sectionReader.ReadSingle() }; } else { rotationData = new RotationData { X = sectionReader.ReadSingle(), Y = sectionReader.ReadSingle(), Z = sectionReader.ReadSingle(), W = sectionReader.ReadSingle(), Time = sectionReader.ReadSingle() }; } animation.RotationData[i] = rotationData; } if (version.Minor >= 2) { uint scalingDataCount = sectionReader.ReadUInt32(); animation.ScalingData = new ScalingData[scalingDataCount]; for (int i = 0; i < scalingDataCount; i++) { ScalingData scalingData = new ScalingData { Time = sectionReader.ReadSingle(), X = sectionReader.ReadSingle(), Y = sectionReader.ReadSingle(), Z = sectionReader.ReadSingle() }; animation.ScalingData[i] = scalingData; } } if (version.Minor >= 3) { uint animationFlagCount = sectionReader.ReadUInt32(); animation.AnimationFlags = new AnimationFlag[animationFlagCount]; for (int i = 0; i < animationFlagCount; i++) { AnimationFlag animationFlag = new AnimationFlag { Time = sectionReader.ReadSingle(), Value = sectionReader.ReadSingle() }; animation.AnimationFlags[i] = animationFlag; } } Animations.Add(animation); } return(Animations); }