Exemplo n.º 1
0
 public override void Start()
 {
     base.Start();
     targetDrive = GetComponent <DriveForce>();
     //Get maximum possible RPM
     GetMaxRPM();
 }
Exemplo n.º 2
0
 public virtual void Start()
 {
     vp          = (VehicleParent)F.GetTopmostParentComponent <VehicleParent>(transform);
     vp.trans    = this;
     targetDrive = GetComponent <DriveForce>();
     newDrive    = gameObject.AddComponent <DriveForce>();
 }
Exemplo n.º 3
0
	public override void Start()
	{
		base.Start();
		targetDrive = GetComponent<DriveForce>();
		//Get maximum possible RPM
		GetMaxRPM();
	}
Exemplo n.º 4
0
    public virtual void Start()
    {
        vp = (VehicleParent)F.GetTopmostParentComponent<VehicleParent>(transform);
        targetDrive = GetComponent<DriveForce>();
        newDrive = gameObject.AddComponent<DriveForce>();

        if (legacyTorqueMultiplier)
        {
            Debug.LogWarning("Legacy torque multiplier is obsolete and will be removed in a future update.", this);
        }
    }
Exemplo n.º 5
0
        void Start()
        {
            this.tr                = this.transform;
            this.rb                = (Rigidbody)F.GetTopmostParentComponent <Rigidbody>(this.tr);
            this.vp                = (VehicleParent)F.GetTopmostParentComponent <VehicleParent>(this.tr);
            this.targetDrive       = this.GetComponent <DriveForce>();
            this.flippedSide       = Vector3.Dot(this.tr.forward, this.vp.transform.right) < 0;
            this.flippedSideFactor = this.flippedSide ? -1 : 1;
            this.initialRotation   = this.tr.localRotation;

            if (Application.isPlaying)
            {
                this.GetCamber();

                //Generate the hard collider
                if (this.generateHardCollider)
                {
                    var cap = new GameObject("Compress Collider");
                    cap.layer                        = GlobalControl.ignoreWheelCastLayer;
                    this.compressTr                  = cap.transform;
                    this.compressTr.parent           = this.tr;
                    this.compressTr.localPosition    = Vector3.zero;
                    this.compressTr.localEulerAngles =
                        new Vector3(this.camberAngle, 0, -this.casterAngle * this.flippedSideFactor);
                    this.compressCol                  = cap.AddComponent <CapsuleCollider>();
                    this.compressCol.direction        = 1;
                    this.setHardColliderRadiusFactor  = this.hardColliderRadiusFactor;
                    this.hardColliderRadiusFactorPrev = this.setHardColliderRadiusFactor;
                    this.compressCol.radius           = this.wheel.rimWidth * this.hardColliderRadiusFactor;
                    this.compressCol.height           = (this.wheel.popped
                                         ? this.wheel.rimRadius
                                         : Mathf.Lerp(this.wheel.rimRadius,
                                                      this.wheel.tireRadius,
                                                      this.wheel.tirePressure))
                                                        * 2;
                    this.compressCol.material = GlobalControl.frictionlessMatStatic;
                }

                this.steerRangeMax = Mathf.Max(this.steerRangeMin, this.steerRangeMax);

                this.properties = this.GetComponent <SuspensionPropertyToggle>();
                if (this.properties)
                {
                    this.UpdateProperties();
                }
            }
        }
