public static GameObject NPCModelLoad(uint monsterID, ModelQuality mq = ModelQuality.HIGH)
    {
        Mob.MobInfo mosterInfo = _LowDataMgr.instance.GetMonsterInfo(monsterID);

        string     monsterPref = "";
        GameObject oriUnit     = null;

        if (mosterInfo != null)
        {
            monsterPref = mosterInfo.prefab;
            //oriUnit = ResourceMgr.Load(string.Format("Character/Prefab/{0}", monsterPref)) as GameObject;
            oriUnit = ResourceMgr.Load(GetPrefabSuffix("Character/Prefab/", monsterPref, mq)) as GameObject;

            if (oriUnit == null)
            {
                oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", monsterPref)) as GameObject;
            }
        }
        else
        {
            oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", monsterPref)) as GameObject;
        }

        //GameObject _unit = GameObject.Instantiate(oriUnit) as GameObject;

        return(oriUnit);
    }
Beispiel #2
0
        public Model(ModelDefinition definition, ModelQuality quality)
        {
            Definition = definition;
            Quality    = quality;

            Build();
        }
Beispiel #3
0
 /// <summary>
 /// Sets up 3D model data
 /// </summary>
 /// <param name="numTotalMeshes">The number of meshes the model contains</param>
 /// <param name="MaterialCount">The number of materials the model contains</param>
 public Model(int numTotalMeshes, int MaterialCount)
 {
     this.numTotalMeshes = numTotalMeshes;
     for (int i = 0; i < 3; i++)
     {
         Quality[i] = new ModelQuality(numTotalMeshes / 2);
     }
 }
        public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality)
            : base(engine)
        {
            this.Definition = definition;
            this.Quality = quality;
            this.Variant = variant;
            this.Transformation = Matrix.Identity;

            Init();
        }
        public Model GetModel(ModelQuality quality)
        {
            var v = (int)quality;

            if (_Models[v] == null)
            {
                _Models[v] = new Model(this, quality);
            }
            return(_Models[v]);
        }
        public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality)
            : base(engine, variant, definition, quality)
        {
            Skeleton = skeleton;
            _AnimationPlayer = new AnimationPlayer();

            var nameMap = new Dictionary<string, int>();
            for (var i = 0; i < Skeleton.BoneNames.Length; ++i)
                nameMap.Add(Skeleton.BoneNames[i], i);
            _BoneMap = Definition.BoneNames.Select(n => nameMap[n]).ToArray();
            _InvertedReferencePose = Skeleton.ReferencePose.Select(_ => Matrix.Invert(_)).ToArray();
        }
    static string GetPrefabSuffix(string prefabName, ModelQuality mq)
    {
        if (mq == ModelQuality.HIGH)
        {
            return(string.Format("{0}_ss", prefabName));
        }
        else if (mq == ModelQuality.UI)
        {
            return(string.Format("{0}_s", prefabName));
        }

        return(string.Format("{0}", prefabName));
    }
    static string GetPrefabSuffix(string prefabPath, string prefabName, ModelQuality mq)
    {
        //string.Format("Character/Prefab/{0}_s", clothPref)
        if (mq == ModelQuality.HIGH)
        {
            return(string.Format("{0}{1}_ss", prefabPath, prefabName));
        }
        else if (mq == ModelQuality.UI)
        {
            return(string.Format("{0}{1}_s", prefabPath, prefabName));
        }

        return(string.Format("{0}{1}", prefabPath, prefabName));
    }
        public Content.PrimitiveModel Get(ModelDefinition definition, ModelQuality quality)
        {
            var key = Tuple.Create(definition.File.Path, quality);

            Content.PrimitiveModel primitive;
            if (_Primitives.TryGetValue(key, out primitive))
                return primitive;

            var mdl = definition.GetModel(quality);

            primitive = new Content.PrimitiveModel(_Engine.Device, mdl);
            _Primitives.Add(key, primitive);

            return primitive;
        }
Beispiel #10
0
        public Content.PrimitiveModel Get(ModelDefinition definition, ModelQuality quality)
        {
            var key = Tuple.Create(definition.File.Path, quality);

            Content.PrimitiveModel primitive;
            if (_Primitives.TryGetValue(key, out primitive))
            {
                return(primitive);
            }

            var mdl = definition.GetModel(quality);

            primitive = new Content.PrimitiveModel(_Engine.Device, mdl);
            _Primitives.Add(key, primitive);

            return(primitive);
        }
