private void AssembleWeapon(SceneObjectEntity entity) { var weaponGo = entity.multiUnityObject.FirstAsset; if (entity.hasWeaponAttachment) { var dic = entity.weaponAttachment.AttachmentDic; foreach (var pair in dic) { var attachGo = entity.multiUnityObject.LoadedAssets[pair.Key]; var location = WeaponPartLocation.EndOfTheWorld; location = WeaponTypeConvertUtil.GetLocationByPartType((EWeaponPartType)pair.Value); if (location != WeaponPartLocation.EndOfTheWorld) { _boneMount.MountWeaponAttachment(attachGo, weaponGo, location); } else { Logger.ErrorFormat("Location is illegal with item type {0}", pair.Value); } } var effectDic = entity.weaponAttachment.EffectDic; if (effectDic.Count > 0) { foreach (var effect in effectDic) { var attachGo = entity.multiUnityObject.LoadedAssets[effect]; attachGo.AsGameObject.transform.position = entity.position.Value; } } } }
public void OnLoadPartObjectSucess(SceneObjectEntity entity, UnityObject unityObj) { if (!Vertify(entity, unityObj)) { CheckLoadingState(entity); return; } entity.multiUnityObject.CacheAssetObject(unityObj); if (unityObj.AsGameObject != null) { var partAssetData = entity.weaponAttachment.PartAssetDict[unityObj.Address]; partAssetData.PartLocation = WeaponTypeConvertUtil.GetLocationByPartType((EWeaponPartType)partAssetData.PartSlotType); partAssetData.UnityObject = unityObj; entity.weaponAttachment.PartAssetDict[unityObj.Address] = partAssetData; AppearanceUtils.EnableRender(unityObj.AsGameObject); } CheckLoadingState(entity); }