public void OnLoadSucc(object source, UnityObjectWrapper <GameObject> obj) { PlayerEntity playerEntity = (PlayerEntity)source; var hitboxConfig = (GameObject)obj; HitBoxComponentUtility.InitHitBoxComponent(playerEntity.entityKey.Value, playerEntity, hitboxConfig); }
public static void OnLoadSucc(object source, UnityObjectWrapper <GameObject> obj) { VehicleEntity vehicle = (VehicleEntity)source; var hitboxConfig = (GameObject)obj; var hitboxImposter = HitBoxComponentUtility.InitHitBoxComponent(vehicle.entityKey.Value, vehicle, hitboxConfig); vehicle.ConfigHitBoxImposter(hitboxImposter); }
public void OnGoLoadSucc(object source, UnityObjectWrapper <GameObject> obj) { if (null == obj) { _logger.ErrorFormat("Load GameObject Asset Fialed: obj is null."); return; } if (null == obj.Value) { _logger.ErrorFormat("Asset {0}:{1} Load GameObject Fialed ", obj.Address.BundleName, obj.Address.AssetName); return; } int[] para = (int[])source; if (para == null || para.Length != 2) { return; } try { EAssetType atype = (EAssetType)para[0]; switch (atype) { case EAssetType.AUDIO: { //Sound int soundId = para[1]; if (!_dictSounds.ContainsKey(soundId)) { AudioSource audio = obj.Value.GetComponent <AudioSource>(); if (null != audio) { _dictSounds.Add(soundId, audio.clip); } } break; } case EAssetType.EFFECT: { //Effect int effectId = para[1]; _effectPool.AddEffectPrefab(effectId, obj.Value); break; } } _manager.AddRecycleRequest(obj); } catch (Exception e) { _logger.ErrorFormat(e.Message); } }
public static void AddAsset(this PlayerEntity player, UnityObjectWrapper <GameObject> asset) { if (asset != null) { if (player.hasRecycleableAsset) { player.recycleableAsset.Add(asset); } else { logger.InfoFormat("{0} doesn't have recycleableasset", player.entityKey); } } else { logger.InfoFormat("null asset in {0}", player.entityKey); } }
public void OnLoadSucc(object source, UnityObjectWrapper <GameObject> obj) { SingletonManager.Get <SubProgressBlackBoard>().Step(); _loadingCount--; if (obj.Value == null) { _logger.ErrorFormat("Preload asset {0} failed", obj.Address); } else { _loadRequestManager.AddRecycleRequest(obj); } if (_loadingCount <= 0) { _sessionState.FullfillExitCondition(typeof(PreLoadSystem)); } }
public void OnLoadSucc(object source, UnityObjectWrapper <GameObject> obj) { PlayerEntity player = (PlayerEntity)source; if (player.isFlagDestroy) { return; } var transform = obj.Value.transform; const string anchorName = "Driver_Seat"; var anchor = transform.FindChildRecursively(anchorName); if (anchor == null) { throw new Exception(String.Format("Can not find anchor with name {0} for parachute!", anchorName)); } player.playerSkyMove.IsParachuteLoading = false; player.playerSkyMove.Parachute = transform; player.playerSkyMove.ParachuteAnchor = anchor; }
public static void RemoveAsset(this PlayerEntity player, UnityObjectWrapper <GameObject> asset) { player.recycleableAsset.Remove(asset); }
public static void AddVehicleComponentsPostInit(this VehicleEntity vehicle, EVehicleType type, UnityObjectWrapper <GameObject> goWrapper, PlayerContext playerContext, bool isServer) { var go = goWrapper.Value; if (!vehicle.hasGameObject) { var controller = go.GetComponent <VehicleCommonController>(); vehicle.AddGameObject(controller, goWrapper.Address, goWrapper); controller.PutToSleep(); } if (!go.activeSelf) { var controller = go.GetComponent <VehicleCommonController>(); controller.IsActive = true; } go.transform.position = GetNewBirthPositionOnOverlap(go); if (vehicle.HasDynamicData()) { var dydata = vehicle.GetDynamicData(); dydata.Position = go.transform.position; } if (!vehicle.hasVehicleType) { vehicle.AddVehicleType(type); } vehicle.AddEntityKeyIdentifier(vehicle.entityKey.Value); vehicle.AddVehicleObjectCollision(playerContext); vehicle.AddSeatComponent(); vehicle.AddDynamicAndEffectDataPostInit(); vehicle.AddVehicleAllGameData(); vehicle.AddHitBoxComponent(); vehicle.AddGameEventComponent(); if (!vehicle.hasVehicleCmd) { vehicle.AddVehicleCmd(); } if (!vehicle.hasVehicleCmdOwner) { vehicle.AddVehicleCmdOwner(new VehicleCmdOwnerAdapter(vehicle)); } if (!vehicle.hasVehicleSyncEvent) { vehicle.AddVehicleSyncEvent(new Queue <IVehicleSyncEvent>()); } if (!vehicle.hasVehicleCollisionDamage) { vehicle.AddVehicleCollisionDamage(new Dictionary <EntityKey, VehicleCollisionDamage>(new EntityKeyComparer())); } EntityAPI[vehicle.GetTypeValue()].InitController(vehicle, isServer, vehicle.vehicleAssetInfo.Id); vehicle.isFlagSyncSelf = true; vehicle.isFlagSyncNonSelf = true; vehicle.isFlagCompensation = true; }
public void Call(object source, UnityObjectWrapper <GameObject> obj) { _player.AddAsset(obj); _handler(source, obj); _pool.Free(this); }
public void OnLoadSucc(object source, UnityObjectWrapper <GameObject> obj) { PlayerEntity player = (PlayerEntity)source; GameObject go = obj; RemoveRagdollOnServerSide(go); HandleLoadedModel(player, go); player.AddAsset(obj); player.AddThirdPersonModel(go); go.name = go.name.Replace("(Clone)", ""); go.transform.SetParent(player.RootGo().transform); go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; _logger.InfoFormat("P3 loaded: {0}", player.entityKey); var transformChache = go.AddComponent <TransformCache>(); BoneTool.CacheTransform(go, transformChache); if (!player.hasBones) { player.AddBones(null, null, null); } player.bones.Head = BoneMount.FindChildBoneFromCache(go, BoneName.CharacterHeadBoneName); player.bones.Spine = BoneMount.FindChildBoneFromCache(go, BoneName.CharacterSpineName); player.AddThirdPersonAnimator(go.GetComponent <Animator>()); var ik = go.AddComponent <PlayerIK>(); ik.SetAnimator(AvatarIKGoal.LeftHand, player.thirdPersonAnimator.UnityAnimator); ik.SetIKLayer(AvatarIKGoal.LeftHand, NetworkAnimatorLayer.ThirdPersonIKPassLayer); ik.SetAnimator(AvatarIKGoal.RightHand, player.thirdPersonAnimator.UnityAnimator); ik.SetIKLayer(AvatarIKGoal.RightHand, NetworkAnimatorLayer.ThirdPersonIKPassLayer); if (player.isFlagSelf) { var animationEvent = go.AddComponent <AnimationClipEvent>(); animationEvent.Player = player; player.animatorClip.ClipManager.SetAnimationCleanEventCallback(animationEvent.InterruptAnimationEventFunc); // 设置大厅传入的roleId和avatarId player.appearanceInterface.Appearance.SetRoleModelIdAndInitAvatar(player.playerInfo.RoleModelId, player.playerInfo.AvatarIds); } else { go.AddComponent <ThirdPersonAnimationClipEvent>(); } player.characterControllerInterface.CharacterController.SetCharacterRoot(player.characterContoller.Value.gameObject); player.appearanceInterface.Appearance.SetThirdPersonCharacter(go); player.thirdPersonAnimator.UnityAnimator.Update(0); player.characterBoneInterface.CharacterBone.SetCharacterRoot(player.characterContoller.Value.gameObject); player.characterBoneInterface.CharacterBone.SetThirdPersonCharacter(go); player.characterBoneInterface.CharacterBone.SetStablePelvisRotation(); player.appearanceInterface.Appearance.SetAnimatorP3(player.thirdPersonAnimator.UnityAnimator); player.appearanceInterface.Appearance.PlayerReborn(); player.characterControllerInterface.CharacterController.PlayerReborn(); // 实际应该使用SharedConfig.IsServer,但离线模式中其值为false if (!player.hasNetworkAnimator) { player.AddNetworkAnimator(NetworkAnimatorUtil.CreateAnimatorLayers(player.thirdPersonAnimator.UnityAnimator), NetworkAnimatorUtil.GetAnimatorParams(player.thirdPersonAnimator.UnityAnimator)); player.networkAnimator.SetEntityName(player.entityKey.ToString()); } if (SharedConfig.IsServer) { player.AddNetworkAnimatiorServerTime(0); } // 禁用非可见状态下的动画更新,在获取Stable状态之后 if (SharedConfig.IsServer || !player.isFlagSelf) { player.thirdPersonAnimator.UnityAnimator.cullingMode = AnimatorCullingMode.CullUpdateTransforms; } else { player.thirdPersonAnimator.UnityAnimator.cullingMode = AnimatorCullingMode.AlwaysAnimate; } }
public void OnLoadSucc(object source, UnityObjectWrapper <GameObject> obj) { PlayerEntity player = (PlayerEntity)source; GameObject go = obj; HandleLoadedModel(player, go); player.AddAsset(obj); player.AddFirstPersonModel(go); player.appearanceInterface.FirstPersonAppearance = new FirstPersonAppearanceManager(player.firstPersonAppearance); go.name = "P1_" + player.entityKey; go.transform.SetParent(player.RootGo().transform); go.transform.localPosition = new Vector3(0, player.firstPersonAppearance.FirstPersonHeight, player.firstPersonAppearance.FirstPersonForwardOffset); go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; _logger.InfoFormat("P1 loaded: {0}", player.entityKey); player.AddFirstPersonAnimator(go.GetComponent <Animator>()); var ik = go.AddComponent <PlayerIK>(); ik.SetAnimator(AvatarIKGoal.LeftHand, player.firstPersonAnimator.UnityAnimator); ik.SetIKLayer(AvatarIKGoal.LeftHand, NetworkAnimatorLayer.FirstPersonIKPassLayer); ik.SetAnimator(AvatarIKGoal.RightHand, player.firstPersonAnimator.UnityAnimator); ik.SetIKLayer(AvatarIKGoal.RightHand, NetworkAnimatorLayer.FirstPersonIKPassLayer); var transformChache = go.AddComponent <TransformCache>(); BoneTool.CacheTransform(go, transformChache); if (player.isFlagSelf) { var animationEvent = go.AddComponent <AnimationClipEvent>(); animationEvent.Player = player; player.animatorClip.ClipManager.SetAnimationCleanEventCallback(animationEvent.InterruptAnimationEventFunc); } else { go.AddComponent <ThirdPersonAnimationClipEvent>(); } player.firstPersonAnimator.UnityAnimator.Update(0); player.appearanceInterface.Appearance.SetFirstPersonCharacter(go); player.appearanceInterface.FirstPersonAppearance.SetFirstPersonCharacter(go); player.appearanceInterface.Appearance.SetAnimatorP1(player.firstPersonAnimator.UnityAnimator); player.stateInterface.State.SetName(player.RootGo().name); player.characterBoneInterface.CharacterBone.SetFirstPersonCharacter(go); if (!player.hasFpAnimStatus) { player.AddFpAnimStatus(NetworkAnimatorUtil.CreateAnimatorLayers(player.firstPersonAnimator.UnityAnimator), NetworkAnimatorUtil.GetAnimatorParams(player.firstPersonAnimator.UnityAnimator)); } // 禁用非可见状态下的动画更新 if (!player.isFlagSelf) { player.firstPersonAnimator.UnityAnimator.cullingMode = AnimatorCullingMode.CullUpdateTransforms; } else { player.firstPersonAnimator.UnityAnimator.cullingMode = AnimatorCullingMode.AlwaysAnimate; } }