Пример #1
0
        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);
 }