コード例 #1
0
        public static void DragCar(VehicleContext context, PlayerEntity player)
        {
            var vehicles = context.GetGroup(VehicleMatcher.GameObject).GetEntities();

            var           position       = player.position.Value;
            var           minSqrDist     = float.MaxValue;
            VehicleEntity nearestVehicle = null;

            foreach (var vehicle in vehicles)
            {
                if (vehicle.HasAnyPassager() || (vehicle.hasVehicleDrivable && !vehicle.vehicleDrivable.IsDrivable) ||
                    !vehicle.IsCar())
                {
                    continue;
                }

                var sqrDist = (vehicle.GetDynamicData().Position - position).sqrMagnitude;
                if (sqrDist < minSqrDist)
                {
                    nearestVehicle = vehicle;
                    minSqrDist     = sqrDist;
                }
            }

            if (nearestVehicle != null)
            {
                var dragPosition = position + new Vector3(0.0f, 5.0f, 0.0f);
                var dynamicData  = nearestVehicle.GetDynamicData();
                dynamicData.Position = dragPosition;
                var go = nearestVehicle.gameObject.UnityObject.AsGameObject;
                go.transform.position = dragPosition;
            }
        }
コード例 #2
0
 public VehicleExecutionSelector(Contexts contexts)
 {
     VehicleContext                = contexts.vehicle;
     PlayerContext                 = contexts.player;
     _activeVehicleCache           = new List <Entity>();
     Vehicles                      = VehicleContext.GetGroup(VehicleMatcher.AllOf(VehicleMatcher.GameObject, VehicleMatcher.Position));
     _players                      = PlayerContext.GetGroup(PlayerMatcher.AllOf(PlayerMatcher.ThirdPersonModel, PlayerMatcher.GamePlay));
     _ignorePlayerVehicleCollision = false;
     SqrPhysicsDistance            = 150.0f * 150.0f;
 }
コード例 #3
0
        public static void ShowExplosionRange(VehicleContext context, PlayerEntity player, bool show,
                                              float radius)
        {
            var    vehicles         = context.GetGroup(VehicleMatcher.EntityKey).GetEntities();
            string smallRangeObject = "test_small_explosion_range";

            foreach (var vehicle in vehicles)
            {
                var color = Color.red;
                color.a = 1.0f;
                var range = GetSphereRange(vehicle, smallRangeObject, color);
                if (radius > 0)
                {
                    range.transform.localScale = new Vector3(2 * radius, 2 * radius, 2 * radius);
                }

                range.GetComponent <MeshRenderer>().enabled = show;

                /*  color = Color.blue;
                 * color.a = 0.4f;
                 * range = GetSphereRange(vehicle, largeRangeObject, largeRadius, color);
                 * range.GetComponent<MeshRenderer>().enabled = show;*/
            }
        }
コード例 #4
0
 public VehicleGameStateUpdateSystem(VehicleContext context, BaseGameHandlerRegister handlerRegister) : base(handlerRegister)
 {
     _context  = context;
     _vehicles = context.GetGroup(VehicleMatcher.AllOf(VehicleMatcher.VehicleGameEvent, VehicleMatcher.GameObject));
 }
コード例 #5
0
 public ClientVehiclePlaybackSystem(PlayerContext playerContext, VehicleContext vehicleContext)
 {
     _vehicleContext = vehicleContext;
     _playerContext  = playerContext;
     _vehicles       = vehicleContext.GetGroup(VehicleMatcher.AllOf(VehicleMatcher.GameObject));
 }