Ejemplo n.º 1
0
 public CarEntity()
 {
     frontLeft  = new CarWheel(this);
     frontRight = new CarWheel(this);
     backLeft   = new CarWheel(this);
     backRight  = new CarWheel(this);
 }
Ejemplo n.º 2
0
    public override void Start()
    {
        base.Start();
        driveBehavior = DriveBehavior.None;

        vehicleControls = GetComponent <VehicleControls>();
        turretTransform = transform.Find("Turret");
        turret          = turretTransform.GetComponent <SheepTurret>();
        turret.owner    = gameObject;
        myRigidBody     = GetComponent <Rigidbody2D>();
        if (reversePosition)
        {
            reverseFactor *= -1;
        }
        acceleration = Random.value;

        if (reversePosition)
        {
            OrientationHelper.RotateTransform(turretTransform, 180);
        }
        foreach (Transform child in transform.Find("Body").transform)
        {
            CarWheel wheel = child.GetComponent <CarWheel>();
            if (wheel)
            {
                wheel.vehicleControls = vehicleControls;
            }
        }
    }
 public static Car GetACarFromFactory(CarEngine engine, CarWheel wheel)
 {
     CarGas gas = GetSomeCarGas();
     Car runningCar = CarFactory.BuildARunningCar(engine, wheel, gas); // VendingMachine has the knowledge of Engine & Wheel at this point
     MustDoCarTesting(runningCar);
     return runningCar;
 }
Ejemplo n.º 4
0
        //Adds a new wheel to the Cosmos database [MWH]
        //new PartitionKey(data.VehicleModel)
        public async Task <CarWheel> AddWheelItemASync(CarWheel data)
        {
            Console.Write(data.Model);
            var response = await this._container.CreateItemAsync <CarWheel>(data, new PartitionKey(data.WheelDimensions.Width));

            return(response.Resource);
        }
 private void ApplyEnabled(CarWheel Wheel, bool enable)
 {
     if (Wheel != null)
     {
         Wheel.enabled = enable;
     }
 }
                public static Car GetACarFromFactory(CarEngine engine, CarWheel wheel)
                {
                    CarGas gas        = GetSomeCarGas();
                    Car    runningCar = CarFactory.BuildARunningCar(engine, wheel, gas); // VendingMachine has the knowledge of Engine & Wheel at this point

                    MustDoCarTesting(runningCar);
                    return(runningCar);
                }
