protected void HandleLoadedModel(PlayerEntity player, GameObject obj) { obj.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.Player); PlayerEntityUtility.DisableCollider(obj.transform); if (!player.hasCharacterContoller) { var character = DefaultGo.CreateGameObject(player.entityKey.ToString()); character.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.Player); CharacterController cc = PlayerEntityUtility.InitCharacterController(character); KinematicCharacterMotor kcc = PlayerEntityUtility.InitKinematicCharacterMotor(character); CharacterControllerContext characterControllerContext = new CharacterControllerContext( new UnityCharacterController(cc, !player.isFlagSelf), new Core.CharacterController.ConcreteController.ProneCharacterController(kcc, new ProneController()), new Core.CharacterController.ConcreteController.DiveCharacterController(kcc, new DiveController()), new Core.CharacterController.ConcreteController.SwimCharacterController(kcc, new SwimController()) ); var curver = character.AddComponent <AirMoveCurve>(); curver.AireMoveCurve = SingletonManager.Get <CharacterStateConfigManager>().AirMoveCurve; curver.MovementCurve = SingletonManager.Get <CharacterStateConfigManager>().MovementCurve; curver.PostureCurve = SingletonManager.Get <CharacterStateConfigManager>().PostureCurve; if (character.GetComponent <EntityReference>() == null) { character.AddComponentUncheckRequireAndDisallowMulti <EntityReference>(); } character.GetComponent <EntityReference>().Init(player.entityAdapter); var comp = character.AddComponent <PlayerVehicleCollision>(); comp.AllContext = _contexts; var appearanceManager = new AppearanceManager(); var characterControllerManager = new CharacterControllerManager(); characterControllerManager.SetCharacterController(characterControllerContext); var characterBone = new CharacterBoneManager(); characterBone.SetWardrobeController(appearanceManager.GetWardrobeController()); characterBone.SetWeaponController(appearanceManager.GetController <WeaponController>()); var weaponController = appearanceManager.GetController <WeaponController>() as WeaponController; if (null != weaponController) { weaponController.SetWeaponChangedCallBack(characterBone.CurrentWeaponChanged); weaponController.SetCacheChangeAction(characterBone.CacheChangeCacheAction); } player.AddCharacterControllerInterface(characterControllerManager); player.AddAppearanceInterface(appearanceManager); player.AddCharacterContoller(characterControllerContext); player.AddCharacterBoneInterface(characterBone); player.AddRecycleableAsset(character); player.AddPlayerGameState(PlayerLifeStateEnum.NullState); } }
public void ExecuteUserCmd(IPlayerUserCmdGetter getter, IUserCmd cmd) { /*throw new System.NotImplementedException();*/ var player = getter.OwnerEntity as PlayerEntity; if (player.hasGamePlay) { if (_witness != player.gamePlay.Witness) { PlayerEntityUtility.SetActive(player, !player.gamePlay.Witness, EActiveMask.Witness); _witness = player.gamePlay.Witness; } } }
protected static bool IsAboveGround(PlayerEntity player, Vector3 position, float height) { Vector3 p1, p2; float radius; PlayerEntityUtility.GetCapsule(player, position, out p1, out p2, out radius); var end = position - Vector3.up * height; if (SingletonManager.Get <MapConfigManager>().InWater(end)) { return(false); } return(!Physics.CapsuleCast(p1, p2, radius, -Vector3.up, height, UnityLayers.SceneCollidableLayerMask)); }
protected void HandleLoadedModel(PlayerEntity player, GameObject obj) { obj.layer = UnityLayers.PlayerLayer; PlayerEntityUtility.DisableCollider(obj.transform); if (!player.hasCharacterContoller) { var character = DefaultGo.CreateGameObject(player.entityKey.ToString()); character.layer = UnityLayers.PlayerLayer; CharacterController cc = PlayerEntityUtility.InitCharacterController(character); KinematicCharacterMotor kcc = PlayerEntityUtility.InitKinematicCharacterMotor(character); CharacterControllerContext characterControllerContext = new CharacterControllerContext( new UnityCharacterController(cc), new Core.CharacterController.ConcreteController.ProneCharacterController(kcc, new ProneController()), new Core.CharacterController.ConcreteController.DiveCharacterController(kcc, new DiveController()), new Core.CharacterController.ConcreteController.SwimCharacterController(kcc, new SwimController()) ); player.AddCharacterContoller(characterControllerContext); var curver = character.AddComponent <AirMoveCurve>(); curver.AireMoveCurve = SingletonManager.Get <CharacterStateConfigManager>().AirMoveCurve; character.AddComponent <EntityReference>(); character.GetComponent <EntityReference>().Init(player.entityAdapter); var comp = character.AddComponent <PlayerVehicleCollision>(); comp.Context = _playerContext; var appearanceManager = new AppearanceManager(); player.AddAppearanceInterface(appearanceManager); var characterControllerManager = new CharacterControllerManager(); characterControllerManager.SetCharacterController(characterControllerContext); player.AddCharacterControllerInterface(characterControllerManager); var characterBone = new CharacterBoneManager(); characterBone.SetWardrobeController(player.appearanceInterface.Appearance.GetWardrobeController()); characterBone.SetWeaponController(player.appearanceInterface.Appearance.GetWeaponController()); player.appearanceInterface.Appearance.GetWeaponController().SetWeaponChangedCallBack(characterBone.CurrentWeaponChanged); player.appearanceInterface.Appearance.GetWeaponController().SetCacheChangeAction(characterBone.CacheChangeCacheAction); player.AddCharacterBoneInterface(characterBone); player.AddRecycleableAsset(character); } }
public static void AttachParachute(Contexts contexts, PlayerEntity player, bool isSyncRemote) { //服务器更新动画不更新骨骼数据,要用到骨骼数据,需要更新下骨骼数据 PlayerEntityUtility.UpdateAnimatorTransform(player); var transform = player.RootGo().transform; var parachute = player.playerSkyMove.Parachute; var anchor = player.playerSkyMove.ParachuteAnchor; if (parachute != null && !player.playerSkyMove.IsParachuteAttached) { _logger.InfoFormat("SKyDive : Attach Patachute To Parachuting State"); if (!isSyncRemote) { var position = transform.position; parachute.SetPositionAndRotation(transform.position, transform.rotation); var target = player.thirdPersonModel.Value.transform.FindChildRecursively(BoneName.CharacterRightHandName); BoneMount.FixedObj2Bones(transform.gameObject, target, anchor); parachute.position += position - transform.position; player.playerSkyMove.Position = parachute.transform.position; player.playerSkyMove.Rotation = parachute.transform.rotation; player.playerSkyMove.MoveStage = (int)SkyMoveStage.Parachuting; player.playerSkyMove.LocalPlayerPosition = transform.localPosition; player.playerSkyMove.LocalPlayerRotation = transform.localRotation; } else { transform.parent = anchor; player.playerSkyMove.Parachute.position = player.playerSkyMove.Position; player.playerSkyMove.Parachute.rotation = player.playerSkyMove.Rotation; transform.localPosition = player.playerSkyMove.LocalPlayerPosition; transform.localRotation = player.playerSkyMove.LocalPlayerRotation; } player.playerSkyMove.IsParachuteAttached = true; player.playerSkyMove.IsWaitForAttach = false; parachute.gameObject.SetActive(true); } }