public IParkingSlot LocateFreeSlots(VehicleBase vehicle) { IParkingSlot parkingSlot = null; foreach (var level in _parkingLookup) { parkingSlot = FindSlot(parkingSlot, level, typeof(MotorcycleSlot)); if (parkingSlot != null) { break; } else { parkingSlot = FindSlot(parkingSlot, level, typeof(CompactSlot)); if (parkingSlot != null) { break; } else { parkingSlot = FindSlot(parkingSlot, level, typeof(LargeSlot)); if (parkingSlot != null) { break; } } } } return(parkingSlot); }
public void MarkBooked(VehicleBase vehicle, IParkingSlot slot) { if (!_vehicleToSlotMap.ContainsKey(slot)) { _vehicleToSlotMap.Add(slot, vehicle); } }
public static VehicleDb ToVehicleDb(this VehicleBase vehicleBase) { VehicleDb vehicleDb = new VehicleDb() { Id = vehicleBase.Id, Make = vehicleBase.Make, Model = vehicleBase.Model, VehicleType = EVehicleType.Car }; Car car = vehicleBase as Car; if (car != null) { vehicleDb.Engine = car.Engine; vehicleDb.Doors = car.Doors; vehicleDb.Wheels = car.Wheels; vehicleDb.BodyType = car.BodyType; } Boat boat = vehicleBase as Boat; if (boat != null) { vehicleDb.Length = boat.Length; vehicleDb.Name = boat.Name; vehicleDb.VehicleType = EVehicleType.Boat; } return(vehicleDb); }
public void CrossFinishLine(VehicleBase car) { Vector3 heading = car.transform.right; float dot = Vector3.Dot(_startingNavLine.transform.right, heading); if (dot <= 0) { return; } if (_lapsComplete.ContainsKey(car.id)) { int laps = _lapsComplete[car.id]; laps += 1; if (onLapFinished != null) { onLapFinished(car.id); } // Report race finished if done if (laps >= targetLaps) { if (onRaceFinished != null) { onRaceFinished(car.id); } } _lapsComplete[car.id] = laps; } else { _lapsComplete[car.id] = 0; } }
public IParkingSlot LocateFreeSlots(VehicleBase vehicle) { IParkingSlot parkingSlot = null; LinkedListNode <IParkingSlot> largeSlot = null; foreach (var level in _parkingLookup) { largeSlot = FindSlot(parkingSlot, level, typeof(LargeSlot)); if (largeSlot != null) { int counter = 0; int requiredSlots = 5; //todo: read from configuration while (largeSlot.Next == null || !largeSlot.Next.Value.IsOccupied || counter == requiredSlots) { if (!largeSlot.Next.Value.IsOccupied) { counter++; largeSlot = largeSlot.Next; } } if (counter == requiredSlots) { break; } } } return(parkingSlot); }
public ArcadeCarPhysics(GameObject player, VehicleBase currentVehicle) { HandlingObject = player; _currentVehicle = currentVehicle; SetSpecifications(); CurrentCondition = HandlingCondition.OnGround; }
private static void AllocateParkingSlot(VehicleBase vehicle, IParkingLot parkingLot) { IParkingSlot availableParkingSlot = parkingLot.FindParking(vehicle); if (availableParkingSlot != null) { parkingLot.AllocateParkingSlot(vehicle, availableParkingSlot); } }
public SlowVehicleDestroyer( GameObject gameObject, VehicleBase currentVehicle, float minimumSpeed) { _minSpeed = minimumSpeed; _go = gameObject; _currentVehicle = currentVehicle; }
public void MarkVacant(VehicleBase vehicle) { var matched = _vehicleToSlotMap.Single(x => x.Value == vehicle); if (_vehicleToSlotMap.ContainsKey(matched.Key)) { _vehicleToSlotMap.Remove(matched.Key); } }
void OnEnable() { m_lastVehicleTime = -1.0f; m_warningTime = -10.0f; if (vehicle == null) { vehicle = GetComponentInParent <VehicleBase>(); } }
public OverloadVehicleDestroyer( GameObject gameObject, VehicleBase currentVehicle, float maxOverload) { _maxOverload = maxOverload; _currentVehicle = currentVehicle; _previousSpeed = _currentVehicle.Handling.CurrentVelocity.y; }
public StupidEnemyCarHandling(GameObject enemy, VehicleBase currentVehicle) { HandlingObject = enemy; _currentVehicle = currentVehicle; _pathFinder = new StupidPathFinder(); _prevPosition = HandlingObject.transform.position; SetSpecifications(); UpdateHandling(); CurrentCondition = HandlingCondition.OnGround; }
public FullRigidBodyCarPhysics(GameObject player, VehicleBase currentVehicle) { HandlingObject = player; _currentVehicle = currentVehicle; _vehicleRb = HandlingObject.GetComponent <Rigidbody2D>(); SetSpecifications(); var uiCanvas = GameObject.Find("UiCanvas").GetComponent <Canvas>(); _speedText = uiCanvas.transform.Find("SpeedLabel").GetComponent <Text>(); CurrentCondition = HandlingCondition.OnGround; }
static void Main(string[] args) { IParkingLot parkingLot = BuildParkingLot(); if (parkingLot != null) { //// Configure Parking Lot with Paking Slots //parkingLot.ConfigureParking(); VehicleBase vehicle = FactoryVehicle.Create(VehicleType.Bus); AllocateParkingSlot(vehicle, parkingLot); } }
public bool MarkedOccupied(VehicleBase vehicle) { bool isParked = false; if (!IsOccupied) { if (vehicle is Bike) { IsOccupied = true; isParked = true; } } return(isParked); }
private VehicleOwnership GetClosesVehicle(PlayerSession playerSession) { VehicleOwnership[] vehicleOwnerships = Resources.FindObjectsOfTypeAll <VehicleOwnership>(); if (vehicleOwnerships == null || vehicleOwnerships.Count() < 1) { return(null); } IEnumerable <VehicleOwnership> unDeadOwnerships = vehicleOwnerships.Where(x => x.StatManager != null && !x.StatManager.Dead); if (unDeadOwnerships == null || unDeadOwnerships.Count() < 1) { return(null); } IEnumerable <VehicleOwnership> sortedOwnerships = unDeadOwnerships.OrderBy(vehicleOwnership => GetPlayerToCarDistance(playerSession, vehicleOwnership)); if (sortedOwnerships == null || sortedOwnerships.Count() < 1) { return(null); } foreach (VehicleOwnership vehicleOwnership in sortedOwnerships) { if (vehicleOwnership?.StatManager?.GetComponent <VehicleBase>() == null) { continue; } VehicleBase vehicleBase = vehicleOwnership.StatManager.GetComponent <VehicleBase>(); VehiclePassenger[] vehiclePassengers = vehicleBase.GetPassengers(); if (vehiclePassengers == null || vehiclePassengers.Count() < 1) { continue; } if (PlayerInsideVehicle(vehiclePassengers, playerSession)) { return(vehicleOwnership); } } return(sortedOwnerships.First()); }
void SetupSinglePlayerGame() { RetainedUserPicksScript userPicksScript = RetainedUserPicksScript.Instance; // Can we get the car number from the previous menu? CarController car = myCar.GetComponent <CarController>(); car.SetCarChoice(userPicksScript.carSelected, false); car.id = _myParticipantId; // Set our time left and laps remaining _timeLeft = startTimesPerLevel[userPicksScript.diffSelected]; _lapsRemaining = lapsPerLevel[userPicksScript.diffSelected]; guiObject.SetTime(_timeLeft); guiObject.SetLaps(_lapsRemaining); _trackController.targetLaps = _lapsRemaining; car.SpawnAtStart(0); for (int i = 0; i < numOpponents; ++i) { GameObject c = GameObject.Instantiate(opponentPrefab); VehicleBase v = c.GetComponent <VehicleBase>(); v.Setup(); v.SetCarChoice(0, false); v.SpawnAtStart(i + 1); } VehicleBase[] cars = FindObjectsOfType <VehicleBase>(); _vehicles = new List <VehicleBase>(cars.Length); for (int i = 0; i < cars.Length; ++i) { _vehicles.Add(cars[i]); } // Rules are created with the expectation that top will execute first, but data works better to remove from the end rules.Reverse(); AdvanceToNextRule(); }
void Process(VehicleBase vehicle) { // Find out if the vehicle is inside the action range Vector3 relativePos = m_transform.InverseTransformPoint(vehicle.cachedTransform.position); float position = relativePos.z; if (position > 0.0f && position < range.z && MathUtility.FastAbs(relativePos.x) < range.x * 0.5f && MathUtility.FastAbs(relativePos.y) < range.y * 0.5f) { float fadeIn = fadeInZone > 0.0f? Mathf.InverseLerp(0.0f, range.z * fadeInZone, position) : 1.0f; float fadeOut = fadeOutZone > 0.0f? Mathf.InverseLerp(range.z, range.z * (1.0f - fadeOutZone), position) : 1.0f; float factor = Mathf.Min(fadeIn, fadeOut); float targetSpeed = Mathf.Lerp(entryTargetSpeed, exitTargetSpeed, position / range.z); float speedLimitThrottle = Mathf.Lerp(1.0f, Mathf.Clamp01((targetSpeed - vehicle.speed) * inputRamp), factor); float vehicleThrottle = vehicle.data.Get(Channel.Input, InputData.Throttle) / 10000.0f; vehicleThrottle = Mathf.Min(vehicleThrottle, speedLimitThrottle); vehicle.data.Set(Channel.Input, InputData.Throttle, (int)(vehicleThrottle * 10000)); } }
void OnEnable() { rigidBody424 = GetComponent <Rigidbody>(); vehicleBase = GetComponent <VehicleBase>(); target = GetComponentInChildren <VPReplay>(); replayController = GetComponentInChildren <VPReplayController>(); // Disable autopilot when no replay data is available if (replayController == null || replayController.predefinedReplay == null) { enabled = false; return; } recordedReplay = replayController.predefinedReplay.recordedData; cuts = recordedReplay.Count / 500; m_deviceInput = vehicleBase.GetComponentInChildren <VPDeviceInput>(); if (m_deviceInput != null) { m_ffbForceIntensity = m_deviceInput.forceIntensity; m_ffbDamperCoefficient = m_deviceInput.damperCoefficient; } }
public static VehicleBase Create(VehicleType vehicleType) { VehicleBase vehicle = null; switch (vehicleType) { case VehicleType.Bike: vehicle = new Bike(); break; case VehicleType.Car: vehicle = new Car(); break; case VehicleType.Bus: vehicle = new Bus(); break; default: throw new Exception(String.Format("Vehicle {0} not supported", vehicleType.ToString())); } return(vehicle); }
void Process(VehicleBase vehicle) { // Find out if the vehicle is inside the action range Vector3 relativePos = m_transform.InverseTransformPoint(vehicle.cachedTransform.position); float distance = relativePos.z; if (distance > 0.0f && distance < range.z && MathUtility.FastAbs(relativePos.x) < range.x * 0.5f && MathUtility.FastAbs(relativePos.y) < range.y * 0.5f) { float speed = -m_transform.InverseTransformDirection(vehicle.cachedRigidbody.velocity).z; distance -= speed * speed * Time.deltaTime; if (distance < 0.0f) { distance = 0.0f; } float targetBrakeSpeed = targetSpeed + Mathf.Sqrt(2.0f * maxAccelerationG * 9.8f * distance); float deltaSpeed = targetBrakeSpeed - speed; // Debug.Log("Speed: " + speed.ToString("0.00") + " Target: " + targetBrakeSpeed.ToString("0.00") + " Delta: " + deltaSpeed.ToString("0.00")); float targetThrottleInput = Mathf.Clamp01(deltaSpeed * inputRamp); float targetBrakeInput = Mathf.Clamp01(-deltaSpeed * inputRamp); float vehicleThrottle = vehicle.data.Get(Channel.Input, InputData.Throttle) / 10000.0f; float vehicleBrake = vehicle.data.Get(Channel.Input, InputData.Brake) / 10000.0f; vehicleThrottle = Mathf.Min(vehicleThrottle, targetThrottleInput); vehicleBrake = Mathf.Max(vehicleBrake, targetBrakeInput); vehicle.data.Set(Channel.Input, InputData.Throttle, (int)(vehicleThrottle * 10000)); vehicle.data.Set(Channel.Input, InputData.Brake, (int)(vehicleBrake * 10000)); } }
public bool MarkedUnoccupied(VehicleBase vehicle) { return(IsOccupied = false); }
void OnEnable() { target = GetComponentInParent <VehicleBase>(); }
public PlayerFiring(Transform parentTransform, VehicleBase currentVehicle) { _currentVehicle = currentVehicle; _parentTransform = parentTransform; }
void Awake() { vehicle = GetComponent <VehicleBase>(); }
void OnEnable() { target = GetComponentInParent <VehicleBase>(); m_aero = target.GetComponentInChildren <Perrinn424Aerodynamics>(); degreesPerSecond = 90 / m_aero.dRSActivationTime; }
public void CreateVehicle(VehicleBase vehicle) { _vehicleRepository.CreateVehicle(vehicle.ToVehicleDb()); }
/// <summary> /// Build a minimal row from a class (key fields only) /// </summary> public static void BuildMinimalRow(ref DataRow row, Vehicle entity) { VehicleBase.BuildMinimalRow(ref row, entity); }
private static void DeAllocateParking(VehicleBase vehicle, IParkingLot parkingLot) { parkingLot.DeallocateParkingSlot(vehicle); }
public void Uninstall(VehicleBase vehicle) { vehicle.Performance.MaxSpeed -= _maxSpeed; }