Ejemplo n.º 7
0
    void Start()
    {
        gameMarker          = GameObject.Find("Game Root/GameMarker");
        currentStunDuration = maxStunDuration;
        myRigidbody         = GetComponent <Rigidbody2D>();
        players.Add(gameObject);
        playerHitState        = gameObject.AddComponent <PlayerHitState>() as PlayerHitState;
        playerHitState.player = gameObject;
        GameObject vulcanObject = Instantiate(Resources.Load("Vulcan"), transform.position, Quaternion.identity) as GameObject;

        vulcanObject.transform.parent = transform;
        vulcan        = vulcanObject.GetComponent <Vulcan>() as Vulcan;
        vulcan.player = this;
        GameObject bombLauncherObject = Instantiate(Resources.Load("Bomb Launcher"), transform.position, Quaternion.identity) as GameObject;

        bombLauncherObject.transform.parent = transform;
        bombLauncher         = bombLauncherObject.GetComponent <BombLauncher>() as BombLauncher;
        bombLauncher.player  = this;
        shotgun              = gameObject.AddComponent <Shotgun>() as Shotgun;
        shotgun.player       = this;
        gigaBeam             = gameObject.AddComponent <GigaBeam>() as GigaBeam;
        gigaBeam.player      = this;
        magnetMissile        = gameObject.AddComponent <MagnetMissile>() as MagnetMissile;
        magnetMissile.player = this;
        reversePosition      = GetComponent <Entity>().affinity.GetComponent <Fleet>().reversePosition;
        body = transform.Find("Body").gameObject;
        body.GetComponent <SpriteRenderer>().color = GetComponent <Entity>().affinity.GetComponent <Fleet>().teamColor;
        shieldObject = Instantiate(shieldPrefab, transform.position, Quaternion.identity) as GameObject;
        shieldObject.transform.parent = gameObject.transform;
        shield        = shieldObject.GetComponent <Shield>();
        shield.player = this;
        playerHitState.SwitchToInvincible();
        damageBehavior = GetComponent <DamageBehavior>();
        currentExValue = GetComponent <Entity>().affinity.GetComponent <Fleet>().lastExValue;
        gameObject.transform.eulerAngles = new Vector3(
            gameObject.transform.eulerAngles.x,
            gameObject.transform.eulerAngles.y,
            gameObject.transform.eulerAngles.z - 90);
        vehicleControls = GetComponent <VehicleControls>();
        if (reversePosition)
        {
            reverseIndex *= -1;
        }
        GameObject playerHud = Instantiate(Resources.Load("HUD/PlayerHUD"), transform.position, Quaternion.identity) as GameObject;

        playerHud.transform.parent = GameObject.Find("WorldspaceHUD").transform;
        playerHud.GetComponent <PlayerHUD>().player = this;
        defaultColor = body.GetComponent <SpriteRenderer>().color;
        foreach (Transform child in body.transform)
        {
            CarWheel wheel = child.GetComponent <CarWheel>();
            if (wheel)
            {
                wheel.vehicleControls = vehicleControls;
            }
        }
        currentExValue = maxExValue;
    }
                public static Car BuyACar()
                {
                    CarEngine selectedEngine = new CarEngine(); //Select an Engine you like
                    CarWheel  selectedWheel  = new CarWheel();  //Select a  Wheel  you like

                    Car car = CarVendingMachine.GetACarFromFactory(selectedEngine, selectedWheel);

                    return(car);
                }
