Beispiel #1
0
        public PAX(string filename)
        {
            /*FileStream fs = new FileStream(@"D:\Desktop\KHDebug\KHDebug\bin\DesktopGL\AnyCPU\Debug\Content\Effects\Visual\SavePoint\p0\MSET\move_001.frames", FileMode.Create);
             * BinaryWriter wr = new BinaryWriter(fs);
             *
             * for (int i=0;i<500;i++)
             * {
             *
             *      float v1 = (float)(Math.Sin((i/250f)*Math.PI)+1)/2f;
             *      float v2 = 1- v1;
             *
             *      wr.Write((ushort)11);
             *      wr.Write((ushort)0);
             *      wr.Write(1.000f * v1 + 0.745f * v2);
             *
             *      wr.Write((ushort)12);
             *      wr.Write((ushort)0);
             *      wr.Write(0.999f * v1 + 1.000f * v2);
             *
             *      wr.Write((ushort)13);
             *      wr.Write((ushort)0);
             *      wr.Write(0.745f * v1 + 0.982f * v2);
             *
             *      wr.Write((ushort)11);
             *      wr.Write((ushort)2);
             *      wr.Write(1.000f * v1 + 0.745f * v2);
             *
             *      wr.Write((ushort)12);
             *      wr.Write((ushort)2);
             *      wr.Write(0.999f * v1 + 1.000f * v2);
             *
             *      wr.Write((ushort)13);
             *      wr.Write((ushort)2);
             *      wr.Write(0.745f * v1 + 0.982f * v2);
             *
             *
             *      if ((i >= 43 && i < 63)||
             *              (i >= 168 && i < 188)||
             *              (i >= 294 && i < 314)||
             *              (i >= 420 && i < 440))
             *      {
             *              wr.Write((ushort)10);
             *              wr.Write((ushort)1);
             *              if (i >= 420)
             *                      wr.Write(1f- ((i - 420) / 20f));
             *              else if (i >= 294)
             *                      wr.Write(1f - ((i - 294) / 20f));
             *              else if (i >= 168)
             *                      wr.Write(1f - ((i - 168) / 20f));
             *              else
             *                      wr.Write(1f - ((i - 43) / 20f));
             *      }
             *      else
             *
             *              if (i < 43 ||
             *              (i >= 126 && i < 168) ||
             *              (i >= 251 && i < 294) ||
             *              (i >= 377 && i < 420))
             *      {
             *              wr.Write((ushort)10);
             *              wr.Write((ushort)1);
             *              wr.Write(1f);
             *      }
             *      else
             *      {
             *              wr.Write((ushort)10);
             *              wr.Write((ushort)1);
             *              wr.Write(0f);
             *      }
             *
             *
             *      if (i < 10)
             *      {
             *              wr.Write((ushort)10);
             *              wr.Write((ushort)0);
             *              wr.Write((i / 9f));
             *
             *              wr.Write((ushort)10);
             *              wr.Write((ushort)2);
             *              wr.Write(i / 9f);
             *
             *              wr.Write((ushort)10);
             *              wr.Write((ushort)3);
             *              wr.Write(i / 9f);
             *      }
             *
             *      wr.Write(-1);
             * }
             *
             * wr.Close();
             * fs.Close();*/

            /*FileStream fs = new FileStream(@"Content\Effects\Visual\FakeHUD\MSET\move_002.frames", FileMode.OpenOrCreate);
             * BinaryWriter wr = new BinaryWriter(fs);
             * for (int i = 0; i < 1; i++)
             * {
             *  wr.Write((ushort)14);
             *  wr.Write((ushort)0);
             *  wr.Write(0f);
             *
             *  wr.Write(-1);
             * }
             *
             * wr.Close();
             * fs.Close();
             * fs.Close();*/

            if (File.Exists(filename.Replace(".dae", ".info")))
            {
                string[] input = File.ReadAllLines(filename.Replace(".dae", ".info"));
                switch (input[0])
                {
                case "None":
                    this.DType = DrawType.None;
                    break;

                case "ToScreen2D":
                    this.DType = DrawType.ToScreen2D;
                    break;

                case "FullScreen":
                    this.DType = DrawType.FullScreen;
                    break;

                case "YawPitchX":
                    this.DType = DrawType.YawPitchX;
                    break;

                case "YawPitchY":
                    this.DType = DrawType.YawPitchY;
                    break;

                case "YawPitchAll":
                    this.DType = DrawType.YawPitchAll;
                    break;

                case "YawX":
                    this.DType = DrawType.YawX;
                    break;

                case "YawY":
                    this.DType = DrawType.YawY;
                    break;

                case "YawAll":
                    this.DType = DrawType.YawAll;
                    break;

                case "PitchX":
                    this.DType = DrawType.PitchX;
                    break;

                case "PitchY":
                    this.DType = DrawType.PitchY;
                    break;

                case "PitchAll":
                    this.DType = DrawType.PitchAll;
                    break;
                }
                if (input[1] == "CullNone")
                {
                    this.Cull = false;
                }
                if (input[2] == "DepthNone")
                {
                    this.Depth = false;
                }
            }

            daeFile = new DAE(filename);
            daeFile.Parse();
            RecreateVertexBuffer(true);
            //daeFile.ModelType = Model.MDType.Sky;
            //daeFile.Location = new Vector3(0, 0, 0);

            if (Directory.Exists(filename.Replace(Path.GetFileName(filename), "MSET")))
            {
                moveFile = new BinaryMoveset(filename.Replace(Path.GetFileName(filename), "MSET"));
                moveFile.Links.Add(daeFile);
                moveFile.Parse();
                moveFile.PlayingIndex         = 0;
                moveFile.InterpolateAnimation = false;
                daeFile.Links.Add(moveFile);

                string[] frameFiles = Directory.GetFiles(filename.Replace(Path.GetFileName(filename), "MSET"), "*.frames");
                Array.Sort(frameFiles);

                Frames        = new byte[frameFiles.Length][];
                FramesIndices = new List <int> [frameFiles.Length];

                for (int i = 0; i < Frames.Length; i++)
                {
                    Frames[i]        = File.ReadAllBytes(frameFiles[i]);
                    FramesIndices[i] = new List <int>(0);
                    FramesIndices[i].Add(0);
                    for (int j = 0; j < Frames[i].Length - 4; j += 4)
                    {
                        int read = BitConverter.ToInt32(Frames[i], j);
                        if (read == -1)
                        {
                            FramesIndices[i].Add(j + 4);
                        }
                    }
                }
            }
        }
