public void CopyTagsAndEvents(IMxMAnim a_target, bool a_mirrored) { //Copy Events List<EventMarker> targetEvents = a_target.EventMarkers; if (targetEvents != null) { Events = new List<EventMarker>(targetEvents.Count + 1); foreach (EventMarker evt in targetEvents) { if(evt != null) Events.Add(new EventMarker(evt)); } } //Copy Require tag tracks List<TagTrack> targetTagTracks = a_target.AnimTagTracks; if (targetTagTracks != null) { TagTracks = new List<TagTrack>(targetTagTracks.Count + 1); foreach (TagTrack track in targetTagTracks) { if (track != null) { TagTracks.Add(new TagTrack(track)); } } } //Copy Favour tag tracks List<TagTrack> targetFavourTracks = a_target.AnimFavourTagTracks; if (FavourTagTracks != null) { FavourTagTracks = new List<TagTrack>(targetFavourTracks.Count + 1); foreach (TagTrack track in targetFavourTracks) { if(track != null) FavourTagTracks.Add(new TagTrack(track)); } } //Copy User Tags List<TagTrackBase> userTagTracks = a_target.UserTagTracks; if (userTagTracks != null) { UserBoolTracks = new List<TagTrackBase>(userTagTracks.Count + 1); foreach (TagTrackBase track in userTagTracks) { if(track != null) UserBoolTracks.Add(track); } } //Copy Utility Tags List<TagTrackBase> utilityTagTracks = a_target.GenericTagTracks; if (utilityTagTracks != null) { if (a_mirrored) { if (utilityTagTracks.Count > 0) { RightFootStepTrack = new FootStepTagTrack(utilityTagTracks[0] as FootStepTagTrack); RightFootStepTrack.Name = "Footstep Right"; } if (utilityTagTracks.Count > 1) { LeftFootStepTrack = new FootStepTagTrack(utilityTagTracks[1] as FootStepTagTrack); LeftFootStepTrack.Name = "Footstep Left"; } } else { if (utilityTagTracks.Count > 0) LeftFootStepTrack = new FootStepTagTrack(utilityTagTracks[0] as FootStepTagTrack); if (utilityTagTracks.Count > 1) RightFootStepTrack = new FootStepTagTrack(utilityTagTracks[1] as FootStepTagTrack); } if (utilityTagTracks.Count > 2) WarpPositionTrack = new TagTrackBase(utilityTagTracks[2]); if (utilityTagTracks.Count > 3) WarpRotationTrack = new TagTrackBase(utilityTagTracks[3]); if (utilityTagTracks.Count > 4) EnableRootMotionTrack = new TagTrackBase(utilityTagTracks[4]); if (utilityTagTracks.Count > 5) PoseFavourTrack = new FloatTagTrack(utilityTagTracks[5] as FloatTagTrack); if (utilityTagTracks.Count > 6) WarpTrajLatTrack = new TagTrackBase(utilityTagTracks[6]); if (utilityTagTracks.Count > 7) WarpTrajLongTrack = new TagTrackBase(utilityTagTracks[7]); } }