/// <summary> /// Initialize debug data<para/> /// Инициализация отладочной иноформации /// </summary> public static void Init() { //Entities.Camera.Position = new OpenTK.Vector3(375.604f, 58.78056f, -585.3889f); rend = new Graphics.Renderers.DebugRenderer(); box = new Graphics.Renderers.DebugRenderer.Box(); box.LineSize = 2f; box.Size = Vector3.One * 0.5f; //rend.Primitives.Add(box); AnimationFile fg = new AnimationFile(PathManager.GetAbsolute("anim/ped.ifp")); animation = fg["WALK_player"]; man = new Model(new ModelFile(ArchiveManager.Get("HFYST.dff"), true), true, true); manTex = new TextureDictionary(new TextureFile(ArchiveManager.Get("HFYST.txd"), true), true, true); ApplyAnimationFrame(man.Children, animation, 2); re = new Graphics.Renderers.SkinnedRenderer(); lines = new List <Graphics.Renderers.DebugRenderer.Line>(); }
static void ApplyAnimationFrame(Model.Branch[] branches, AnimationFile.Animation animation, float time = 0) { foreach (Model.Branch b in branches) { AnimationFile.Bone boneDef = animation[b.Name]; if (b.Parent != null) { if (boneDef != null) { Vector3 transition = Vector3.Zero; Quaternion rotation = b.OriginalAngles; float scale = b.OriginalScale; AnimationFile.Frame frameFrom, frameTo; float delta = 0; frameFrom = SeekFrameReverse(boneDef, time, 0); frameTo = SeekFrame(boneDef, time, 0); if (frameFrom != null && frameTo != null) { delta = (time - frameFrom.Delay) / (frameTo.Delay - frameFrom.Delay); rotation = Quaternion.Slerp(frameFrom.Rotation, frameTo.Rotation, delta); //Vector3.Lerp(frameFrom.Transition, frameTo.Transition, delta); } frameFrom = SeekFrameReverse(boneDef, time, 1); frameTo = SeekFrame(boneDef, time, 1); if (frameFrom != null && frameTo != null) { delta = (time - frameFrom.Delay) / (frameTo.Delay - frameFrom.Delay); transition = Vector3.Lerp(frameFrom.Transition, frameTo.Transition, delta); } if (b.Name == "Root") { transition.Z = 0; } b.Position = b.OriginalPosition + transition; b.Angles = rotation; b.Scale = scale; } } if (b.Children != null) { ApplyAnimationFrame(b.Children, animation, time); } } }