Beispiel #2
0
        public static void LoadCharacter(string modelName, string movsesetName, ref Model target)
        {
            Model model = null;

            if (File.Exists(@"Content\Models\" + modelName + @"\" + modelName + ".dae"))
            {
                for (int i = 0; i < MainGame.ResourceFiles.Count; i++)
                {
                    if (MainGame.ResourceFiles[i] is Model && MainGame.ResourceFiles[i].Name == modelName)
                    {
                        model = MainGame.ResourceFiles[i] as Model;
                        break;
                    }
                }
                if (model == null)
                {
                    model = new DAE(@"Content\Models\" + modelName + @"\" + modelName + ".dae");
                    model.Parse();
                    MainGame.ResourceFiles.Add(model);
                }

                model.Render  = true;
                target        = model;
                model.Opacity = 0;
            }

            if (model != null && Directory.Exists(@"Content\Models\" + movsesetName + @"\MSET"))
            {
                BinaryMoveset mset = null;
                for (int i = 0; i < MainGame.ResourceFiles.Count; i++)
                {
                    if (MainGame.ResourceFiles[i] is BinaryMoveset && MainGame.ResourceFiles[i].Name == movsesetName)
                    {
                        mset = MainGame.ResourceFiles[i] as BinaryMoveset;
                        break;
                    }
                }
                if (mset == null)
                {
                    mset = new BinaryMoveset(@"Content\Models\" + movsesetName + @"\MSET");
                    mset.Links.Add(model);
                    mset.Parse();
                    MainGame.ResourceFiles.Add(mset);
                    if (Directory.Exists(@"Content\Models\" + movsesetName + @"\P_EX100_MSET"))
                    {
                        var mset2 = new BinaryMoveset(@"Content\Models\" + movsesetName + @"\P_EX100_MSET");
                        mset2.Links.Add(Program.game.Player);
                        mset2.Links.Add(mset);
                        mset2.Parse();
                        mset.Links.Add(mset2);
                        mset2.Render       = true;
                        mset2.PlayingIndex = mset2.idle_;
                    }
                }
                mset.Render       = true;
                mset.PlayingIndex = mset.idle_;
                if (model.Links.Count == 0)
                {
                    model.Links.Insert(0, mset);
                }
            }
        }