Ejemplo n.º 9
0
    public bool Raycast(float length, bool doPhysics, Vector3 offset, ref CarWheel wheel, float dt)
    {
        var position = _parent.WorldPos;
        var rotation = _parent.WorldRot;

        var wheelAttachPos = (position + rotation.Up * 20.0f) + offset;
        var wheelExtend    = wheelAttachPos - rotation.Up * length;

        var tr = Trace.Ray(wheelAttachPos, wheelExtend)
                 .Ignore(_parent)
                 .Run();

        if (!doPhysics)
        {
            var wheelPosition = tr.Hit ? tr.EndPos : wheelExtend;
            wheelPosition += rotation.Up * _parent.WheelRadius;
            wheel.distance = length * tr.Fraction;

            if (tr.Hit)
            {
                DebugOverlay.Circle(wheelPosition, rotation * Rotation.FromYaw(90), _parent.WheelRadius, Color.Red.WithAlpha(0.1f), false);
                DebugOverlay.Line(tr.StartPos, tr.EndPos, Color.Red, 0, false);
            }
            else
            {
                DebugOverlay.Circle(wheelPosition, rotation * Rotation.FromYaw(90), _parent.WheelRadius, Color.Green.WithAlpha(0.1f), false);
                DebugOverlay.Line(wheelAttachPos, wheelExtend, Color.Green, 0, false);
            }

            return(tr.Hit);
        }

        if (!tr.Hit)
        {
            return(false);
        }

        var body = _parent.PhysicsBody;

        _previousLength = _currentLength;
        _currentLength  = length - tr.Distance;

        var springVelocity       = (_currentLength - _previousLength) / dt;
        var springForce          = body.Mass * 50.0f * _currentLength;
        var damperForce          = body.Mass * (1.5f + (1.0f - tr.Fraction) * 3.0f) * springVelocity;
        var velocity             = body.GetVelocityAtPoint(wheelAttachPos);
        var speed                = velocity.Length;
        var speedDot             = MathF.Abs(speed) > 0.0f ? MathF.Abs(MathF.Min(Vector3.Dot(velocity, rotation.Up.Normal) / speed, 0.0f)) : 0.0f;
        var speedAlongNormal     = speedDot * speed;
        var correctionMultiplier = (1.0f - tr.Fraction) * (speedAlongNormal / 1000.0f);
        var correctionForce      = correctionMultiplier * 50.0f * speedAlongNormal / dt;

        body.ApplyImpulseAt(wheelAttachPos, tr.Normal * (springForce + damperForce + correctionForce) * dt);

        return(true);
    }
    private void Awake()
    {
        carControl = GetComponent<CarControl>();
        flWheel = carControl.WheelFL;
        frWheel = carControl.WheelFR;
        rlWheel = carControl.WheelRL;
        rrWheel = carControl.WheelRR;

        JoinNodeNetwork();
    }
                public static Car BuyACar()
                {
                    CarEngine selectedEngine = new CarEngine(); //Select an Engine you like
                    CarWheel selectedWheel = new CarWheel();    //Select a  Wheel  you like

                    // Only Caller has the knowledge of Engine & Wheel
                    Func<CarGas, Car> getARunningCarWithGas = gas => CarFactory.BuildARunningCar(selectedEngine, selectedWheel, gas);

                    Car car = CarVendingMachine.GetACarFromFactory(getARunningCarWithGas);
                    return car;
                }
                public static Car BuyACar()
                {
                    CarEngine selectedEngine = new CarEngine(); //Select an Engine you like
                    CarWheel  selectedWheel  = new CarWheel();  //Select a  Wheel  you like

                    // Only Caller has the knowledge of Engine & Wheel
                    Func <CarGas, Car> getARunningCarWithGas = gas => CarFactory.BuildARunningCar(selectedEngine, selectedWheel, gas);

                    Car car = CarVendingMachine.GetACarFromFactory(getARunningCarWithGas);

                    return(car);
                }
 private void ApplyCommonParameters(CarWheel Wheel)
 {
     Wheel.ForwardWheelFriction  = ForwardWheelFriction;
     Wheel.SidewaysWheelFriction = SidewaysWheelFriction;
     Wheel.brakeForceFactor      = brakeForceFactor;
     Wheel.motorForceFactor      = motorForceFactor;
     Wheel.performancePeak       = motorPerformancePeak;
     Wheel.sidewaysDriftFriction = sidewaysDriftFriction;
     Wheel.staticFrictionMax     = staticFrictionMax;
     Wheel.serviceMode           = serviceMode;
     Wheel.optimized             = optimized;
 }
