private void RefreshPage() { if (_target != null) { //_currentPage = (int)numFrame.Value - 1; _currentFrame = _target.GetAnimFrame(_currentPage); numScaleX.Value = _currentFrame.Scale._x; numScaleY.Value = _currentFrame.Scale._y; numScaleZ.Value = _currentFrame.Scale._z; numRotX.Value = _currentFrame.Rotation._x; numRotY.Value = _currentFrame.Rotation._y; numRotZ.Value = _currentFrame.Rotation._z; numTransX.Value = _currentFrame.Translation._x; numTransY.Value = _currentFrame.Translation._y; numTransZ.Value = _currentFrame.Translation._z; for (int i = 0; i < 9; i++) { UpdateBox(i); } btnPrev.Enabled = _currentPage > 0; btnNext.Enabled = _currentPage < (_numFrames - 1); listKeyframes.SelectedIndex = FindKeyframe(_currentPage); } }
public FrameState(CHRAnimationFrame frame) { _scale = frame.Scale; _rotate = frame.Rotation; _translate = frame.Translation; CalcTransforms(); }
public void SetKeyframeOnlyScale(int index, CHRAnimationFrame frame) { float *v = (float *)&frame.Scale; for (int i = 0; i < 3; i++) { SetKeyframe(i, index, *v++); } }
public void SetKeyframeOnlyRot(int index, CHRAnimationFrame frame) { float *v = (float *)&frame.Rotation; for (int i = 3; i < 6; i++) { SetKeyframe(i, index, *v++); } }
public void SetKeyframeOnlyTrans(int index, CHRAnimationFrame frame) { float *v = (float *)&frame.Translation; for (int i = 6; i < 9; i++) { SetKeyframe(i, index, *v++); } }
private void ReloadIcons() { if (miscdata80 == null) { return; } CHR0Node chr0 = miscdata80.FindChild("AnmChr(NW4R)/MenSelmapPos_TopN__" + (MyMusic ? "1" : "0"), false) as CHR0Node; if (chr0 == null) { return; } icons = new Tuple <Image, RectangleF> [_numIcons + 1]; CHR0EntryNode entry = chr0.FindChild("MenSelmapPos_TopN", false) as CHR0EntryNode; Vector3 offset = entry.GetAnimFrame(_numIcons + OFFSET).Translation; for (int i = 1; i <= _numIcons; i++) { entry = chr0.FindChild("pos" + i.ToString("D2"), false) as CHR0EntryNode; CHRAnimationFrame frame = entry.GetAnimFrame(_numIcons + OFFSET, true); float x = (BRAWLWIDTH / 2 + frame.Translation._x + offset._x) / BRAWLWIDTH; float y = (BRAWLHEIGHT / 2 - frame.Translation._y - offset._y) / BRAWLHEIGHT; float w = 6.4f * (frame.Scale._x) / BRAWLWIDTH; float h = 5.6f * (frame.Scale._y) / BRAWLHEIGHT; RectangleF r = new RectangleF(x, y, w, h); TextureContainer tc = new TextureContainer(miscdata80, IconOrder != null && i <= IconOrder.Length ? IconOrder[i - 1] : 100); if (tc.icon.tex0 == null) { continue; } Image image = tc.icon.tex0.GetImage(0); icons[i] = new Tuple <Image, RectangleF>(image, r); } var nexttex0 = miscdata80.FindChild("Textures(NW4R)/MenSelmapIcon_Change.1", false) as TEX0Node; if (nexttex0 != null) { float NEXTOFFSET = 10.8f; entry = chr0.FindChild("pos" + (_numIcons + 1).ToString("D2"), false) as CHR0EntryNode; CHRAnimationFrame frame2 = entry.GetAnimFrame(_numIcons + OFFSET, true); float x2 = (BRAWLWIDTH / 2 + frame2.Translation._x - NEXTOFFSET) / BRAWLWIDTH; float y2 = (BRAWLHEIGHT / 2 - frame2.Translation._y) / BRAWLHEIGHT; float w2 = 14.4f * (frame2.Scale._x) / BRAWLWIDTH; float h2 = 4.8f * (frame2.Scale._y) / BRAWLHEIGHT; RectangleF r2 = new RectangleF(x2, y2, w2, h2); Image image2 = nexttex0.GetImage(0); icons[0] = new Tuple <Image, RectangleF>(image2, r2); //pos00 is not used anyway, so let's overwrite it } this.Invalidate(); }
private void listKeyframes_SelectedIndexChanged(object sender, EventArgs e) { int index = listKeyframes.SelectedIndex; if (index >= 0) { CHRAnimationFrame f = (CHRAnimationFrame)listKeyframes.SelectedItem; numFrame.Value = f.Index + 1; } }
public CHRAnimationFrame GetAnimFrame(int index, bool returnOutFrame = false) { CHRAnimationFrame frame = new CHRAnimationFrame() { Index = index }; float *dPtr = (float *)&frame; for (int x = 0; x < 9; x++) { frame.SetBool(x, Keyframes.GetKeyframe(x, index) != null); *dPtr++ = GetFrameValue(x, index, returnOutFrame); } return(frame); }
private static void FillKeyList(CHRAnimationFrame AnimFrame, int frame, uint AnimOffset, List <float> Frames, List <float> Keys) { if (AnimFrame.hasTx && AnimOffset == 0x10) { Frames.Add(frame); Keys.Add(AnimFrame.Translation._x); } if (AnimFrame.hasTy && AnimOffset == 0x14) { Frames.Add(frame); Keys.Add(AnimFrame.Translation._y); } if (AnimFrame.hasTz && AnimOffset == 0x18) { Frames.Add(frame); Keys.Add(AnimFrame.Translation._z); } if (AnimFrame.hasRx && AnimOffset == 0x20) { Frames.Add(frame); Keys.Add(AnimFrame.Rotation._x * Deg2Rad); } if (AnimFrame.hasRy && AnimOffset == 0x24) { Frames.Add(frame); Keys.Add(AnimFrame.Rotation._y * Deg2Rad); } if (AnimFrame.hasRz && AnimOffset == 0x28) { Frames.Add(frame); Keys.Add(AnimFrame.Rotation._z * Deg2Rad); } if (AnimFrame.hasSx && AnimOffset == 0x04) { Frames.Add(frame); Keys.Add(AnimFrame.Scale._x); } if (AnimFrame.hasSy && AnimOffset == 0x08) { Frames.Add(frame); Keys.Add(AnimFrame.Scale._y); } if (AnimFrame.hasSz && AnimOffset == 0x0C) { Frames.Add(frame); Keys.Add(AnimFrame.Scale._z); } }
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; }