private void InternalAddSkinnedMesh(AvtarInfo avtarInfo, AssetObject assetObject) { if (!avtarInfo.AddSkinMeshInfo(assetObject)) { m_AssetPool.Unspawn(assetObject); } }
/// <summary> /// 换装(删除之前所有增加的) /// </summary> /// <param name="entity">要换装的实体</param> /// <param name="assetName">要换装的资源名称</param> public void ChangeSkinnedMesh(Entity entity, string assetName) { AvtarInfo avtarInfo = null; if (m_AvtarInfos.TryGetValue(entity, out avtarInfo)) { avtarInfo.Clear(); } else { avtarInfo = new AvtarInfo(entity, this); m_AvtarInfos.Add(entity, avtarInfo); } AssetObject assetObject = m_AssetPool.Spawn(assetName); if (assetObject == null) { GameEntry.Resource.LoadAsset(assetName, typeof(UnityEngine.Object), Constant.AssetPriority.TextureAsset, m_LoadAssetCallbacks, new LoadAvtarInfo(avtarInfo)); } else { InternalAddSkinnedMesh(avtarInfo, assetObject); } }
/// <summary> /// 增加蒙皮信息 /// </summary> /// <param name="entity">要换装的实体</param> /// <param name="assetName">要换装的资源名称</param> public void AddSkinnedMesh(Entity entity, string assetName) { AvtarInfo avtarInfo = null; if (!m_AvtarInfos.TryGetValue(entity, out avtarInfo)) { avtarInfo = new AvtarInfo(entity, this); m_AvtarInfos.Add(entity, avtarInfo); } if (avtarInfo.HasSkinnedMesh(assetName)) { Log.Error("SkinnedMesh {0} is already added !", assetName); return; } AssetObject assetObject = m_AssetPool.Spawn(assetName); if (assetObject == null) { GameEntry.Resource.LoadAsset(assetName, typeof(UnityEngine.Object), Constant.AssetPriority.AvtarAsset, m_LoadAssetCallbacks, new LoadAvtarInfo(avtarInfo)); } else { InternalAddSkinnedMesh(avtarInfo, assetObject); } }
/// <summary> /// 移除所有蒙皮信息 /// </summary> /// <param name="entity">要换装的实体</param> public void RemoveAllSkinnedMesh(Entity entity) { AvtarInfo avtarInfo = null; if (m_AvtarInfos.TryGetValue(entity, out avtarInfo)) { avtarInfo.Clear(); } }
/// <summary> /// 移除蒙皮信息 /// </summary> /// <param name="entity">要换装的实体</param> /// <param name="assetName">要换装的资源名称</param> public void RemoveSkinnedMesh(Entity entity, string assetName) { AvtarInfo avtarInfo = null; if (!m_AvtarInfos.TryGetValue(entity, out avtarInfo)) { Log.Error("Can not find entity to remove avtar !"); return; } else { if (!avtarInfo.RemoveSkinMeshInfo(assetName)) { Log.Error("Can not remove {0} from entity - {1}", assetName, entity.Name); return; } } }
public LoadAvtarInfo(AvtarInfo avtarInfo) { m_AvtarInfo = avtarInfo; }