public void UpdateKeyframes() { listKeyframes.Items.Clear(); bool t = _updating; _updating = true; if (_target is CHR0EntryNode || _target is SRT0TextureNode) { IKeyframeSource entry = _target as IKeyframeSource; if (entry.FrameCount > 0) { if (_target is CHR0EntryNode) { CHRAnimationFrame a; for (int x = 0; x < entry.FrameCount; x++) { if ((a = ((CHR0EntryNode)entry).GetAnimFrame(x)).HasKeys) { listKeyframes.Items.Add(a); } } } else if (_target is SRT0TextureNode) { SRTAnimationFrame a; for (int x = 0; x < entry.FrameCount; x++) { if ((a = ((SRT0TextureNode)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 RootChanged() { ResourceNode node = _targetNode; if (node is ISCN0KeyframeHolder) { if (node is SCN0LightNode) { SCN0LightNode n = node as SCN0LightNode; interpolationViewer.FrameLimit = n.FrameCount; interpolationViewer.KeyRoot = n.GetKeys(SelectedMode)._keyRoot; } else if (node is SCN0FogNode) { SCN0FogNode n = node as SCN0FogNode; interpolationViewer.FrameLimit = n.FrameCount; interpolationViewer.KeyRoot = n.GetKeys(SelectedMode)._keyRoot; } else if (node is SCN0CameraNode) { SCN0CameraNode n = node as SCN0CameraNode; interpolationViewer.FrameLimit = n.FrameCount; interpolationViewer.KeyRoot = n.GetKeys(SelectedMode)._keyRoot; } } else if (node is IKeyframeHolder) { if (node is CHR0EntryNode) { CHR0EntryNode n = node as CHR0EntryNode; interpolationViewer.FrameLimit = n._keyframes._frameCount; interpolationViewer.KeyRoot = n._keyframes._keyRoots[SelectedMode]; } else if (node is SRT0TextureNode) { SRT0TextureNode n = node as SRT0TextureNode; interpolationViewer.FrameLimit = n._keyframes._frameCount; int i = SelectedMode; if (i == 2) { i = 3; } else if (i > 2) { i += 3; } interpolationViewer.KeyRoot = n._keyframes._keyRoots[i]; } } else if (node is IKeyframeArrayHolder) { comboBox1.Enabled = false; if (node is SHP0VertexSetNode) { SHP0VertexSetNode n = node as SHP0VertexSetNode; interpolationViewer.FrameLimit = n._keyframes._frameLimit; interpolationViewer.KeyRoot = n._keyframes._keyRoot; } } }
public void UpdateKeyframe(int x) { if (!Visible) { return; } _updating = true; if (_target is CHR0EntryNode || _target is SRT0TextureNode) { IKeyframeSource entry = _target as IKeyframeSource; for (int w = 0; w < listKeyframes.Items.Count; w++) { if (_target is CHR0EntryNode) { CHRAnimationFrame a = (CHRAnimationFrame)listKeyframes.Items[w]; if (a.Index == x) { CHRAnimationFrame r = ((CHR0EntryNode)entry).GetAnimFrame(x); if (r.HasKeys) { listKeyframes.Items[w] = r; } else { listKeyframes.Items.RemoveAt(w); } _updating = false; return; } } else if (_target is SRT0TextureNode) { SRTAnimationFrame a = (SRTAnimationFrame)listKeyframes.Items[w]; if (a.Index == x) { SRTAnimationFrame r = ((SRT0TextureNode)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; }