public Vector3 GetAnchorEulerAngle(PlayerEntity player, ECameraArchorType type) { switch (type) { case ECameraArchorType.Car: var r = player.controlledVehicle.CameraCurrentRotation.eulerAngles; return(new Vector3(0, r.y, 0)); case ECameraArchorType.AirPlane: return(Vector3.zero); case ECameraArchorType.FollowEntity: PlayerEntity follow = _playerContext.GetEntityWithEntityKey(new Core.EntityComponent.EntityKey(player.gamePlay.CameraEntityId, (short)EEntityType.Player)); if (follow != null) { return(follow.orientation.EulerAngle); } else { return(player.orientation.EulerAngle); } case ECameraArchorType.Parachuting: return(new Vector3(0, player.playerSkyMove.Rotation.eulerAngles.y, 0)); default: return(player.orientation.EulerAngle); } }
public Vector3 GetAnchorPosition(PlayerEntity player, ECameraArchorType type) { player.cameraArchor.Active = true; switch (type) { case ECameraArchorType.Car: var t = player.controlledVehicle.CameraCurrentPosition; return(new Vector3(t.x, t.y, t.z)); case ECameraArchorType.AirPlane: return(player.GetAirPlane(_freeMoveContext).position.Value); case ECameraArchorType.FollowEntity: PlayerEntity follow = _playerContext.GetEntityWithEntityKey(new Core.EntityComponent.EntityKey(player.gamePlay.CameraEntityId, (short)EEntityType.Player)); if (follow != null) { return(follow.position.Value); } else { return(player.position.Value); } case ECameraArchorType.Parachuting: return(player.playerSkyMove.Position); default: if (player.hasAppearanceInterface && player.appearanceInterface.Appearance.IsFirstPerson) { var camRoot = player.characterBoneInterface.CharacterBone.GetLocation(SpecialLocation .FirstPersonCamera, CharacterView.FirstPerson); if (null != camRoot) { return(camRoot.position); } else { Logger.Error("First camera root can't be found"); } } return(player.position.Value); } }