Ejemplo n.º 14
0
    void OnSceneGUI()
    {
        CarWheel wheel = (CarWheel)this.target;

        Transform wheelModelTransform = wheel.transform;

        if (wheel.wheelModel != null)
        {
            wheelModelTransform = wheel.wheelModel;
        }

        Handles.color = new Color(0f, 1f, 0f, 0.4f);

        Vector3 topSuspensionPosition = wheel.transform.position + Vector3.up * wheel.suspensionHeight;

        Handles.DrawDottedLine(wheel.transform.position, topSuspensionPosition, 2f);
        Handles.DrawWireArc(topSuspensionPosition, wheelModelTransform.forward, wheel.transform.up, 360f, wheel.wheelRadius);

        Handles.color = Color.red;

        Handles.DrawWireArc(wheel.transform.position, wheelModelTransform.forward, wheel.transform.up, 360f, wheel.wheelRadius);
        if (wheel.rotate)
        {
            Vector3 arrowDirection = Vector3.Cross(wheelModelTransform.forward, wheel.transform.up);
            Handles.ArrowHandleCap(0, wheel.transform.position + wheel.transform.up * wheel.wheelRadius, Quaternion.LookRotation(arrowDirection), 0.5f, EventType.Repaint);
        }
        if (wheel.turnAngle != 0f)
        {
            Handles.color = new Color(0f, 0f, 1f, 0.5f);
            Quaternion turnQuaternion = Quaternion.AngleAxis(wheel.turnAngle, wheel.transform.up);
            Handles.DrawWireArc(wheel.transform.position, turnQuaternion * wheelModelTransform.forward, wheel.transform.up, 180f, wheel.wheelRadius);

            turnQuaternion = Quaternion.AngleAxis(-wheel.turnAngle, wheel.transform.up);
            Handles.DrawWireArc(wheel.transform.position, turnQuaternion * wheelModelTransform.forward, wheel.transform.up, 180f, wheel.wheelRadius);
        }
    }
 private void ApplyFrontParameters(CarWheel Wheel)
 {
     Wheel.sidewaysForceFactor = frontSidewaysGrip;
 }
 private void ApplyFrontParameters(CarWheel Wheel)
 {
     Wheel.sidewaysForceFactor = frontSidewaysGrip;
 }
    private void ApplyTraction(CarWheel Wheel, float motorSlip, float brakeSlip, float handBrakeInput)
    {
        float slipPeak = Wheel.getForwardPeakSlip();
        float slipMax  = Wheel.getForwardMaxSlip();
        var   Hit      = new WheelHit();
        float slip;
        float motor    = Mathf.Abs(motorSlip);
        bool  grounded = Wheel.getWheelCollider().GetGroundHit(out Hit);

        if (grounded)
        {
            Quaternion steerRot = Quaternion.AngleAxis(Wheel.getWheelCollider().steerAngle, Wheel.transform.up);
            Vector3    wheelDir = steerRot * Wheel.transform.forward;
            Vector3    pointV   = rigidbody.GetPointVelocity(Hit.point);
            if (Hit.collider.attachedRigidbody)
            {
                pointV -= Hit.collider.attachedRigidbody.GetPointVelocity(Hit.point);
            }
            float v = Mathf.Abs(Vector3.Dot(pointV, wheelDir));
            if (v + slipPeak <= motorMax)
            {
                slip = motor - v;
                if (slip < 0)
                {
                    slip = 0;
                }
                else if (autoMotorMax && slip > slipPeak)
                {
                    slip = slipPeak;
                }
            }
            else
            {
                float maxSlip;
                if (tractionV3)
                {
                    maxSlip = Mathf.Lerp(slipPeak, 0, Mathf.InverseLerp(motorMax - slipPeak, maxSpeed, v));
                }
                else
                {
                    maxSlip = slipPeak;
                }
                slip = maxSlip * motor / motorMax;
            }
            if (motorSlip < 0)
            {
                slip = -slip;
            }
        }
        else
        {
            slip = motorSlip;
        }
        if (autoBrakeMax && brakeSlip > slipPeak)
        {
            brakeSlip = slipPeak;
        }
        brakeSlip = Mathf.Max(brakeSlip, handBrakeInput * slipMax);
        if (motorInput == 0.0f)
        {
            brakeSlip += rollingFrictionSlip / brakeForceFactor;
        }
        if (!grounded)
        {
            float omega = Wheel.getWheelCollider().rpm *Mathf.Deg2Rad;
            brakeSlip += omega * omega * 0.0008f / brakeForceFactor;
        }
        Wheel.motorInput = slip;
        Wheel.brakeInput = brakeSlip;
    }
 private void ApplyRearParameters(CarWheel Wheel)
 {
     Wheel.sidewaysForceFactor = rearSidewaysGrip;
 }
Ejemplo n.º 19
0
 void Start()
 {
     audioSource = (AudioSource)gameObject.AddComponent(typeof(AudioSource));
     wheel       = GetComponent <CarWheel>();
 }