Exemplo n.º 6
0
    void Start()
    {
        tr                = transform;
        rb                = (Rigidbody)F.GetTopmostParentComponent <Rigidbody>(tr);
        vp                = (VehicleParent)F.GetTopmostParentComponent <VehicleParent>(tr);
        targetDrive       = GetComponent <DriveForce>();
        flippedSide       = Vector3.Dot(tr.forward, vp.transform.right) < 0;
        flippedSideFactor = flippedSide ? -1 : 1;
        initialRotation   = tr.localRotation;

        if (Application.isPlaying)
        {
            GetCamber();

            //Generate the hard collider
            if (generateHardCollider)
            {
                GameObject cap = new GameObject("Compress Collider");
                cap.layer                    = GlobalControl.ignoreWheelCastLayer;
                compressTr                   = cap.transform;
                compressTr.parent            = tr;
                compressTr.localPosition     = Vector3.zero;
                compressTr.localEulerAngles  = new Vector3(camberAngle, 0, -casterAngle * flippedSideFactor);
                compressCol                  = cap.AddComponent <CapsuleCollider>();
                compressCol.direction        = 1;
                setHardColliderRadiusFactor  = hardColliderRadiusFactor;
                hardColliderRadiusFactorPrev = setHardColliderRadiusFactor;
                compressCol.radius           = wheel.rimWidth * hardColliderRadiusFactor;
                compressCol.height           = (wheel.popped ? wheel.rimRadius : Mathf.Lerp(wheel.rimRadius, wheel.tireRadius, wheel.tirePressure)) * 2;
                compressCol.material         = GlobalControl.frictionlessMatStatic;
            }

            steerRangeMax = Mathf.Max(steerRangeMin, steerRangeMax);

            properties = GetComponent <SuspensionPropertyToggle>();
            if (properties)
            {
                UpdateProperties();
            }
        }
    }
Exemplo n.º 7
0
 public virtual void Start()
 {
     vp = transform.root.GetComponent<VehicleParent>();
     targetDrive = GetComponent<DriveForce>();
     newDrive = gameObject.AddComponent<DriveForce>();
 }
Exemplo n.º 8
0
    void Start()
    {
        tr = transform;
        rb = (Rigidbody)F.GetTopmostParentComponent<Rigidbody>(tr);
        vp = (VehicleParent)F.GetTopmostParentComponent<VehicleParent>(tr);
        suspensionParent = tr.parent.GetComponent<Suspension>();
        travelDist = suspensionParent.targetCompression;
        canDetach = detachForce < Mathf.Infinity && Application.isPlaying;
        initialTirePressure = tirePressure;

        if (tr.childCount > 0)
        {
            //Get rim
            rim = tr.GetChild(0);

            //Set up rim glow material
            if (rimGlow > 0 && Application.isPlaying)
            {
                rimMat = new Material(rim.GetComponent<MeshRenderer>().sharedMaterial);
                rimMat.EnableKeyword("_EMISSION");
                rim.GetComponent<MeshRenderer>().material = rimMat;
            }

            //Create detached wheel
            if (canDetach)
            {
                detachedWheel = new GameObject(vp.transform.name + "'s Detached Wheel");
                detachedWheel.layer = LayerMask.NameToLayer("Detachable Part");
                detachFilter = detachedWheel.AddComponent<MeshFilter>();
                detachFilter.sharedMesh = rim.GetComponent<MeshFilter>().sharedMesh;
                MeshRenderer detachRend = detachedWheel.AddComponent<MeshRenderer>();
                detachRend.sharedMaterial = rim.GetComponent<MeshRenderer>().sharedMaterial;
                detachedCol = detachedWheel.AddComponent<MeshCollider>();
                detachedCol.convex = true;
                detachedBody = detachedWheel.AddComponent<Rigidbody>();
                detachedBody.mass = mass;
            }

            //Get tire
            if (rim.childCount > 0)
            {
                tire = rim.GetChild(0);
                if (deformAmount > 0 && Application.isPlaying)
                {
                    tireMat = new Material(tire.GetComponent<MeshRenderer>().sharedMaterial);
                    tire.GetComponent<MeshRenderer>().material = tireMat;
                }

                //Create detached tire
                if (canDetach)
                {
                    detachedTire = new GameObject("Detached Tire");
                    detachedTire.transform.parent = detachedWheel.transform;
                    detachedTire.transform.localPosition = Vector3.zero;
                    detachedTire.transform.localRotation = Quaternion.identity;
                    detachTireFilter = detachedTire.AddComponent<MeshFilter>();
                    detachTireFilter.sharedMesh = tire.GetComponent<MeshFilter>().sharedMesh;
                    MeshRenderer detachTireRend = detachedTire.AddComponent<MeshRenderer>();
                    detachTireRend.sharedMaterial = tireMat ? tireMat : tire.GetComponent<MeshRenderer>().sharedMaterial;
                }
            }

            if (Application.isPlaying)
            {
                //Generate hard collider
                if (generateHardCollider)
                {
                    GameObject sphereColNew = new GameObject("Rim Collider");
                    sphereColNew.layer = GlobalControl.ignoreWheelCastLayer;
                    sphereColTr = sphereColNew.transform;
                    sphereCol = sphereColNew.AddComponent<SphereCollider>();
                    sphereColTr.parent = tr;
                    sphereColTr.localPosition = Vector3.zero;
                    sphereColTr.localRotation = Quaternion.identity;
                    sphereCol.radius = Mathf.Min(rimWidth * 0.5f, rimRadius * 0.5f);
                    sphereCol.material = GlobalControl.frictionlessMatStatic;
                }

                if (canDetach)
                {
                    detachedWheel.SetActive(false);
                }
            }
        }

        targetDrive = GetComponent<DriveForce>();
        currentRPM = 0;
    }
