Esempio n. 1
0
            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;
                }
            }
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
            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);
                }
            }
Esempio n. 5
0
        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);
            }
        }