private void SetupShotModelData(ShotModelData data)
        {
            Vertices.SetupVertices(data.Vertices, data.Indices, from m in data.Materials select m.FaceCount, Bones.BoneList.Count);

            Morphs.SetupMaterialMorph(data.Property, data.MaterialMorph, Materials.MaterialList.Count, data.Materials.Length);

            Materials.SetupMaterials(data.Property, data.Materials, data.Textures);

            Bones.SetupBone(data, data.Bones);
        }
 public void InitShotModelData(ShotModelData data)
 {
     if (data.Property.Type.HasMesh)
     {
         SetupShotModelData(data);
     }
     else
     {
         Bones.SetupBone(data, data.Bones[0]);
     }
 }
 public virtual void InitModelData(ShotModelData data)
 {
     if (data.Materials != null)
     {
         var prop = data.Property;
         foreach (var material in data.Materials)
         {
             material.Diffuse = new Vector4(prop.Red, prop.Green, prop.Blue, 1);
             material.Ambient = new Vector3(prop.Red, prop.Green, prop.Blue);
         }
     }
 }
        public void SetupBone(ShotModelData data, params PmxBoneData[] bones)
        {
            for (int i = 0; i < bones.Length; i++)
            {
                PmxBoneData bone = bones[i];

                bone.BoneName = $"B_{(BoneList.Count - 1).ToString()}";
                bone.Flag     = BoneFlags.ROTATE | BoneFlags.MOVE | BoneFlags.OP;
                bone.BoneId   = BoneList.Count + i;

                if (-1 < bone.ParentId && bone.ParentId < bones.Length)
                {
                    bone.ParentId = BoneList.IndexOf(bones[bone.ParentId]);
                }
                else
                {
                    bone.ParentId = 0;
                }
                BoneList.Add(bone);
            }
        }