Exemplo n.º 9
0
 public virtual void Start()
 {
     vp          = transform.root.GetComponent <VehicleParent>();
     targetDrive = GetComponent <DriveForce>();
     newDrive    = gameObject.AddComponent <DriveForce>();
 }
Exemplo n.º 10
0
 //Same as previous, but with torqueFactor multiplier for torque
 public void SetDrive(DriveForce from, float torqueFactor)
 {
     rpm    = from.rpm;
     torque = from.torque * torqueFactor;
     curve  = from.curve;
 }
Exemplo n.º 11
0
 public void SetDrive(DriveForce from)
 {
     rpm    = from.rpm;
     torque = from.torque;
     curve  = from.curve;
 }
Exemplo n.º 12
0
	void Start()
	{
		tr = transform;
		rb = transform.root.GetComponent<Rigidbody>();
		vp = tr.root.GetComponent<VehicleParent>();
		targetDrive = GetComponent<DriveForce>();
		flippedSide = Vector3.Dot(tr.forward, tr.root.right) < 0;
		flippedSideFactor = flippedSide ? -1 : 1;
		initialRotation = tr.localRotation;

		if (Application.isPlaying)
		{
			GetCamber();

			//Generate the hard collider
			if (generateHardCollider)
			{
				GameObject cap = new GameObject("Compress Collider");
				cap.layer = GlobalControl.ignoreWheelCastLayer;
				compressTr = cap.transform;
				compressTr.parent = tr;
				compressTr.localPosition = Vector3.zero;
				compressTr.localEulerAngles = new Vector3(camberAngle, 0, -casterAngle * flippedSideFactor);
				compressCol = cap.AddComponent<CapsuleCollider>();
				compressCol.direction = 1;
				setHardColliderRadiusFactor = hardColliderRadiusFactor;
				hardColliderRadiusFactorPrev = setHardColliderRadiusFactor;
				compressCol.radius = wheel.rimWidth * hardColliderRadiusFactor;
				compressCol.height = (wheel.popped ? wheel.rimRadius : Mathf.Lerp(wheel.rimRadius, wheel.tireRadius, wheel.tirePressure)) * 2;
				compressCol.material = GlobalControl.frictionlessMatStatic;
			}

			steerRangeMax = Mathf.Max(steerRangeMin, steerRangeMax);

			properties = GetComponent<SuspensionPropertyToggle>();
			if (properties)
			{
				UpdateProperties();
			}
		}
	}
Exemplo n.º 13
0
	//Same as previous, but with torqueFactor multiplier for torque
	public void SetDrive(DriveForce from, float torqueFactor)
	{
		rpm = from.rpm;
		torque = from.torque * torqueFactor;
		curve = from.curve;
	}
