private void ParseAnimationTrack(STAnimGroup group, FMAT mat) { foreach (var track in group.GetTracks()) { if (track is SamplerTrack) { ParseSamplerTrack(mat, (SamplerTrack)track); } if (track is ParamTrack) { ParseParamTrack(mat, group, (ParamTrack)track); } } foreach (var subGroup in group.SubAnimGroups) { ParseAnimationTrack(subGroup, mat); } }
private NodeBase CreateGroupHierachy(FMAT material, STAnimGroup group) { if (group is ParamAnimGroup) { return(CreateParamNodeHierachy(material, (ParamAnimGroup)group)); } var groupNode = new NodeBase(group.Name); groupNode.Tag = group; //Params have their own sub group for each parameter //The X, Y, Z values being individual tracks foreach (STAnimGroup subGroup in group.SubAnimGroups) { groupNode.AddChild(CreateGroupHierachy(material, subGroup)); } var tracks = group.GetTracks(); return(groupNode); }
private void AddGroup(TreeNodeCollection nodes, STAnimGroup group) { TreeNode groupNode = new TreeNode(group.Name) { Tag = group, ImageKey = "AnimationGroup", }; nodes.Add(groupNode); foreach (var subGroup in group.SubAnimGroups) { AddGroup(groupNode.Nodes, subGroup); } foreach (var track in group.GetTracks()) { if (!track.HasKeys) { continue; } string imageKey = "AnimationTrack"; if (track.Name.EndsWith("R")) { imageKey = "AnimationTrackR"; } if (track.Name.EndsWith("G")) { imageKey = "AnimationTrackG"; } if (track.Name.EndsWith("B")) { imageKey = "AnimationTrackB"; } if (track.Name.EndsWith("A")) { imageKey = "AnimationTrackA"; } if (track.Name.EndsWith("X")) { imageKey = "AnimationTrackX"; } if (track.Name.EndsWith("Y")) { imageKey = "AnimationTrackY"; } if (track.Name.EndsWith("Z")) { imageKey = "AnimationTrackZ"; } if (track.Name.EndsWith("W")) { imageKey = "AnimationTrackW"; } TreeNode trackNode = new TreeNode(track.Name) { Tag = track, ImageKey = imageKey, SelectedImageKey = imageKey, }; groupNode.Nodes.Add(trackNode); } }