Beispiel #11
0
        public ContentModel(Engine engine, TransformedModel transformedModel, ModelQuality quality) : base(engine)
        {
            this.Parameters = new Data.ParametersBase();
            this.Definition = transformedModel.Model;
            this.Quality    = Quality;
            this.Variant    = new ModelVariantIdentifier {
                ImcVariant = ImcVariant.Default,
                StainKey   = null
            };
            this.Transformation =
                Matrix.Scaling(transformedModel.Scale.ToDx())
                * Matrix.RotationX(transformedModel.Rotation.X)
                * Matrix.RotationY(transformedModel.Rotation.Y)
                * Matrix.RotationZ(transformedModel.Rotation.Z)
                * Matrix.Translation(transformedModel.Translation.ToDx());

            Init();
        }
        public ContentModel(Engine engine, TransformedModel transformedModel, ModelQuality quality)
            : base(engine)
        {
            this.Parameters = new Data.ParametersBase();
            this.Definition = transformedModel.Model;
            this.Quality = Quality;
            this.Variant = new ModelVariantIdentifier {
                ImcVariant = ImcVariant.Default,
                StainKey = null
            };
            this.Transformation =
                Matrix.Scaling(transformedModel.Scale.ToDx())
                * Matrix.RotationX(transformedModel.Rotation.X)
                * Matrix.RotationY(transformedModel.Rotation.Y)
                * Matrix.RotationZ(transformedModel.Rotation.Z)
                * Matrix.Translation(transformedModel.Translation.ToDx());

            Init();
        }
Beispiel #13
0
        public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality)
            : base(engine)
        {
            this.Definition     = definition;
            this.Quality        = quality;
            this.Variant        = variant;
            this.Transformation = Matrix.Identity;

            Init();
        }
Beispiel #14
0
 public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality) : this(engine, skeleton, variant, file.GetModelDefinition(), quality)
 {
 }
    /// <summary>
    /// 플레이어 캐릭터의 모델로딩
    /// </summary>
    /// <param name="charIdx">캐릭터의 고유 아이디 현재로선 권사 11000, 의사 13000</param>
    /// <param name="HeadItemIdx">헬멧에 낀 아이템의 인덱스</param>
    /// <param name="CostumeItemIdx"></param>
    /// <param name="ClothItemIdx"></param>
    /// <param name="WeaponItemIdx"></param>
    /// <param name="HideCostume"></param>
    /// <returns></returns>
    ///
    public static GameObject PCModelLoad(uint charIdx, uint HeadItemIdx, uint CostumeItemIdx, uint ClothItemIdx, uint WeaponItemIdx, bool HideCostume, ref GameObject[] WeaponEffect, ModelQuality mq = ModelQuality.HIGH)
    {
        //추후 다 어셋번들에서 읽어오게 해야함
        GameObject _unit = null;

        string headPref   = "";
        string weaponPref = "";
        string clothPref  = "";
        //uint aniIdx = 0;
        string rightWeaponDummy = "";
        string leftWeaponDummy  = "";



        if (HideCostume)
        {
            //착용한 옷아이템이 없을경우
            if (ClothItemIdx == 0)
            {
                //캐릭터의 디폴트 아이템의 옷외형을 가져옴
                clothPref = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.CLOTH).prefab;
            }
            else
            {
                //현재 장착중인 옷을 가져옴
                clothPref = _LowDataMgr.instance.GetLowDataEquipItemInfo(ClothItemIdx).prefab;
            }

            //코스튬을 숨기든 말던 애니메이션 인덱스는 코스튬의 것을 가져와야함
            //aniIdx = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).AniId;

            //착용한 무기아이템의 정보
            if (WeaponItemIdx == 0)
            {
                //캐릭터의 디폴트 아이템의 무기외형을 가져옴
                weaponPref = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.WEAPON).prefab;
            }
            else
            {
                //현재 장착중인 무기 가져옴
                weaponPref = _LowDataMgr.instance.GetLowDataEquipItemInfo(WeaponItemIdx).prefab;
            }

            //착용한 머리아이템의 정보
            if (HeadItemIdx == 0)
            {
                //캐릭터의 디폴트 아이템의 머리외형을 가져옴
                headPref = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.HELMET).prefab;
            }
            else
            {
                //현재 장착중인 머리 가져옴
                headPref = _LowDataMgr.instance.GetLowDataEquipItemInfo(HeadItemIdx).prefab;
            }

            rightWeaponDummy = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.WEAPON).RightWeaDummy;
            leftWeaponDummy  = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.WEAPON).LeftWeaDummy;
        }
        else
        {
            //착용한 머리아이템의 정보만 체크
            if (HeadItemIdx == 0)
            {
                //캐릭터의 디폴트 아이템의 머리외형을 가져옴
                headPref = _LowDataMgr.instance.GetDefaultItemInfo(charIdx, ePartType.HELMET).prefab;
            }
            else
            {
                //현재 장착중인 머리 가져옴
                headPref = _LowDataMgr.instance.GetLowDataEquipItemInfo(HeadItemIdx).prefab;
            }

            clothPref  = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).Bodyprefab;
            weaponPref = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).Weaprefab;


            rightWeaponDummy = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).RightWeaDummy;
            leftWeaponDummy  = _LowDataMgr.instance.GetLowDataCostumeInfo(CostumeItemIdx).LeftWeaDummy;
        }

        if (!headPref.Contains("face") || Resources.Load(string.Format("Character/Prefab/{0}", headPref)) == null)
        {
            Debug.LogError("not found head prefab " + headPref);
            if (charIdx == 12000)
            {
                headPref = "pc_p_face_Lv01";
            }
            else if (charIdx == 11000)
            {
                headPref = "pc_f_face_Lv01";
            }
            else if (charIdx == 13000)
            {
                headPref = "pc_d_face_Lv01";
            }
        }

        clothPref  = GetPrefabSuffix(clothPref, mq);
        weaponPref = GetPrefabSuffix(weaponPref, mq);
        headPref   = GetPrefabSuffix(headPref, mq);

        _unit = CreatePlayerDefaultModel(clothPref,
                                         weaponPref,
                                         headPref);

        if (_unit != null && WeaponEffect != null)
        {
            WeaponEffect = AttachWeaponEffect(_unit, false,
                                              rightWeaponDummy,
                                              leftWeaponDummy);
        }

        return(_unit);
    }