Exemplo n.º 14
0
	public void SetDrive(DriveForce from)
	{
		rpm = from.rpm;
		torque = from.torque;
		curve = from.curve;
	}
Exemplo n.º 15
0
    void Start()
    {
        tr = transform;
        rb = (Rigidbody)F.GetTopmostParentComponent <Rigidbody>(tr);
        vp = (VehicleParent)F.GetTopmostParentComponent <VehicleParent>(tr);
        suspensionParent    = tr.parent.GetComponent <Suspension>();
        travelDist          = suspensionParent.targetCompression;
        canDetach           = detachForce < Mathf.Infinity && Application.isPlaying;
        initialTirePressure = tirePressure;

        if (tr.childCount > 0)
        {
            //Get rim
            rim = tr.GetChild(0);

            //Set up rim glow material
            if (rimGlow > 0 && Application.isPlaying)
            {
                rimMat = new Material(rim.GetComponent <MeshRenderer>().sharedMaterial);
                rimMat.EnableKeyword("_EMISSION");
                rim.GetComponent <MeshRenderer>().material = rimMat;
            }

            //Create detached wheel
            if (canDetach)
            {
                detachedWheel           = new GameObject(vp.transform.name + "'s Detached Wheel");
                detachedWheel.layer     = LayerMask.NameToLayer("Detachable Part");
                detachFilter            = detachedWheel.AddComponent <MeshFilter>();
                detachFilter.sharedMesh = rim.GetComponent <MeshFilter>().sharedMesh;
                MeshRenderer detachRend = detachedWheel.AddComponent <MeshRenderer>();
                detachRend.sharedMaterial = rim.GetComponent <MeshRenderer>().sharedMaterial;
                detachedCol        = detachedWheel.AddComponent <MeshCollider>();
                detachedCol.convex = true;
                detachedBody       = detachedWheel.AddComponent <Rigidbody>();
                detachedBody.mass  = mass;
            }

            //Get tire
            if (rim.childCount > 0)
            {
                tire = rim.GetChild(0);
                if (deformAmount > 0 && Application.isPlaying)
                {
                    tireMat = new Material(tire.GetComponent <MeshRenderer>().sharedMaterial);
                    tire.GetComponent <MeshRenderer>().material = tireMat;
                }

                //Create detached tire
                if (canDetach)
                {
                    detachedTire = new GameObject("Detached Tire");
                    detachedTire.transform.parent        = detachedWheel.transform;
                    detachedTire.transform.localPosition = Vector3.zero;
                    detachedTire.transform.localRotation = Quaternion.identity;
                    detachTireFilter            = detachedTire.AddComponent <MeshFilter>();
                    detachTireFilter.sharedMesh = tire.GetComponent <MeshFilter>().sharedMesh;
                    MeshRenderer detachTireRend = detachedTire.AddComponent <MeshRenderer>();
                    detachTireRend.sharedMaterial = tireMat ? tireMat : tire.GetComponent <MeshRenderer>().sharedMaterial;
                }
            }

            if (Application.isPlaying)
            {
                //Generate hard collider
                if (generateHardCollider)
                {
                    GameObject sphereColNew = new GameObject("Rim Collider");
                    sphereColNew.layer        = GlobalControl.ignoreWheelCastLayer;
                    sphereColTr               = sphereColNew.transform;
                    sphereCol                 = sphereColNew.AddComponent <SphereCollider>();
                    sphereColTr.parent        = tr;
                    sphereColTr.localPosition = Vector3.zero;
                    sphereColTr.localRotation = Quaternion.identity;
                    sphereCol.radius          = Mathf.Min(rimWidth * 0.5f, rimRadius * 0.5f);
                    sphereCol.material        = GlobalControl.frictionlessMatStatic;
                }

                if (canDetach)
                {
                    detachedWheel.SetActive(false);
                }
            }
        }

        targetDrive = GetComponent <DriveForce>();
        currentRPM  = 0;
    }