Ejemplo n.º 20
0
 // Use this for initialization
 void Start()
 {
     smokeEffect = Instantiate(smokeEffectPrefab, gameObject.transform);
     car         = GetComponentInParent <CarController>();
     wheel       = GetComponentInParent <CarWheel>();
 }
 public static Car BuildARunningCar(CarEngine engine, CarWheel wheel, CarGas gas)
 {
     return(new Car());
 }
 public static Car BuildARunningCar(CarEngine engine, CarWheel wheel, CarGas gas)
 {
     return new Car();
 }
 private void ApplyCommonParameters(CarWheel Wheel)
 {
     Wheel.ForwardWheelFriction = ForwardWheelFriction;
     Wheel.SidewaysWheelFriction = SidewaysWheelFriction;
     Wheel.brakeForceFactor = brakeForceFactor;
     Wheel.motorForceFactor = motorForceFactor;
     Wheel.performancePeak = motorPerformancePeak;
     Wheel.sidewaysDriftFriction = sidewaysDriftFriction;
     Wheel.staticFrictionMax = staticFrictionMax;
     Wheel.serviceMode = serviceMode;
     Wheel.optimized = optimized;
 }
 private void ApplyEnabled(CarWheel Wheel, bool enable)
 {
     if (Wheel != null)
         Wheel.enabled = enable;
 }
 private void ApplyTraction(CarWheel Wheel, float motorSlip, float brakeSlip, float handBrakeInput)
 {
     float slipPeak = Wheel.getForwardPeakSlip();
     float slipMax = Wheel.getForwardMaxSlip();
     var Hit = new WheelHit();
     float slip;
     float motor = Mathf.Abs(motorSlip);
     bool grounded = Wheel.getWheelCollider().GetGroundHit(out Hit);
     if (grounded)
     {
         Quaternion steerRot = Quaternion.AngleAxis(Wheel.getWheelCollider().steerAngle, Wheel.transform.up);
         Vector3 wheelDir = steerRot * Wheel.transform.forward;
         Vector3 pointV = rigidbody.GetPointVelocity(Hit.point);
         if (Hit.collider.attachedRigidbody)
             pointV -= Hit.collider.attachedRigidbody.GetPointVelocity(Hit.point);
         float v = Mathf.Abs(Vector3.Dot(pointV, wheelDir));
         if (v + slipPeak <= motorMax)
         {
             slip = motor - v;
             if (slip < 0)
                 slip = 0;
             else if (autoMotorMax && slip > slipPeak)
                 slip = slipPeak;
         }
         else
         {
             float maxSlip;
             if (tractionV3)
                 maxSlip = Mathf.Lerp(slipPeak, 0, Mathf.InverseLerp(motorMax - slipPeak, maxSpeed, v));
             else
                 maxSlip = slipPeak;
             slip = maxSlip * motor / motorMax;
         }
         if (motorSlip < 0)
             slip = -slip;
     }
     else
         slip = motorSlip;
     if (autoBrakeMax && brakeSlip > slipPeak)
         brakeSlip = slipPeak;
     brakeSlip = Mathf.Max(brakeSlip, handBrakeInput * slipMax);
     if (motorInput == 0.0f)
         brakeSlip += rollingFrictionSlip / brakeForceFactor;
     if (!grounded)
     {
         float omega = Wheel.getWheelCollider().rpm * Mathf.Deg2Rad;
         brakeSlip += omega * omega * 0.0008f / brakeForceFactor;
     }
     Wheel.motorInput = slip;
     Wheel.brakeInput = brakeSlip;
 }
 private void ApplyRearParameters(CarWheel Wheel)
 {
     Wheel.sidewaysForceFactor = rearSidewaysGrip;
 }
Ejemplo n.º 27
-1
                public static Car BuyACar()
                {
                    CarEngine selectedEngine = new CarEngine(); //Select an Engine you like
                    CarWheel selectedWheel = new CarWheel();    //Select a  Wheel  you like

                    Car car = CarVendingMachine.GetACarFromFactory(selectedEngine, selectedWheel);
                    return car;
                }