Beispiel #16
0
 public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality) : this(engine, variant, file.GetModelDefinition(), quality)
 {
 }
    public static GameObject PartnerModelLoad(uint partnerID, ref GameObject[] WeaponEffect, bool isLight, string rightWea, string leftWea, ModelQuality mq = ModelQuality.HIGH)
    {
        Partner.PartnerDataInfo partner = _LowDataMgr.instance.GetPartnerInfo(partnerID);

        string     partnerPref = "";
        GameObject oriUnit     = null;

        if (partner != null)
        {
            partnerPref = partner.prefab;

            if (isLight)
            {
                //if (Resources.Load(string.Format("Character/Prefab/{0}_s", partnerPref)) != null)
                //	partnerPref = string.Format("{0}_s", partnerPref);
                if (Resources.Load(GetPrefabSuffix("Character/Prefab/", partnerPref, mq)) != null)
                {
                    partnerPref = GetPrefabSuffix(partnerPref, mq);
                }
                else
                {
                    Debug.LogWarning(GetPrefabSuffix("not found prefab ", partnerPref, mq));
                }
            }

            oriUnit = ResourceMgr.Load(string.Format("Character/Prefab/{0}", partnerPref)) as GameObject;

            if (oriUnit == null)
            {
                oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", partnerPref)) as GameObject;
            }
        }
        else
        {
            oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", partnerPref)) as GameObject;
        }

        GameObject _unit = GameObject.Instantiate(oriUnit) as GameObject;

        if (_unit != null && WeaponEffect != null)
        {
            WeaponEffect = AttachWeaponEffect(_unit, true, rightWea, leftWea);
        }

        return(_unit);
    }
 public ContentModel(Engine engine, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality)
     : this(engine, variant, file.GetModelDefinition(), quality)
 {
 }
 public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelFile file, ModelQuality quality)
     : this(engine, skeleton, variant, file.GetModelDefinition(), quality)
 {
 }
Beispiel #20
0
        public AnimatedModel(Engine engine, Skeleton skeleton, ModelVariantIdentifier variant, ModelDefinition definition, ModelQuality quality)
            : base(engine, variant, definition, quality)
        {
            Skeleton         = skeleton;
            _AnimationPlayer = new AnimationPlayer();

            var nameMap = new Dictionary <string, int>();

            for (var i = 0; i < Skeleton.BoneNames.Length; ++i)
            {
                nameMap.Add(Skeleton.BoneNames[i], i);
            }
            _BoneMap = Definition.BoneNames.Select(n => nameMap[n]).ToArray();
            _InvertedReferencePose = Skeleton.ReferencePose.Select(_ => Matrix.Invert(_)).ToArray();
        }
 public Model GetModel(ModelQuality quality)
 {
     var v = (int)quality;
     if (_Models[v] == null)
         _Models[v] = new Model(this, quality);
     return _Models[v];
 }