private void LoadVisibiltyGroup(BasePane pane, LytVisibiltyGroup group) { if (group.AnimTrack.HasKeys) { var track = group.AnimTrack; var value = track.GetFrameValue(Frame, StartFrame); pane.animController.Visibile = value == 1 ? true : false; } }
public LytAnimGroup(BxlanPaiEntry entry) { animEntry = entry; Name = entry.Name; if (entry.Target == AnimationTarget.Material) { Category = "Materials"; } else if (entry.Target == AnimationTarget.Pane) { Category = "Panes"; } else { Category = "User Data"; } //Generate sub groups which contain the track data for (int i = 0; i < entry.Tags?.Count; i++) { STAnimGroup group = new STAnimGroup(); string tag = entry.Tags[i].Tag.Remove(0, 1); switch (tag) { case "LPA": group = new LytPaneSRTGroup(entry.Tags[i]); break; case "LVI": group = new LytVisibiltyGroup(entry.Tags[i]); break; case "LTS": group = new LytTextureSRTGroup(entry.Tags[i]); break; case "LVC": group = new LytVertexColorGroup(entry.Tags[i]); break; case "LMC": group = new LytMaterialColorGroup(entry.Tags[i]); break; case "LIM": group = new LytIndirectSRTGroup(entry.Tags[i]); break; case "LTP": group = new LytTexturePatternGroup(entry.Tags[i]); break; case "LAC": group = new LytAlphaTestGroup(entry.Tags[i]); break; case "LCT": group = new LytFontShadowGroup(entry.Tags[i]); break; case "LCC": group = new LytPerCharacterTransformCurveGroup(entry.Tags[i]); break; } foreach (var keyGroup in entry.Tags[i].Entries) { if (!(group is IAnimationTarget)) { continue; } var targetGroup = ((IAnimationTarget)group).GetTrack(keyGroup.AnimationTarget); if (targetGroup != null) { targetGroup.LoadKeyFrames(keyGroup.KeyFrames); targetGroup.Name = keyGroup.TargetName; if (keyGroup.CurveType == CurveType.Constant) { targetGroup.InterpolationType = STInterpoaltionType.Constant; } else if (keyGroup.CurveType == CurveType.Hermite) { targetGroup.InterpolationType = STInterpoaltionType.Hermite; } else if (keyGroup.CurveType == CurveType.Step) { targetGroup.InterpolationType = STInterpoaltionType.Step; } } else { Console.WriteLine($"Unsupported track type for tag {keyGroup.TargetName} {keyGroup.AnimationTarget}"); } } group.Name = entry.Tags[i].Type; SubAnimGroups.Add(group); } }