예제 #1
0
        public override void Deserialize(System.IO.BinaryReader r)
        {
            base.Deserialize(r);

            int version = r.ReadInt32();

            if (version > CURRENT_VERSION)
            {
                Debug.LogError("version error");
                return;
            }

            byte[] appearBuff = PETools.Serialize.ReadBytes(r);
            byte[] nudeBuff   = PETools.Serialize.ReadBytes(r);

            if (appearBuff != null && appearBuff.Length > 0 && nudeBuff != null && nudeBuff.Length > 0)
            {
                AppearBlendShape.AppearData appearData = new AppearBlendShape.AppearData();
                appearData.Deserialize(appearBuff);

                CustomCharactor.AvatarData nudeAvatarData = new CustomCharactor.AvatarData();
                nudeAvatarData.Deserialize(nudeBuff);
                SetData(appearData, nudeAvatarData);
            }
        }
예제 #2
0
 void ResetAvatarInfo()
 {
     if (null != Entity.commonCmpt && (null == _nudeAvatarData || _nudeAvatarData.IsInvalid()))
     {
         _nudeAvatarData = Entity.commonCmpt.sex == PeSex.Male ? CustomCharactor.CustomData.DefaultMale().nudeAvatarData : CustomCharactor.CustomData.DefaultFemale().nudeAvatarData;
     }
 }
예제 #3
0
        IEnumerator UpdateSmrAsync()
        {
            _asynUpdatingSmr = true;
            _curAvatarData   = CustomCharactor.AvatarData.Merge(_clothedAvatarData, _nudeAvatarData);
            IEnumerator eBuildAsync = AppearBlendShape.AppearBuilder.BuildAsync(modelTrans.gameObject, _appearData, _curAvatarData);

            while (_asynUpdatingSmr && eBuildAsync.MoveNext())
            {
                yield return(0);
            }
            if (!_asynUpdatingSmr)
            {
                yield break;
            }
            //yield return biologyViewRoot.StartCoroutine (AppearBlendShape.AppearBuilder.BuildAsync (modelTrans.gameObject, mAppearData, mCurAvatarData));

            SkinnedMeshRenderer smr = AppearBlendShape.AppearBuilder.GetTargetSmr(modelTrans.gameObject);
            bool oldState           = smr.enabled;

            smr.enabled = true;
            SkinnedMeshRenderer clonedSmr = AppearBlendShape.AppearBuilder.CloneSmr(monoRagdollCtrlr.gameObject, smr);

            clonedSmr.enabled = true;
            monoRagdollCtrlr.SmrBuild(clonedSmr);
            smr.enabled = oldState;
            //AppearBlendShape.AppearBuilder.Instance.Clear();
        }
예제 #4
0
 public void SetData(AppearBlendShape.AppearData appearData, CustomCharactor.AvatarData nudeAvatarData)
 {
     _appearData     = appearData;
     _nudeAvatarData = nudeAvatarData;
     // Add onConstruct to preload
     if (_nudeAvatarData != null)
     {
         Entity.lodCmpt.onConstruct += e => e.StartCoroutine(PreLoad());
     }
 }
예제 #5
0
        protected override void OnBoneLoadSync(GameObject modelObject)
        {
            base.OnBoneLoadSync(modelObject);

            _curAvatarData = CustomCharactor.AvatarData.Merge(_clothedAvatarData, _nudeAvatarData);
            SkinnedMeshRenderer smr = AppearBlendShape.AppearBuilder.Build(modelObject, _appearData, _curAvatarData);

            //bool oldState = smr.enabled;
            smr.enabled = true;
        }
예제 #6
0
 public override void OnUpdate()
 {
     base.OnUpdate();
     if (_isDirty)
     {
         CustomCharactor.AvatarData avData = CustomCharactor.AvatarData.Merge(_clothedAvatarData, _nudeAvatarData);
         if (_curAvatarData != avData)
         {
             _curAvatarData = avData;
             UpdateSmr();                     // TODO : check code
         }
         _isDirty = false;
     }
 }
예제 #7
0
 IEnumerator PreLoad()
 {
     //Object asset;
     _curAvatarData = CustomCharactor.AvatarData.Merge(_clothedAvatarData, _nudeAvatarData);
     foreach (string partInfo in _curAvatarData)
     {
         if (string.IsNullOrEmpty(partInfo))
         {
             continue;
         }
         string strModelFilePath = CustomCharactor.CustomPartInfo.GetModelFilePath(partInfo);
         AssetsLoader.Instance.AddReq(new AssetReq(strModelFilePath));
         yield return(new WaitForSeconds(0.2f));
     }
 }
예제 #8
0
            public static void SetAvatarNpcModelPath(this PeEntity entity, string value)
            {
                if (null == entity)
                {
                    return;
                }

                AvatarCmpt avatar = entity.GetCmpt <AvatarCmpt>();

                if (null == avatar)
                {
                    return;
                }

                CustomCharactor.AvatarData nudeAvatarData = new CustomCharactor.AvatarData();

                nudeAvatarData.SetPart(CustomCharactor.AvatarData.ESlot.HairF, value);

                avatar.SetData(new AppearBlendShape.AppearData(), nudeAvatarData);
            }
예제 #9
0
        public void UpdateSmr()
        {
            if (NotCustomizable || null == modelTrans || null == monoRagdollCtrlr)
            {
                return;
            }

            _asynUpdatingSmr = false;
            _curAvatarData   = CustomCharactor.AvatarData.Merge(_clothedAvatarData, _nudeAvatarData);
            SkinnedMeshRenderer smr = AppearBlendShape.AppearBuilder.Build(modelTrans.gameObject, _appearData, _curAvatarData);
            bool oldState           = smr.enabled;

            smr.enabled = true;

            SkinnedMeshRenderer clonedSmr = AppearBlendShape.AppearBuilder.CloneSmr(monoRagdollCtrlr.gameObject, smr);

            clonedSmr.enabled = true;
            monoRagdollCtrlr.SmrBuild(clonedSmr);

            smr.enabled = oldState;
            //AppearBlendShape.AppearBuilder.Instance.Clear();
        }
예제 #10
0
//			public static string ExtGetFullName(this PeEntity entity)
//			{
//				EntityInfoCmpt info = entity.GetCmpt<EntityInfoCmpt>();
//
//				if (null == info)
//				{
//					return null;
//				}
//
//				return info.characterName.fullName;
//			}
            public static void SetAvatarData(this PeEntity entity, AppearBlendShape.AppearData appearData, CustomCharactor.AvatarData nudeAvatarData)
            {
                AvatarCmpt v = entity.GetCmpt <AvatarCmpt>();

                if (null != v)
                {
                    v.SetData(appearData, nudeAvatarData);
                }
            }