Exemplo n.º 1
0
        public static CMaterial Create(MaterialType mode, string linkedSubsetName)
        {
            CMaterial mat = Create(mode);

            mat.LinkedSubsetName = linkedSubsetName;
            mat.Init();

            return(mat);
        }
Exemplo n.º 2
0
        public bool Deserialize(object data)
        {
            JObject jm = data as JObject;

            if (jm == null)
            {
                return(false);
            }

            if (jm["BoneCount"] != null)
            {
                BoneCount = jm["BoneCount"].Value <int>();
            }

            if (jm["Mesh"] != null)
            {
                Mesh.Deserialize(jm["Mesh"]);
            }

            //
            JArray jmats = jm["Materials"].Value <JArray>();

            foreach (JObject jmat in jmats)
            {
                string linked_subsetname = jmat["LinkedSubset"].Value <string>().ToLower();
                if (Materials.ContainsKey(linked_subsetname) == false)
                {
                    string    mat_type = jmat["Type"].Value <string>();
                    CMaterial material = CMaterial.Create(mat_type, linked_subsetname);

                    if (material.Deserialize(jmat) == false)
                    {
                        continue;
                    }

                    Materials.Add(linked_subsetname, material);
                }
            }

            // anim
            JObject janimCtrl = jm["AnimCtrl"].Value <JObject>();
            JArray  janims    = janimCtrl["Anims"].Value <JArray>();

            if (janims.Count != 0)
            {
                Anim.Deserialize(janims.First.Value <JObject>());
            }

            return(true);
        }
Exemplo n.º 3
0
        private static CMaterial Create(MaterialType mode)
        {
            CMaterial mat = null;

            switch (mode)
            {
            case MaterialType.Phong:
                mat = new CPhong();
                break;

            case MaterialType.Diffuse:
                mat = new CDiffuse();
                break;
            }

            return(mat);
        }