public void Load(string modeljson) { mAnimationQueue = new Live2DMotionQueueManager(); JsonObject modelObject = new JsonObject(); JsonObject physicsObject = null; string loadPath = System.IO.Path.GetDirectoryName(modeljson); //!< ModelJsonの読み込み modelObject.LoadJson(modeljson); { var data = modelObject.LoadObject; //!< モデル読み込み { mModel.LoadModel(loadPath, data.model, data.textures); } //!< アニメーション読み込み { foreach (var motion in (dynamic[])data.motions) { //System.Console.WriteLine(t.Keys); foreach (var file in (dynamic[])motion.Value) { //!< 2byte文字をLive2D側が読み込めない様子... using (var fs = new FileStream(Path.Combine(loadPath, file.file), FileMode.Open)) { byte[] readBuffer = new byte[fs.Length]; fs.Read(readBuffer, 0, (int)fs.Length); IntPtr dest = Marshal.AllocHGlobal((int)fs.Length); Marshal.Copy(readBuffer, 0, dest, (int)fs.Length); var animation = new Live2DAnimation(); animation.loadMotion(dest, (int)fs.Length); mAnimationContainer.Add(Path.GetFileNameWithoutExtension(Path.Combine(loadPath, file.file)), animation); } } } } //<! 物理ファイルを読み込む if (data.IsDefined("physics")) { physicsObject = new JsonObject(); physicsObject.LoadJson(loadPath + "\\" + data.physics); } } if (physicsObject != null) { //!< PhysicsJson読み込み var data = physicsObject.LoadObject; } }
public void Add(string name, Live2DAnimation animation) { AnimationDict.Add(name, animation); }