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); } }
void ResetAvatarInfo() { if (null != Entity.commonCmpt && (null == _nudeAvatarData || _nudeAvatarData.IsInvalid())) { _nudeAvatarData = Entity.commonCmpt.sex == PeSex.Male ? CustomCharactor.CustomData.DefaultMale().nudeAvatarData : CustomCharactor.CustomData.DefaultFemale().nudeAvatarData; } }
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(); }
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()); } }
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; }
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; } }
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)); } }
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); }
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(); }
// 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); } }