public void UpdateKeyframes() { listKeyframes.Items.Clear(); bool t = _updating; _updating = true; if (_target is CHR0EntryNode || _target is SRT0TextureNode) { AnimationFrame a; IKeyframeHolder entry = _target as IKeyframeHolder; if (entry.FrameCount > 0) { for (int x = 0; x < entry.FrameCount; x++) { if ((a = entry.GetAnimFrame(x)).HasKeys) { listKeyframes.Items.Add(a); } } } } else if (_target is SHP0VertexSetNode) { SHP0VertexSetNode e = _target as SHP0VertexSetNode; if (e.FrameCount > 0) { for (KeyframeEntry entry = e.Keyframes._keyRoot._next; entry != e.Keyframes._keyRoot; entry = entry._next) { listKeyframes.Items.Add(new FloatKeyframe(entry)); } } } else if (_target is SCN0EntryNode) { if (_target is SCN0CameraNode) { CameraAnimationFrame a; SCN0CameraNode entry = _target as SCN0CameraNode; if (entry.FrameCount > 0) { for (int x = 0; x < entry.FrameCount; x++) { if ((a = entry.GetAnimFrame(x)).HasKeys) { listKeyframes.Items.Add(a); } } } } else if (_target is SCN0LightNode) { LightAnimationFrame a; SCN0LightNode entry = _target as SCN0LightNode; if (entry.FrameCount > 0) { for (int x = 0; x < entry.FrameCount; x++) { if ((a = entry.GetAnimFrame(x)).HasKeys) { listKeyframes.Items.Add(a); } } } } else if (_target is SCN0FogNode) { FogAnimationFrame a; SCN0FogNode entry = _target as SCN0FogNode; if (entry.FrameCount > 0) { for (int x = 0; x < entry.FrameCount; x++) { if ((a = entry.GetAnimFrame(x)).HasKeys) { listKeyframes.Items.Add(a); } } } } } _updating = t; }
public void UpdateKeyframe(int x) { if (!Visible) { return; } _updating = true; if (_target is CHR0EntryNode || _target is SRT0TextureNode) { IKeyframeHolder entry = _target as IKeyframeHolder; for (int w = 0; w < listKeyframes.Items.Count; w++) { AnimationFrame a = (AnimationFrame)listKeyframes.Items[w]; if (a.Index == x) { AnimationFrame r = entry.GetAnimFrame(x); if (r.HasKeys) { listKeyframes.Items[w] = r; } else { listKeyframes.Items.RemoveAt(w); } _updating = false; return; } } UpdateKeyframes(); } else if (_target is SHP0VertexSetNode) { SHP0VertexSetNode entry = _target as SHP0VertexSetNode; int w = 0; foreach (FloatKeyframe a in listKeyframes.Items) { if (a.Index == x) { KeyframeEntry e = entry.GetKeyframe(x); if (e != null) { listKeyframes.Items[w] = new FloatKeyframe(e); } else { listKeyframes.Items.RemoveAt(w); } _updating = false; return; } w++; } UpdateKeyframes(); } else if (_target is SCN0EntryNode) { if (_target is SCN0CameraNode) { SCN0CameraNode entry = _target as SCN0CameraNode; for (int w = 0; w < listKeyframes.Items.Count; w++) { CameraAnimationFrame a = (CameraAnimationFrame)listKeyframes.Items[w]; if (a.Index == x) { CameraAnimationFrame r = entry.GetAnimFrame(x); if (r.HasKeys) { listKeyframes.Items[w] = r; } else { listKeyframes.Items.RemoveAt(w); } _updating = false; return; } } UpdateKeyframes(); } else if (_target is SCN0LightNode) { SCN0LightNode entry = _target as SCN0LightNode; for (int w = 0; w < listKeyframes.Items.Count; w++) { LightAnimationFrame a = (LightAnimationFrame)listKeyframes.Items[w]; if (a.Index == x) { LightAnimationFrame r = entry.GetAnimFrame(x); if (r.HasKeys) { listKeyframes.Items[w] = r; } else { listKeyframes.Items.RemoveAt(w); } _updating = false; return; } } UpdateKeyframes(); } else if (_target is SCN0FogNode) { SCN0FogNode entry = _target as SCN0FogNode; for (int w = 0; w < listKeyframes.Items.Count; w++) { FogAnimationFrame a = (FogAnimationFrame)listKeyframes.Items[w]; if (a.Index == x) { FogAnimationFrame r = entry.GetAnimFrame(x); if (r.HasKeys) { listKeyframes.Items[w] = r; } else { listKeyframes.Items.RemoveAt(w); } _updating = false; return; } } UpdateKeyframes(); } } _updating = false; }