Inheritance: MonoBehaviour
        public void Sync_ShouldWorkWhenEnabled()
        {
            using (new SyncHusbandsAndWives())
            {
                {
                    var wheel1 = new Wheel();
                    wheel1.Unicycle.Value.HasValue().Should().BeFalse();
                    var unicycle1 = new Unicycle(wheel1);
                    wheel1.Unicycle.Value.HasValue().Should().BeTrue();
                    var wheel2 = new Wheel();
                    wheel2.Unicycle.Value.HasValue().Should().BeFalse();
                    wheel2.Unicycle.Value = () => unicycle1;
                    wheel2.Unicycle.Value.HasValue().Should().BeTrue();
                    wheel1.Unicycle.Value.HasValue().Should().BeFalse();
                }

                {
                    var unicycle1 = new Unicycle();
                    unicycle1.Wheel.Value.HasValue().Should().BeFalse();
                    var wheel1 = new Wheel(unicycle1);
                    unicycle1.Wheel.Value.HasValue().Should().BeTrue();
                    var unicycle2 = new Unicycle();
                    unicycle2.Wheel.Value.HasValue().Should().BeFalse();
                    unicycle2.Wheel.Value = () => wheel1;
                    unicycle2.Wheel.Value.HasValue().Should().BeTrue();
                    unicycle1.Wheel.Value.HasValue().Should().BeFalse();
                }
            }
        }
Exemplo n.º 2
0
        public void NameTest()
        {
            var wheelName = "This is a test name";
            var wheel = new Wheel(wheelName);

            Assert.Equal(wheel.Name, wheelName);
        }
Exemplo n.º 3
0
	public void SetWheels(){
		if (frontAxle.leftWheel) frontAxle.leftWheel.wheelPos=WheelPos.FRONT_LEFT;		
		if (frontAxle.rightWheel) frontAxle.rightWheel.wheelPos=WheelPos.FRONT_RIGHT;
		if (rearAxle.leftWheel) rearAxle.leftWheel.wheelPos=WheelPos.REAR_LEFT;
		if (rearAxle.rightWheel) rearAxle.rightWheel.wheelPos=WheelPos.REAR_RIGHT;
		
		frontAxle.wheels =new Wheel[0];
		if (frontAxle.leftWheel!=null && frontAxle.rightWheel!=null) {
			frontAxle.wheels =new Wheel[2];
			frontAxle.wheels[0]=frontAxle.leftWheel;
			frontAxle.wheels[1]=frontAxle.rightWheel;
		}
		else if (frontAxle.leftWheel!=null || frontAxle.rightWheel!=null){
			frontAxle.wheels =new Wheel[1];
			if (frontAxle.leftWheel!=null) frontAxle.wheels[0]=frontAxle.leftWheel;
			else frontAxle.wheels[0]=frontAxle.rightWheel;
		}
		frontAxle.camber=Mathf.Clamp(frontAxle.camber,-10,10);
		
		rearAxle.wheels =new Wheel[0];
		if (rearAxle.leftWheel!=null && rearAxle.rightWheel!=null) {
			rearAxle.wheels =new Wheel[2];
			rearAxle.wheels[0]=rearAxle.leftWheel;
			rearAxle.wheels[1]=rearAxle.rightWheel;
		}
		else if (rearAxle.leftWheel!=null || rearAxle.rightWheel!=null) {
			rearAxle.wheels =new Wheel[1];
			if (rearAxle.leftWheel!=null) rearAxle.wheels[0]=rearAxle.leftWheel;
			else rearAxle.wheels[0]=rearAxle.rightWheel;
		}
		rearAxle.camber=Mathf.Clamp(rearAxle.camber,-10,10);
		
		Wheel[] m_otherWheels=new Wheel[otherAxles.Length*2];
		int i=0;
		foreach(Axle axle in otherAxles){
			if (axle.leftWheel!=null && axle.rightWheel!=null) {
				axle.wheels =new Wheel[2];
				axle.wheels[0]=m_otherWheels[i]=axle.leftWheel;
				axle.wheels[1]=m_otherWheels[i+1]=axle.rightWheel;
				i+=2;
			}
			else{
				axle.wheels =new Wheel[1];
				if (axle.leftWheel!=null) axle.wheels[0]=m_otherWheels[0]=axle.leftWheel;
				else axle.wheels[0]=m_otherWheels[0]=axle.rightWheel;
				i+=1;
			}
			axle.camber=Mathf.Clamp(axle.camber,-10,10);
		}		
		
		otherWheels=new Wheel[i];
		m_otherWheels.CopyTo(otherWheels, 0);
		
		allWheels = new Wheel[frontAxle.wheels.Length + rearAxle.wheels.Length + otherWheels.Length];
		
		frontAxle.wheels.CopyTo(allWheels, 0);
		rearAxle.wheels.CopyTo(allWheels, frontAxle.wheels.Length);
		if (otherWheels.Length!=0) otherWheels.CopyTo(allWheels,frontAxle.wheels.Length + rearAxle.wheels.Length);
	}	
Exemplo n.º 4
0
 private static Wheel<int> Setup()
 {
     var wheel = new Wheel<int>();
     wheel.Push(1);
     wheel.Push(2);
     wheel.Push(3);
     return wheel;
 }
Exemplo n.º 5
0
        private static void _Export(Regulus.Utility.Console.IViewer view, Wheel wheel)
        {
            var data = wheel.Export();

            var guid = System.Guid.NewGuid();
            var path = $"Export{guid}.txt";
            view.WriteLine(path);
            System.IO.File.WriteAllText(path, Newtonsoft.Json.JsonConvert.SerializeObject(data));
        }
Exemplo n.º 6
0
    void Start()
    {
        menuController = MenuController.instance;
        wheel = transform.parent.GetComponent<Wheel>();

        _zDefault = transform.position.z;
        _zOffset = transform.position.z - 1;

        _btnTag = gameObject.tag;
    }
Exemplo n.º 7
0
        public async Task RepairTest()
        {
            var wheelName = "This is a test name";
            var repair = "Simple repair";
            var wheel = new Wheel(wheelName);

            await wheel.RepairAsync(repair);

            Assert.Contains(wheel.Repairs, item => string.Equals(item, repair));
        }
Exemplo n.º 8
0
            // Creation of Wheel is deferred until GearInches invokes the GetWheel method.
            private Wheel GetWheel()
            {
                // I find this old-skool way clearer than the null coalescing operator,
                // especially when also assigning to the thing you are checking for null.
                if (_wheel == null)
                {
                    _wheel = new Wheel(Rim, Tire);
                }

                return _wheel;
            }
 private float DriveBias(Wheel wheel)
 {
     switch (HandlingData.TransmissionDriveType) {
         case DriveType.Forward:
             return wheel.IsFront ? 1f : 0f;
         case DriveType.Rear:
             return wheel.IsRear ? 1f : 0f;
         default:
             return 1f;
     }
 }
Exemplo n.º 10
0
 public Structure Express(Vector3 location,Structure parent)
 {
     Wheel wheelStructure = new Wheel();
         if(!wheelStructure.GenerateFromGene(this,location,parent)) // if we weren't able to instantiate the wheel
         {
             return null; 											// then we're done.  But if we were...
         }
         foreach(IGene child in children) 							// then go through all the children
         {
             child.Express(location, wheelStructure); 			// and express them.
         }
         return wheelStructure;
         //return null;
 }
Exemplo n.º 11
0
 private static void _Import(Regulus.Utility.Console.IViewer view, Wheel wheel, string path)
 {
     try
     {
         var buffer = System.IO.File.ReadAllText(path);
         var set = Newtonsoft.Json.JsonConvert.DeserializeObject<VGame.CLR.Dump.WheelFieldSet>(buffer);
         wheel.Import(ref set);
     }
     catch(Exception)
     {
         view.WriteLine("失敗");
         throw;
     }
     view.WriteLine("成功");
 }
Exemplo n.º 12
0
	void Start()
	{
		tr = transform;
		w = GetComponent<Wheel>();

		initialEmissionRates = new float[debrisParticles.Length + 1];
		for (int i = 0; i < debrisParticles.Length; i++)
		{
			initialEmissionRates[i] = debrisParticles[i].emissionRate;
		}

		if (sparks)
		{
			initialEmissionRates[debrisParticles.Length] = sparks.emissionRate;
		}
	}
Exemplo n.º 13
0
    public override void OnInspectorGUI()
    {
        GUIStyle boldFoldout = new GUIStyle(EditorStyles.foldout);
        boldFoldout.fontStyle = FontStyle.Bold;
        Wheel targetScript = (Wheel)target;
        Wheel[] allTargets = new Wheel[targets.Length];
        isPrefab = PrefabUtility.GetPrefabType(targetScript) == PrefabType.Prefab;

        for (int i = 0; i < targets.Length; i++)
        {
            Undo.RecordObject(targets[i], "Wheel Change");
            allTargets[i] = targets[i] as Wheel;
        }

        DrawDefaultInspector();

        if (!isPrefab && targetScript.gameObject.activeInHierarchy)
        {
            showButtons = EditorGUILayout.Foldout(showButtons, "Quick Actions", boldFoldout);
            EditorGUI.indentLevel ++;
            if (showButtons)
            {
                if (GUILayout.Button("Get Wheel Dimensions"))
                {
                    foreach (Wheel curTarget in allTargets)
                    {
                        curTarget.GetWheelDimensions(radiusMargin, widthMargin);
                    }
                }

                EditorGUI.indentLevel ++;
                radiusMargin = EditorGUILayout.FloatField("Radius Margin", radiusMargin);
                widthMargin = EditorGUILayout.FloatField("Width Margin", widthMargin);
                EditorGUI.indentLevel --;
            }
            EditorGUI.indentLevel --;
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(targetScript);
        }
    }
Exemplo n.º 14
0
	Vector3 parentUpDir;//parent's up direction

	void Start()
	{
		tr = transform;
		initialConnectPoint = connectPoint;

		//Get the wheel
		if (suspension)
		{
			suspension.movingParts.Add(this);

			if (suspension.wheel)
			{
				wheel = suspension.wheel;
			}
		}

		//Get the initial distance from the target to use when stretching
		if (connectObj && !isHub && Application.isPlaying)
		{
			initialDist = Mathf.Max(Vector3.Distance(tr.position, connectObj.TransformPoint(connectPoint)), 0.01f);
			initialScale = tr.localScale;
		}
	}
Exemplo n.º 15
0
	public void LoadTiresData(Wheel w, string tires){

		tiresFound=true;
 		if (tires=="competition_front"){
			System.Array.Copy(TireParameters.aCompetitionFront, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bCompetitionFront, w.b, w.b.Length);
			if (TireParameters.cCompetitionFront.Length!=0) System.Array.Copy(TireParameters.cCompetitionFront, w.c, w.c.Length);
		}
		else if (tires=="competition_rear"){
			System.Array.Copy(TireParameters.aCompetitionRear, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bCompetitionRear, w.b, w.b.Length);
			if (TireParameters.cCompetitionRear.Length!=0) System.Array.Copy(TireParameters.cCompetitionRear, w.c, w.c.Length);
		}		
		else if (tires=="supersport_front"){
			System.Array.Copy(TireParameters.aSuperSportFront, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bSuperSportFront, w.b, w.b.Length);
			if (TireParameters.cSuperSportFront.Length!=0) System.Array.Copy(TireParameters.cSuperSportFront, w.c, w.c.Length);
		}
		else if (tires=="supersport_rear"){
			System.Array.Copy(TireParameters.aSuperSportRear, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bSuperSportRear, w.b, w.b.Length);
			if (TireParameters.cSuperSportRear.Length!=0) System.Array.Copy(TireParameters.cSuperSportRear, w.c, w.c.Length);
		}		
		
		else if (tires=="sport_front"){
			System.Array.Copy(TireParameters.aSportFront, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bSportFront, w.b, w.b.Length);
			if (TireParameters.cSportFront.Length!=0) System.Array.Copy(TireParameters.cSportFront, w.c, w.c.Length);
		}
		else if (tires=="sport_rear"){
			System.Array.Copy(TireParameters.aSportRear, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bSportRear, w.b, w.b.Length);
			if (TireParameters.cSportRear.Length!=0) System.Array.Copy(TireParameters.cSportRear, w.c, w.c.Length);
		}
		else if (tires=="touring_front"){
			System.Array.Copy(TireParameters.aTouringFront, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bTouringFront, w.b, w.b.Length);
			if (TireParameters.cTouringFront.Length!=0) System.Array.Copy(TireParameters.cTouringFront, w.c, w.c.Length);
		}
		else if (tires=="touring_rear"){
			System.Array.Copy(TireParameters.aTouringRear, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bTouringRear, w.b, w.b.Length);
			if (TireParameters.cTouringRear.Length!=0) System.Array.Copy(TireParameters.cTouringRear, w.c, w.c.Length);
		}		
		else if (tires=="offroad_front"){	//OffRoad tires
			System.Array.Copy(TireParameters.aOffRoadFront, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bOffRoadFront, w.b, w.b.Length);
			if (TireParameters.cOffRoadFront.Length!=0) System.Array.Copy(TireParameters.cOffRoadFront, w.c, w.c.Length);
		}
		else if (tires=="offroad_rear"){	//OffRoad tires
			System.Array.Copy(TireParameters.aOffRoadRear, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bOffRoadRear, w.b, w.b.Length);
			if (TireParameters.cOffRoadRear.Length!=0) System.Array.Copy(TireParameters.cOffRoadRear, w.c, w.c.Length);
		}
		else if (tires=="truck_front"){	//Truck truck tires
			System.Array.Copy(TireParameters.aTruckFront, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bTruckFront, w.b, w.b.Length);
			if (TireParameters.cTruckFront.Length!=0) System.Array.Copy(TireParameters.cTruckFront, w.c, w.c.Length);
		}
		else if (tires=="truck_rear"){	//Truck truck tires
			System.Array.Copy(TireParameters.aTruckRear, w.a, w.a.Length);
			System.Array.Copy(TireParameters.bTruckRear, w.b, w.b.Length);
			if (TireParameters.cTruckRear.Length!=0) System.Array.Copy(TireParameters.cTruckRear, w.c, w.c.Length);
		}
		else{
			tiresFound=false;
		}
		w.CalculateIdealSlipRatioIdealSlipAngle(20);
	}
Exemplo n.º 16
0
 public WheelFrictionChanger(Wheel w)
 {
     Collider = w.whCollider;
     forwardFriction  = Collider.forwardFriction;
     sidewaysFriction = Collider.sidewaysFriction;
 }
Exemplo n.º 17
0
 static void init()
 {
     wheels = new Wheel[4];
     for (int i = 0; i < 4; ++i)
     {
         wheels[i] = new Wheel(jiffies_msec * intpow(Wheel.dial_scale, i));
         if (i > 0)
         {
             wheels[i - 1].nextWheel = wheels[i];
         }
     }
     mapSnTimer = new Dictionary<int, Timer>();
     executeTimers = new LinkedList<Timer>();
 }
Exemplo n.º 18
0
 private void AdjustTurnAngles(Wheel wheel)
 {
     wheel.collider.steerAngle = _turnAmount *
                                 _driveSettings.maxTurnAngle *
                                 (wheel.info.isFrontWheel ? 1 : -1);
 }
Exemplo n.º 19
0
 private float BrakeBias(Wheel wheel)
 {
     return wheel.IsFront
         ? 1f - HandlingData.BrakeBias : wheel.IsRear
         ? HandlingData.BrakeBias : .5f;
 }
Exemplo n.º 20
0
 void UpdateWheelFromCollider(Wheel wheel)
 {
     wheel.wheelCollider.GetWorldPose(out Vector3 position, out Quaternion rotation);
     wheel.wheelTransform.position = position;
     wheel.wheelTransform.rotation = rotation;
 }
Exemplo n.º 21
0
 public Automobile(string i_ModelName, string i_LicenseNumber, Wheel i_Wheel, int i_NumOfWheels, eVehicleStatus i_eStatus, PowerSource m_PowerSource, eColor i_MColor, eNumOfDoors i_MNumOfDoors) : base(i_ModelName, i_LicenseNumber, i_Wheel, i_NumOfWheels, i_eStatus, m_PowerSource)
 {
     m_Color      = i_MColor;
     m_NumOfDoors = i_MNumOfDoors;
 }
Exemplo n.º 22
0
 private void Wheel_MouseDown(object sender, MouseButtonEventArgs e)
 {
     rotating      = true;
     rotationStart = e.GetPosition(Wheel);
     Wheel.CaptureMouse();
 }
Exemplo n.º 23
0
    // Start is called before the first frame update
    void Start()
    {
        betInputField.OnEndEditAsObservable()
        .Where(x => x != null && !string.IsNullOrWhiteSpace(x))
        .Delay(TimeSpan.FromSeconds(1))
        .Subscribe(x =>
        {
            // 文字列への変数埋め込み
            // @see https://blog.hiros-dot.net/?p=6407
            Debug.Log($"bet is {x}");
            betNum             = int.Parse(x);
            isBetEndEdit.Value = true;
        });

        forecastInputField.OnEndEditAsObservable()
        .Where(x => x != null && !string.IsNullOrWhiteSpace(x))
        .Delay(TimeSpan.FromSeconds(1))
        .Subscribe(x =>
        {
            Debug.Log($"forecast is {x}");
            forecastNum             = int.Parse(x);
            isForecastEndEdit.Value = true;
        });

        wheel = GameObject.Find("Wheel").GetComponent <Wheel>();

        var run = isBetEndEdit
                  .CombineLatest(isForecastEndEdit, (x, y) => x & y)
                  .ToReactiveCommand();

        run.Subscribe(_ => {
            Debug.Log("wheel run start");
            betInputField.enabled = forecastInputField.enabled = false;
            isBetEndEdit.Value    = isForecastEndEdit.Value = false;
            wheel.Run();
        });
        run.BindTo(runButton);

        // memo:
        // meta ファイルから executionOrder で読み込み順を Wheel より後にする必要あり
        // wheel 側で ?.State ?? new ReactiveProperty* とやった場合, 参照エラーは回避できる
        // ただし, そうすると new の方を参照するため Wheel が持っている IRollable の State は購買できない
        //
        // 追記:
        // Wheel 側で IRollable.State を購買して自身の state を更新するという処理で meta ファイルをイジる事なく回避
        wheel.State
        .Where(x => x == RollState.Stoped)
        .Subscribe(x =>
        {
            Debug.Log("wheel stoped");
            betInputField.text    = forecastInputField.text = "";
            betInputField.enabled = forecastInputField.enabled = true;
            if (forecastNum == wheel.ClosestNumber.Value)
            {
                hitText.text = string.Format(HIT_BASE, "当たり!!");
            }
            else
            {
                hitText.text = string.Format(HIT_BASE, "ハズレ...");
            }
        });
        wheel.ClosestNumber
        .Where(x => x != 0)
        .Subscribe(x =>
        {
            stopText.text = string.Format(
                STOP_BASE,
                x
                );
        });

        Debug.Log("Dealer Start End");
    }
Exemplo n.º 24
0
    void Update()
    {
        if (!Application.isPlaying)
        {
            tr = transform;

            //Get the wheel
            if (suspension)
            {
                if (suspension.wheel)
                {
                    wheel = suspension.wheel;
                }
            }
        }

        if (tr)
        {
            if (!solidAxle && ((suspension && !solidAxleConnector) || solidAxleConnector))
            {
                //Transformations for hubs
                if (isHub && wheel && !solidAxleConnector)
                {
                    if (wheel.rim)
                    {
                        tr.position         = wheel.rim.position;
                        tr.rotation         = Quaternion.LookRotation(wheel.rim.forward, suspension.upDir);
                        tr.localEulerAngles = new Vector3(tr.localEulerAngles.x, tr.localEulerAngles.y, -suspension.casterAngle * suspension.flippedSideFactor);
                    }
                }
                else if (!isHub && connectObj)
                {
                    localConnectPoint = connectObj.TransformPoint(connectPoint);

                    //Rotate to look at connection point
                    if (rotate)
                    {
                        tr.rotation = Quaternion.LookRotation((localConnectPoint - tr.position).normalized, (solidAxleConnector ? tr.parent.forward : suspension.upDir));

                        //Don't set localEulerAngles if connected to a solid axle
                        if (!solidAxleConnector)
                        {
                            tr.localEulerAngles = new Vector3(tr.localEulerAngles.x, tr.localEulerAngles.y, -suspension.casterAngle * suspension.flippedSideFactor);
                        }
                    }

                    //Stretch like a spring if stretch is true
                    if (stretch && Application.isPlaying)
                    {
                        tr.localScale = new Vector3(tr.localScale.x, tr.localScale.y, initialScale.z * (Vector3.Distance(tr.position, localConnectPoint) / initialDist));
                    }
                }
            }
            else if (solidAxle && wheel1 && wheel2)
            {
                //Transformations for solid axles
                if (wheel1.rim && wheel2.rim && wheel1.suspensionParent && wheel2.suspensionParent)
                {
                    parentUpDir         = tr.parent.up;
                    wheelConnect1       = wheel1.rim.TransformPoint(0, 0, -wheel1.suspensionParent.pivotOffset);
                    wheelConnect2       = wheel2.rim.TransformPoint(0, 0, -wheel2.suspensionParent.pivotOffset);
                    tr.rotation         = Quaternion.LookRotation((((wheelConnect1 + wheelConnect2) * 0.5f) - tr.position).normalized, parentUpDir);
                    tr.localEulerAngles = new Vector3(tr.localEulerAngles.x, tr.localEulerAngles.y, Vector3.Angle((wheelConnect1 - wheelConnect2).normalized, tr.parent.right) * Mathf.Sign(Vector3.Dot((wheelConnect1 - wheelConnect2).normalized, parentUpDir)) * Mathf.Sign(tr.localPosition.z) * (invertRotation ? -1 : 1));
                }
            }
        }
    }
Exemplo n.º 25
0
        public bool EngineShouldDetermineIfCoordinatesAreWithinWheelBounds(int widthIndex, int heightIndex)
        {
            var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight);

            return(wheel.IsInBounds(widthIndex, heightIndex));
        }
Exemplo n.º 26
0
 /// <summary>
 /// Check if a wheel is touching the ground
 /// </summary>
 public bool IsWheelOnGround(Wheel wheel)
 {
     return(MtaClient.IsVehicleWheelOnGround(element, (int)wheel));
 }
Exemplo n.º 27
0
 void Awake()
 {
     wheel = GetComponent <Wheel>();
     rb    = GetComponent <Rigidbody2D>();
 }
Exemplo n.º 28
0
 public void TestInitialize()
 {
     wheel      = new Wheel();
     binBuilder = new BinBuilder();
 }
Exemplo n.º 29
0
 private bool ShouldSteer(Wheel wheel)
 {
     // TODO: look at flags
     return(wheel.IsFront);
 }
Exemplo n.º 30
0
 public string Repair(Wheel value)
 {
     value.RepairWhell();
     return("wheel repaired");
 }
Exemplo n.º 31
0
        public override void setData(GetReport_ReturnType returnData)
        {
            base.setData(returnData);
            switch (returnData.reportType)
            {
            case 100:
            {
                base.lblSubTitle.Text = SK.Text("Reports_Quest_Complete", "Completed Quest") + " :";
                NewQuests.NewQuestDefinition definition = NewQuests.getNewQuestDef(returnData.genericData1);
                base.lblSecondaryText.Text = SK.NoStoreText("Z_QUESTS_" + definition.tagString);
                goto Label_0242;
            }

            case 0x65:
            {
                base.lblSubTitle.Text = SK.Text("Reports_Quest Failed", "Failed Quest") + " :";
                NewQuests.NewQuestDefinition definition2 = NewQuests.getNewQuestDef(returnData.genericData1);
                base.lblSecondaryText.Text = SK.NoStoreText("Z_QUESTS_" + definition2.tagString);
                goto Label_0242;
            }

            case 0x66:
                base.lblSubTitle.Text      = SK.Text("Reports_Spins", "Wheel Spin Prize");
                base.lblSecondaryText.Text = Wheel.getRewardText(returnData.genericData1, returnData.genericData2, base.nfi);
                return;

            case 0x81:
            case 130:
            case 0x83:
                if (returnData.reportType != 0x81)
                {
                    if (returnData.reportType == 0x83)
                    {
                        base.lblSubTitle.Text = SK.Text("Reports_AI_Spins_capture", "Wheel Spin Bonus from AI Capture");
                    }
                    else
                    {
                        base.lblSubTitle.Text = SK.Text("Reports_Forage_Spins", "Wheel Spin Bonus from Foraging");
                    }
                    break;
                }
                base.lblSubTitle.Text = SK.Text("Reports_AI_Spins", "Wheel Spin Bonus from AI Razing");
                break;

            default:
                goto Label_0242;
            }
            switch (returnData.genericData1)
            {
            case 2:
                base.lblSecondaryText.Text = SK.Text("REPORTS_SeasonalWheelSpins2", "Tier 2 Wheel Spin");
                return;

            case 3:
                base.lblSecondaryText.Text = SK.Text("REPORTS_SeasonalWheelSpins3", "Tier 3 Wheel Spin");
                return;

            case 4:
                base.lblSecondaryText.Text = SK.Text("REPORTS_SeasonalWheelSpins4", "Tier 4 Wheel Spin");
                return;

            case 5:
                base.lblSecondaryText.Text = SK.Text("REPORTS_SeasonalWheelSpins5", "Tier 5 Wheel Spin");
                return;

            default:
                base.lblSecondaryText.Text = SK.Text("REPORTS_SeasonalWheelSpins1", "Tier 1 Wheel Spin");
                return;
            }
Label_0242:
            base.btnUtility.Visible   = true;
            base.btnUtility.Text.Text = SK.Text("GENERIC_Quests", "Quests");
        }
Exemplo n.º 32
0
        public void TestFaFaZhuFullCycle(int level, List <int> rows)
        {
            var sdt             = DateTime.Now;
            var serviceProvider = new ServiceCollection()
                                  .AddLogging()
                                  .BuildServiceProvider();
            var logFactory = serviceProvider.GetService <ILoggerFactory>();
            var logger     = logFactory.CreateLogger <FaFaZhuModule>();

            var FaFaZhuModule = new FaFaZhuModule(logger);
            var maxWin        = 0m;
            Dictionary <decimal, int> profile = new Dictionary <decimal, int>();
            List <int> maxIndexPosition       = new List <int>();
            var        summData     = new SummaryData();
            var        reel1Pointer = 0;
            var        reel2Pointer = 0;
            var        reel3Pointer = 0;

            for (var reel0 = 0; reel0 < FaFaZhuConfiguration.VirtualReels[level][0]; reel0++)
            {
                for (var reel1 = 0; reel1 < FaFaZhuConfiguration.VirtualReels[level][1]; reel1++)
                {
                    for (var reel2 = 0; reel2 < FaFaZhuConfiguration.VirtualReels[level][2]; reel2++)
                    {
                        var totalWin = (decimal)0;

                        UserGameKey ugk = new UserGameKey()
                        {
                            UserId = -1,
                            GameId = FaFaZhuConfiguration.GameId,
                            Level  = 1
                        };

                        SpinBet sb = new SpinBet(ugk, PlatformType.None)
                        {
                            LineBet    = 1,
                            Credits    = 0,
                            Lines      = FaFaZhuConfiguration.BettingLines,
                            Multiplier = 1
                        };

                        RequestContext <SpinArgs>  requestContext      = new RequestContext <SpinArgs>("", FaFaZhuConfiguration.GameName, PlatformType.Web);
                        RequestContext <BonusArgs> requestBonusContext = new RequestContext <BonusArgs>("", FaFaZhuConfiguration.GameName, PlatformType.Web);
                        requestContext.Currency = new Currency()
                        {
                            Id = sb.CurrencyId
                        };
                        requestContext.Parameters = new SpinArgs()
                        {
                            LineBet = sb.LineBet, BettingLines = sb.Lines
                        };
                        requestContext.GameSetting = new GameSetting()
                        {
                            GameSettingGroupId = sb.GameSettingGroupId
                        };

                        var wheel = new Wheel(rows);

                        for (int i = 1; i < FaFaZhuConfiguration.Wheels[level].Reels[0].Count - 1; i++)
                        {
                            if (reel0 < FaFaZhuConfiguration.CumulativeWeightReels[level][0][i - 1])
                            {
                                reel1Pointer = i;

                                wheel.Reels[0] = FaFaZhuCommon.GetRange(FaFaZhuConfiguration.Wheels[level].Reels[0], reel1Pointer, wheel.Rows[0]);

                                break;
                            }
                        }

                        for (int j = 1; j < FaFaZhuConfiguration.Wheels[level].Reels[1].Count - 1; j++)
                        {
                            if (reel1 < FaFaZhuConfiguration.CumulativeWeightReels[level][1][j - 1])
                            {
                                reel2Pointer = j;

                                wheel.Reels[1] = FaFaZhuCommon.GetRange(FaFaZhuConfiguration.Wheels[level].Reels[1], reel2Pointer, wheel.Rows[1]);

                                break;
                            }
                        }

                        for (int k = 1; k < FaFaZhuConfiguration.Wheels[level].Reels[2].Count - 1; k++)
                        {
                            if (reel2 < FaFaZhuConfiguration.CumulativeWeightReels[level][2][k - 1])
                            {
                                reel3Pointer = k;

                                wheel.Reels[2] = FaFaZhuCommon.GetRange(FaFaZhuConfiguration.Wheels[level].Reels[2], reel3Pointer, wheel.Rows[2]);

                                break;
                            }
                        }

                        FaFaZhuSpinResult sr = new FaFaZhuSpinResult(ugk)
                        {
                            SpinBet = new SpinBet(ugk, PlatformType.None)
                            {
                                Lines      = FaFaZhuConfiguration.BettingLines,
                                Multiplier = 1,
                                LineBet    = 1m
                            },

                            WheelActual = wheel
                        };

                        sr.WheelActual = wheel;

                        FaFaZhuCommon.CalculateWin(sr);

                        totalWin = sr.Win;

                        UpdateSummaryData(summData, sr);
                        UpdateFaFaZhuSummaryData(summData, sr);

                        if (!profile.ContainsKey(totalWin))
                        {
                            profile.Add(totalWin, 1);
                        }
                        else
                        {
                            profile.TryGetValue(totalWin, out int count);
                            profile.Remove(totalWin);
                            profile.Add(totalWin, count + 1);
                        }
                    }
                }
            }

            DisplayFaFaZhuSummaryData(level, 1, 10, summData, sdt, maxWin, maxIndexPosition);
            if (profile != null)
            {
                foreach (var item in profile.OrderByDescending(p => p.Key))
                {
                    Console.WriteLine($"Win            : {item.Key}; {item.Value}");
                }
            }
        }
            public Car(
                b2World b2world,

                double width,
                double length,
                double[] position,
                double angle,
                double power,
                double max_steer_angle,
                double max_speed,
                Wheel[] wheels
                )
            {
                //        /*
                //        pars is an object with possible attributes:

                //        width - width of the car in meters
                //        length - length of the car in meters
                //        position - starting position of the car, array [x, y] in meters
                //        angle - starting angle of the car, degrees
                //        max_steer_angle - maximum angle the wheels turn when steering, degrees
                //        max_speed       - maximum speed of the car, km/h
                //        power - engine force, in newtons, that is applied to EACH powered wheel
                //        wheels - wheel definitions: [{x, y, rotatable, powered}}, ...] where
                //                 x is wheel position in meters relative to car body center
                //                 y is wheel position in meters relative to car body center
                //                 revolving - boolean, does this turn rotate when steering?
                //                 powered - is force applied to this wheel when accelerating/braking?
                //        */



                //        this.max_steer_angle=pars.max_steer_angle;
                //        this.max_speed=pars.max_speed;
                //        this.power=pars.power;
                var wheel_angle = 0.0;//keep track of current wheel angle relative to car.
                //                           //when steering left/right, angle will be decreased/increased gradually over 200ms to prevent jerkyness.

                //initialize body
                var def = new b2BodyDef();
                def.type = b2Body.b2_dynamicBody;
                def.position = new b2Vec2(position[0], position[1]);
                def.angle = angle.DegreesToRadians();
                def.linearDamping = 0.15;  //gradually reduces velocity, makes the car reduce speed slowly if neither accelerator nor brake is pressed
                def.bullet = true; //dedicates more time to collision detection - car travelling at high speeds at low framerates otherwise might teleport through obstacles.
                def.angularDamping = 0.3;

                this.body = b2world.CreateBody(def);

                //initialize shape
                var fixdef = new b2FixtureDef();
                fixdef.density = 1.0;
                fixdef.friction = 0.3; //friction when rubbing agaisnt other shapes
                fixdef.restitution = 0.4;  //amount of force feedback when hitting something. >0 makes the car bounce off, it's fun!

                var fixdef_shape = new b2PolygonShape();

                fixdef.shape = fixdef_shape;
                fixdef_shape.SetAsBox(width / 2, length / 2);
                body.CreateFixture(fixdef);

                //initialize wheels
                foreach (var item in wheels)
                {
                    item.Initialize(this);
                }

                //return array of wheels that turn when steering
                IEnumerable<Wheel> getRevolvingWheels = from w in wheels where w.revolving select w;
                //        //return array of powered wheels
                IEnumerable<Wheel> getPoweredWheels = from w in wheels where w.powered select w;

                #region setSpeed
                Action<double> setSpeed = (speed) =>
                {
                    /*
                    speed - speed in kilometers per hour
                    */
                    var velocity0 = this.body.GetLinearVelocity();

                    //Console.WriteLine("car setSpeed velocity0 " + new { velocity0.x, velocity0.y });

                    var velocity2 = vectors.unit(new[] { velocity0.x, velocity0.y });

                    //Console.WriteLine("car setSpeed velocity2 " + new { x = velocity2[0], y = velocity2[1] });
                    var velocity = new b2Vec2(
                        velocity2[0] * ((speed * 1000.0) / 3600.0),
                        velocity2[1] * ((speed * 1000.0) / 3600.0)
                    );

                    //Console.WriteLine("car setSpeed SetLinearVelocity " + new { velocity.x, velocity.y });
                    this.body.SetLinearVelocity(velocity);

                };
                #endregion


                #region getSpeedKMH
                Func<double> getSpeedKMH = delegate
                {
                    var velocity = this.body.GetLinearVelocity();
                    var len = vectors.len(new double[] { velocity.x, velocity.y });
                    return (len / 1000.0) * 3600.0;
                };
                #endregion

                #region getLocalVelocity
                Func<double[]> getLocalVelocity = delegate
                {
                    /*
                    returns car's velocity vector relative to the car
                    */
                    var retv = this.body.GetLocalVector(this.body.GetLinearVelocityFromLocalPoint(new b2Vec2(0, 0)));
                    return new double[] { retv.x, retv.y };
                };
                #endregion



                #region update
                this.update = (msDuration) =>
                {


                    #region 1. KILL SIDEWAYS VELOCITY

                    //kill sideways velocity for all wheels
                    for (var i = 0; i < wheels.Length; i++)
                    {
                        wheels[i].killSidewaysVelocity();
                    }
                    #endregion



                    #region 2. SET WHEEL ANGLE

                    //calculate the change in wheel's angle for this update, assuming the wheel will reach is maximum angle from zero in 200 ms
                    var incr = (max_steer_angle / 200.0) * msDuration;

                    if (steer == STEER_RIGHT)
                    {
                        wheel_angle = Math.Min(Math.Max(wheel_angle, 0) + incr, max_steer_angle); //increment angle without going over max steer
                    }
                    else if (steer == STEER_LEFT)
                    {
                        wheel_angle = Math.Max(Math.Min(wheel_angle, 0) - incr, -max_steer_angle); //decrement angle without going over max steer
                    }
                    else
                    {
                        wheel_angle = 0;
                    }

                    //update revolving wheels
                    getRevolvingWheels.WithEach(
                        w => w.setAngle(wheel_angle)
                    );

                    #endregion


                    #region 3. APPLY FORCE TO WHEELS
                    var base_vect = new double[2]; //vector pointing in the direction force will be applied to a wheel ; relative to the wheel.

                    //if accelerator is pressed down and speed limit has not been reached, go forwards
                    var lessthanlimit = (getSpeedKMH() < max_speed);
                    var flag1 = (accelerate == ACC_ACCELERATE) && lessthanlimit;
                    if (flag1)
                    {
                        base_vect = new double[] { 0, -1 };
                    }
                    else if (accelerate == ACC_BRAKE)
                    {
                        //braking, but still moving forwards - increased force
                        if (getLocalVelocity()[1] < 0)
                        {
                            base_vect = new double[] { 0, 1.3 };
                        }
                        //going in reverse - less force
                        else
                        {
                            base_vect = new double[] { 0, 0.7 };
                        }
                    }
                    else
                    {
                        base_vect[0] = 0;
                        base_vect[1] = 0;
                    }

                    //multiply by engine power, which gives us a force vector relative to the wheel
                    var fvect = new double[] { 
                        power * base_vect[0], 
                        power * base_vect[1] 
                    };

                    //apply force to each wheel



                    getPoweredWheels.WithEachIndex(
                        (w, i) =>
                        {
                            var wp = w.body.GetWorldCenter();
                            var wf = w.body.GetWorldVector(new b2Vec2(fvect[0], fvect[1]));

                            //Console.WriteLine("getPoweredWheels ApplyForce #" + i);
                            w.body.ApplyForce(wf, wp);
                        }
                    );




                    //if going very slow, stop - to prevent endless sliding
                    var veryslow = (getSpeedKMH() < 4);
                    var flag2 = veryslow && (accelerate == ACC_NONE);
                    if (flag2)
                    {
                        //Console.WriteLine("setSpeed 0");
                        setSpeed(0);
                    }
                    #endregion


                };
                #endregion

            }
        public void TestFullCycle(int gameId, int level)
        {
            var timeStart           = DateTime.Now;
            var module              = SimulationHelper.GetModule(gameId);
            var configuration       = new Configuration();
            var targetRtpLevel      = Math.Round(configuration.RtpLevels.FirstOrDefault(rl => rl.Level == level).Rtp, 2);
            var totalSummaryData    = new SummaryData();
            var spinRequestContext  = SimulationHelper.GetMockSpinRequestContext(gameId);
            var bonusRequestContext = SimulationHelper.GetMockBonusRequestContext(gameId, 0);
            var targetWheel         = MainGameEngine.GetTargetWheel(level, configuration);
            var userGameKey         = new UserGameKey()
            {
                UserId = -1,
                GameId = gameId,
                Level  = level
            };

            var spinBet = MainGameEngine.GenerateSpinBet(spinRequestContext);
            var wheel   = new Wheel(Game.WheelWidth, Game.WheelHeight);

            for (var reel1 = 0; reel1 < targetWheel[0].Count; reel1++)
            {
                for (var reel2 = 0; reel2 < targetWheel[1].Count; reel2++)
                {
                    for (var reel3 = 0; reel3 < targetWheel[2].Count; reel3++)
                    {
                        for (var reel4 = 0; reel4 < targetWheel[3].Count; reel4++)
                        {
                            for (var reel5 = 0; reel5 < targetWheel[4].Count; reel5++)
                            {
                                wheel.Reels[0] = SimulationHelper.GetReelRange(targetWheel[0], reel1);
                                wheel.Reels[1] = SimulationHelper.GetReelRange(targetWheel[1], reel2);
                                wheel.Reels[2] = SimulationHelper.GetReelRange(targetWheel[2], reel3);
                                wheel.Reels[3] = SimulationHelper.GetReelRange(targetWheel[3], reel4);
                                wheel.Reels[4] = SimulationHelper.GetReelRange(targetWheel[4], reel5);

                                var topIndices = new List <int> {
                                    reel1, reel2, reel3, reel4, reel5
                                };
                                var winPositions            = MainGameEngine.GenerateWinPositions(configuration.Payline, configuration.PayTable, wheel, spinBet.LineBet, spinBet.Lines, spinBet.Multiplier);
                                var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(configuration.SymbolCollapsePairs, winPositions.Select(wp => wp.Symbol).ToList(), wheel);
                                var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(wheel, winPositions);

                                var spinResult = new SpinResult(level, spinBet, wheel, topIndices, winPositions, matchingSymbolPositions, bombAndStopperPositions)
                                {
                                    PlatformType = spinRequestContext.Platform,
                                    Level        = level
                                };

                                totalSummaryData.Update(spinResult);

                                if (spinResult.HasBonus)
                                {
                                    var bonus = module.CreateBonus(spinResult).Value;

                                    while (!bonus.IsCompleted)
                                    {
                                        if (bonus is RevealBonus)
                                        {
                                            bonusRequestContext = SimulationHelper.GetMockBonusRequestContext(gameId, RandomNumberEngine.Next(Reveal.RandomWeightMinRange, Reveal.RandomWeightMaxRange));
                                        }

                                        var bonusResult = SimulationHelper.ExecuteBonus(level, bonus, bonusRequestContext, configuration).Value;

                                        totalSummaryData.UpdateBonus(bonusResult);

                                        bonus = bonusResult.Bonus;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            totalSummaryData.DisplayData(level, timeStart, targetRtpLevel);
            var resultOverallRtp = Math.Round(totalSummaryData.RtpData.OverallRtp, 2);

            var isWithinRtp = totalSummaryData.RtpData.OverallRtp >= targetRtpLevel - 0.5m && totalSummaryData.RtpData.OverallRtp <= targetRtpLevel + 0.5m;

            Assert.True(isWithinRtp, $"RTP not matching. The result is {resultOverallRtp}. Expected is {targetRtpLevel}");
        }
Exemplo n.º 35
0
        private void HandleDiceClick(object sender, EventArgs e)
        {
            Button b = sender as Button;

            if (b == null)
            {
                return;
            }

            switch (b.Name)
            {
            case "btnDiceStandart":
            {
                int val = this.diceStandart.Throw(rnd);
                AudioPlayer.PlayClickSound();
                this.lblStandart.Text = $"{val}";

                if (val < DiceConstants.MaxStandart && currentPlayer.PawnsAtHome + currentPlayer.PawnsEscaped == PlayerConstants.PawnsPerPlayer)
                {
                    if (this.curPlayerInitialThrows > 1)
                    {
                        this.curPlayerInitialThrows--;
                        this.GameState = GameStateType.ThrowNormal;
                    }
                    else
                    {
                        this.curPlayerInitialThrows--;
                        this.GameState = GameStateType.ChangePlayerTurn;
                    }

                    break;
                }

                this.players[turn].StepsLeft = val;

                this.GameState = GameStateType.SelectPawn;
                break;
            }

            case "btnDiceNine":
            {
                int val = this.diceNine.Throw(rnd);

                this.players[turn].StepsLeft = -1 * val;
                this.lblNine.Text            = $"{val}";
                AudioPlayer.PlayClickSound();
                this.GameState = GameStateType.MovePawn;
                break;
            }

            case "btnDiceMama":
            {
                int val = this.diceMama.Throw(rnd);

                this.players[turn].StepsLeft = val;
                this.lblMama.Text            = $"{val}";
                AudioPlayer.PlayClickSound();
                this.GameState = GameStateType.SelectPawn;
                break;
            }

            case "btnDiceCatapult":
            {
                int val = this.diceCatapult.Throw(rnd);
                this.players[turn].StepsLeft = -1 * val;
                this.lblCatapult.Text        = $"{val}";
                this.GameState = GameStateType.MovePawn;
                AudioPlayer.PlayCatapultEjectSound();
                break;
            }

            case "btnWheel":
            {
                // TODO: sled kato koleloto se zavyrti
                // rezultatyt trqbwa da se pazi w pole
                // i ottam natatyk da se sluchwat nqkvi neshta :D

                Wheel.Spin(b, this.rnd);
                // TODO: TO BE FIXED
                //await Task.Delay(10000);
                //this.spinResult = (WheelType)int.Parse(b.Name[b.Name.Length - 1].ToString());
                //b.Name = "btnWheel";
                //GetResultFromWheel();
                //this.GameState = GameStateType.RotateWheel;
                // this.UpdateControls(false, false, false, false, false);
                //this.GameState = GameStateType.ChangePlayerTurn;
                break;
            }
            }
        }
Exemplo n.º 36
0
 private void Start()
 {
     _wheel = new Wheel(_numberOfSectors, _probability, _circle);
     _wheel.Init();
     _wheel.InitButton(_twistButton);
 }
Exemplo n.º 37
0
 private bool ShouldSteer(Wheel wheel)
 {
     // TODO: look at flags
     return wheel.IsFront;
 }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        VehiclePart       part   = (VehiclePart)target;
        VehiclePartConfig config = part.PartConfig;
        Type desiredConfig       = _partConfigDict[part.GetType()];

        if (config == null || config.GetType() != desiredConfig)
        {
            EditorGUILayout.HelpBox("Wrong config type! Use " + desiredConfig, MessageType.Error);
        }

        if (GUILayout.Button("Mirror (" + part.Mirrored + ")"))
        {
            part.Mirrored = !part.Mirrored;
            EditorUtility.SetDirty(part);
            SceneView.RepaintAll(); // !! GOD COMMAND
        }

        if (part is Wheel)
        {
            Wheel wheel = part as Wheel;
            if (GUILayout.Button("Generate Wheel Collider"))
            {
                WheelCollider wheelCollider = wheel.WheelCollider;
                if (wheelCollider == null)
                {
                    GameObject wheelColliderObject = new GameObject();
                    wheelColliderObject.transform.SetParent(wheel.Vehicle.transform);
                    wheelColliderObject.transform.localPosition = Vector3.zero;
                    wheelColliderObject.name = "[" + wheel.name + " collider]";
                    wheelCollider            = wheelColliderObject.AddComponent <WheelCollider>();
                }
                Wheel.ImplementConfigValues(ref wheelCollider, wheel.WheelConfig);
                Vector3 offset = wheel.GetUpDirection() * wheel.WheelConfig.suspensionDistance * 0.5f;
                wheelCollider.transform.position = wheel.transform.position + wheel.Vehicle.transform.TransformDirection(offset);
                wheel.WheelCollider = wheelCollider;
                EditorUtility.SetDirty(wheel);
            }
        }

        if (part is ControlSurface)
        {
            ControlSurface moveableStructure = part as ControlSurface;
            if (GUILayout.Button("Save default rotation"))
            {
                moveableStructure.SurfaceControls.SetDefaultLocalRotation(moveableStructure.transform.localEulerAngles);
                EditorUtility.SetDirty(part);
            }
        }

        /*if (part is AerodynamicPart)
         * {
         *  if((part as AerodynamicPart).Aerodynamics == null)
         *  {
         *      EditorGUILayout.HelpBox("No aerodynamic data assigned! Click button below.", MessageType.Error);
         *  }
         *  if (GUILayout.Button("Input aerodynamic data"))
         *  {
         *      if (config != null)
         *      {
         *          (part as AerodynamicPart).Aerodynamics = new Aerodynamics(config.aerodynamicsData);
         *      }
         *  }
         * }*/
    }
Exemplo n.º 39
0
 private float BrakeBias(Wheel wheel)
 {
     return(wheel.IsFront
         ? 1f - HandlingData.BrakeBias : wheel.IsRear
         ? HandlingData.BrakeBias : .5f);
 }
Exemplo n.º 40
0
        private void Initialize(VehicleDef def, int[] colors = null)
        {
            Definition = def;

            if (colors != null && colors[0] != -1)
            {
                SetColors(colors);
            }
            else
            {
                var defaultClrs = CarColors.GetCarDefaults(Definition.ModelName);

                if (defaultClrs != null)
                {
                    SetColors(defaultClrs[UnityEngine.Random.Range(0, defaultClrs.Count)]);
                }
                else
                {
                    Debug.LogWarningFormat("No colours defined for {0}!", def.GameName);
                }
            }

            name = Definition.GameName;

            _geometryParts = Geometry.Load(Definition.ModelName,
                                           TextureDictionary.Load(Definition.TextureDictionaryName),
                                           TextureDictionary.Load("vehicle"),
                                           TextureDictionary.Load("misc"));

            _frames = _geometryParts.AttachFrames(transform, MaterialFlags.Vehicle);

            var wheelFrame = _frames.FirstOrDefault(x => x.Name == "wheel");

            if (wheelFrame == null)
            {
                Debug.LogWarningFormat("No wheels defined for {0}!", def.GameName);
                Destroy(gameObject);
                return;
            }

            foreach (var frame in _frames)
            {
                if (!frame.Name.StartsWith("wheel_"))
                {
                    continue;
                }
                if (!frame.Name.EndsWith("_dummy"))
                {
                    continue;
                }

                var childFrames = _frames.Where(x => x.ParentIndex == frame.Index);

                // disable all children of wheel dummies
                foreach (var childFrame in childFrames)
                {
                    childFrame.gameObject.SetActive(false);
                }

                var wheelAlignment = GetWheelAlignment(frame.Name);

                Wheel inst;

                // see if this wheel dummy has a wheel child
                var wheel = childFrames.FirstOrDefault(x => x.Name == "wheel");

                if (wheel == null)
                {
                    var copy = Instantiate(wheelFrame.transform);
                    copy.SetParent(frame.transform, false);

                    _wheels.Add(inst = new Wheel {
                        Alignment = wheelAlignment,
                        Parent    = frame.transform,
                        Child     = copy,
                    });
                }
                else
                {
                    // all children of wheel dummies get set to inactive so activate this one
                    wheel.gameObject.SetActive(true);

                    _wheels.Add(inst = new Wheel {
                        Alignment = wheelAlignment,
                        Parent    = frame.transform,
                        Child     = wheel.transform,
                    });
                }

                if (inst.IsLeftHand)
                {
                    frame.transform.Rotate(Vector3.up, 180.0f);
                }

                inst.Complement = _wheels.FirstOrDefault(x =>
                                                         (x.Alignment & WheelAlignment.LeftRightMask) != (inst.Alignment & WheelAlignment.LeftRightMask) &&
                                                         (x.Alignment & WheelAlignment.FrontMidRearMask) == (inst.Alignment & WheelAlignment.FrontMidRearMask));

                if (inst.Complement != null)
                {
                    inst.Complement.Complement = inst;
                }
            }

            InitializePhysics();

            foreach (var pair in _frames.Where(x => x.Name.StartsWith("door_")))
            {
                var doorAlignment = GetDoorAlignment(pair.Name);

                if (doorAlignment == DoorAlignment.None)
                {
                    continue;
                }

                var hinge = pair.gameObject.AddComponent <HingeJoint>();
                hinge.axis      = Vector3.up;
                hinge.useLimits = true;

                var limit = 90.0f * ((doorAlignment == DoorAlignment.LeftFront || doorAlignment == DoorAlignment.LeftRear) ? 1.0f : -1.0f);
                hinge.limits = new JointLimits {
                    min = Mathf.Min(0, limit), max = Mathf.Max(0, limit),
                };
                hinge.connectedBody = gameObject.GetComponent <Rigidbody>();
            }

            var frontSeat = GetPart("ped_frontseat");
            var backSeat  = GetPart("ped_backseat");

            if (frontSeat != null)
            {
                var frontSeatMirror = new GameObject("ped_frontseat").transform;
                frontSeatMirror.SetParent(frontSeat.parent, false);
                frontSeatMirror.localPosition = Vector3.Scale(frontSeat.localPosition, new Vector3(-1f, 1f, 1f));

                if (frontSeat.localPosition.x > 0f)
                {
                    AttachSeat(frontSeat, SeatAlignment.FrontRight);
                    AttachSeat(frontSeatMirror, SeatAlignment.FrontLeft);
                }
                else
                {
                    AttachSeat(frontSeatMirror, SeatAlignment.FrontRight);
                    AttachSeat(frontSeat, SeatAlignment.FrontLeft);
                }

                DriverTransform = GetSeat(SeatAlignment.FrontLeft).Parent;
            }

            if (backSeat != null)
            {
                var backSeatMirror = new GameObject("ped_backseat").transform;
                backSeatMirror.SetParent(backSeat.parent, false);
                backSeatMirror.localPosition = Vector3.Scale(backSeat.localPosition, new Vector3(-1f, 1f, 1f));

                if (backSeat.localPosition.x > 0f)
                {
                    AttachSeat(backSeat, SeatAlignment.BackRight);
                    AttachSeat(backSeatMirror, SeatAlignment.BackLeft);
                }
                else
                {
                    AttachSeat(backSeatMirror, SeatAlignment.BackRight);
                    AttachSeat(backSeat, SeatAlignment.BackLeft);
                }
            }

            gameObject.SetLayerRecursive(Layer);
        }
Exemplo n.º 41
0
	//[MenuItem("GameObject/Create Other/UnityCar")]
	public static GameObject CreateNewCar(){
		Debug.LogWarning("Create new car");
		GameObject unityCarObj=new GameObject("UnityCar");
						
		if (unityCarObj.rigidbody==null){
			mrigidbody=unityCarObj.AddComponent<Rigidbody>() as Rigidbody;
			mrigidbody.mass=1000;
			mrigidbody.angularDrag=0;
			mrigidbody.interpolation=RigidbodyInterpolation.Interpolate;
		}
		else
			mrigidbody=unityCarObj.GetComponent<Rigidbody>();

		if (unityCarObj.GetComponent<CarDynamics>()==null)
			carDynamics=unityCarObj.AddComponent<CarDynamics>() as CarDynamics;
		else
			carDynamics=unityCarObj.GetComponent<CarDynamics>();
			
		centerOfMassObject=new GameObject("COG");
		centerOfMassObject.transform.parent=unityCarObj.transform;
		centerOfMassObject.transform.localPosition=Vector3.zero;
		centerOfMassObject.transform.localRotation=Quaternion.identity;
		
		carDynamics.centerOfMass=centerOfMassObject.transform;			
				
		if (unityCarObj.GetComponent<Drivetrain>()==null)
			drivetrain =unityCarObj.AddComponent<Drivetrain>() as Drivetrain;
		else
			drivetrain=unityCarObj.GetComponent<Drivetrain>();
			
		
		if (unityCarObj.GetComponent<AxisCarController>()==null)
			axisCarController=unityCarObj.AddComponent<AxisCarController>() as AxisCarController;
		else
			axisCarController=unityCarObj.GetComponent<AxisCarController>();
			
/* 
		if (unityCarObj.GetComponent<SoundController>()==null)
			soundController=unityCarObj.AddComponent<SoundController>() as SoundController;
		else
			soundController=unityCarObj.GetComponent<SoundController>();
			
		soundController.enabled=false; */

		if (unityCarObj.GetComponent<Axles>()==null)
			axles =unityCarObj.AddComponent<Axles>() as Axles;
		else
			axles =unityCarObj.GetComponent<Axles>();
			
		// to avoid car assigned to default layer
		unityCarObj.layer=1; 

		if (unityCarObj.transform.Find("Body")==null){
			bodyDown = GameObject.CreatePrimitive(PrimitiveType.Cube);
			bodyDown.name="Body";
			Object.DestroyImmediate(bodyDown.collider);
			bodyDown.transform.parent=unityCarObj.transform;
			bodyDown.transform.localPosition=Vector3.zero;
			bodyDown.transform.localRotation=Quaternion.identity;
			bodyDown.transform.localScale=new Vector3(1.5f,0.5f,4);
			
			bodyUp = GameObject.CreatePrimitive(PrimitiveType.Cube);
			bodyUp.name="Body";
			Object.DestroyImmediate(bodyUp.collider);
			bodyUp.transform.parent=unityCarObj.transform;
			bodyUp.transform.localRotation=Quaternion.identity;
			bodyUp.transform.localScale=new Vector3(bodyDown.transform.localScale.x,bodyDown.transform.localScale.y*0.666f,bodyDown.transform.localScale.z/2);
			bodyUp.transform.localPosition=new Vector3(0,bodyDown.transform.localScale.y - (bodyDown.transform.localScale.y-bodyUp.transform.localScale.y)/2,0);
		}
		else{
			bodyDown=unityCarObj.transform.Find("Body").gameObject;
		}
		
		if (unityCarObj.transform.Find("Collider")==null){
			mcollider= new GameObject("ColliderDown");
			mcollider.transform.parent=unityCarObj.transform;
			mcollider.transform.localPosition=Vector3.zero;
			mcollider.transform.localRotation=Quaternion.identity;
			boxColliderDown = mcollider.gameObject.AddComponent<BoxCollider>() as BoxCollider;
			boxColliderDown.transform.localScale=new Vector3(1.5f,0.5f,4);

			mcollider= new GameObject("ColliderUp");
			mcollider.transform.parent=unityCarObj.transform;
			mcollider.transform.localRotation=Quaternion.identity;		
			boxColliderUp = mcollider.gameObject.AddComponent<BoxCollider>() as BoxCollider;
			boxColliderUp.transform.localScale=new Vector3(boxColliderDown.transform.localScale.x,boxColliderDown.transform.localScale.y*0.666f,boxColliderDown.transform.localScale.z/2);
			boxColliderUp.transform.localPosition=new Vector3(0,boxColliderDown.transform.localScale.y-(boxColliderDown.transform.localScale.y-boxColliderUp.transform.localScale.y)/2,0);			
		}
		else{
			mcollider=unityCarObj.transform.Find("Collider").gameObject;
			boxColliderDown = mcollider.gameObject.GetComponent<BoxCollider>();
		}
		
 		if (unityCarObj.transform.Find("wheelFL")==null){
			wheelFL = new GameObject("wheelFL");
			wheelFL.transform.parent=unityCarObj.transform;
			wheel = wheelFL.gameObject.AddComponent<Wheel>() as Wheel;
			wheelFL.transform.localPosition=new Vector3(-boxColliderDown.transform.localScale.x/2+wheel.width/2, -0.1f, boxColliderDown.transform.localScale.z/2 - boxColliderDown.transform.localScale.z/8);
			wheelFL.transform.localRotation=Quaternion.identity;
	
			wheel.showForces=false;
			wheel.wheelPos=WheelPos.FRONT_LEFT;
			axles.frontAxle.leftWheel=wheel;

			model = GameObject.CreatePrimitive(PrimitiveType.Sphere);
			model.name="modelFL";
			Object.DestroyImmediate(model.collider);			
			model.transform.parent=wheelFL.transform;
			model.transform.localPosition=Vector3.zero;
			model.transform.localRotation=Quaternion.identity;
			model.transform.localScale=new Vector3(wheel.width,wheel.radius*2,wheel.radius*2);
			wheel.model=model;
		}
		else{
			wheelFL=unityCarObj.transform.Find("wheelFL").gameObject;
		}
		
		if (LayerMask.NameToLayer("Wheel")!=-1) wheelFL.gameObject.layer=LayerMask.NameToLayer("Wheel");
		
  	if (unityCarObj.transform.Find("wheelFR")==null){
			wheelFR = new GameObject("wheelFR");
			wheelFR.transform.parent=unityCarObj.transform;
			wheel = wheelFR.gameObject.AddComponent<Wheel>() as Wheel;
			wheelFR.transform.localPosition=new Vector3(boxColliderDown.transform.localScale.x/2-wheel.width/2, -0.1f, boxColliderDown.transform.localScale.z/2 - boxColliderDown.transform.localScale.z/8);
			wheelFR.transform.localRotation=Quaternion.identity;		
			
			wheel.showForces=false;
			wheel.wheelPos=WheelPos.FRONT_RIGHT;
			axles.frontAxle.rightWheel=wheel;

			model = GameObject.CreatePrimitive(PrimitiveType.Sphere);
			model.name="modelFR";
			Object.DestroyImmediate(model.collider);			
			model.transform.parent=wheelFR.transform;
			model.transform.localPosition=Vector3.zero;
			model.transform.localRotation=Quaternion.identity;
			model.transform.localScale=new Vector3(wheel.width,wheel.radius*2,wheel.radius*2);
			wheel.model=model;
		}
		else{
			wheelFR=unityCarObj.transform.Find("wheelFR").gameObject;
		}
		if (LayerMask.NameToLayer("Wheel")!=-1) wheelFR.gameObject.layer=LayerMask.NameToLayer("Wheel");
		
  	if (unityCarObj.transform.Find("wheelRL")==null){
			wheelRL = new GameObject("wheelRL");
			wheelRL.transform.parent=unityCarObj.transform;
			wheel = wheelRL.gameObject.AddComponent<Wheel>() as Wheel;
			wheelRL.transform.localPosition=new Vector3(-boxColliderDown.transform.localScale.x/2+wheel.width/2, -0.1f, -(boxColliderDown.transform.localScale.z/2 - boxColliderDown.transform.localScale.z/8));
			wheelRL.transform.localRotation=Quaternion.identity;		
			
			wheel.showForces=false;
			wheel.wheelPos=WheelPos.REAR_LEFT;
			axles.rearAxle.leftWheel=wheel;
			
			model = GameObject.CreatePrimitive(PrimitiveType.Sphere);
			model.name="modelRL";
			Object.DestroyImmediate(model.collider);			
			model.transform.parent=wheelRL.transform;
			model.transform.localPosition=Vector3.zero;
			model.transform.localRotation=Quaternion.identity;
			model.transform.localScale=new Vector3(wheel.width,wheel.radius*2,wheel.radius*2);
			wheel.model=model;
		}
		else{
			wheelRL=unityCarObj.transform.Find("wheelRL").gameObject;
		}		
		if (LayerMask.NameToLayer("Wheel")!=-1) wheelRL.gameObject.layer=LayerMask.NameToLayer("Wheel");
		
  	if (unityCarObj.transform.Find("wheelRR")==null){
			wheelRR = new GameObject("wheelRR");
			wheelRR.transform.parent=unityCarObj.transform;
			wheel = wheelRR.gameObject.AddComponent<Wheel>() as Wheel;
			wheelRR.transform.localPosition=new Vector3(boxColliderDown.transform.localScale.x/2-wheel.width/2, -0.1f, -(boxColliderDown.transform.localScale.z/2 - boxColliderDown.transform.localScale.z/8));
			wheelRR.transform.localRotation=Quaternion.identity;		
			
			wheel.showForces=false;
			wheel.wheelPos=WheelPos.REAR_RIGHT;
			axles.rearAxle.rightWheel=wheel;
			
			model = GameObject.CreatePrimitive(PrimitiveType.Sphere);
			model.name="modelRR";
			Object.DestroyImmediate(model.collider);			
			model.transform.parent=wheelRR.transform;
			model.transform.localPosition=Vector3.zero;
			model.transform.localRotation=Quaternion.identity;
			model.transform.localScale=new Vector3(wheel.width,wheel.radius*2,wheel.radius*2);
			wheel.model=model;
		}
		else{
			wheelRR=unityCarObj.transform.Find("wheelRR").gameObject;
		}		
		if (LayerMask.NameToLayer("Wheel")!=-1) wheelRR.gameObject.layer=LayerMask.NameToLayer("Wheel");
				
		axles.frontAxle.maxSteeringAngle=33;
		axles.frontAxle.handbrakeFrictionTorque=0;
		axles.rearAxle.maxSteeringAngle=0;
		axles.rearAxle.handbrakeFrictionTorque=1000;
		axles.frontAxle.tires=CarDynamics.Tires.competition_front;
		axles.rearAxle.tires=CarDynamics.Tires.competition_rear;

		axles.SetWheels();
			
/*  		dashBoard = (GameObject)Instantiate(Resources.Load("Samples/Prefabs/Cars/DashBoard"));
		if (dashBoard ){
			dashBoard.transform.parent=unityCarObj.transform;
			dashBoard.transform.localPosition=Vector3.zero;
			dashBoard.transform.localRotation=Quaternion.identity;				
		} */

		// These are to avoid warning about "assigned but never used"
		drivetrain.enabled=true;
		axisCarController.enabled=true;
		  		
		return unityCarObj;
	}
Exemplo n.º 42
0
 public WheelFrictionChanger(Wheel w)
 {
     wheel             = w;
     forwardStiffness  = w.whCollider.forwardFriction.stiffness;
     sidewaysStiffness = w.whCollider.sidewaysFriction.stiffness;
 }
Exemplo n.º 43
0
 private void ApplyBrakeTorque(Wheel wheel, float direction)
 {
     wheel.collider.brakeTorque = direction * maxAcceleration * 1000000 * Time.deltaTime;
 }
Exemplo n.º 44
0
        public void TestFreeGameFullCycle(int gameId, int level, string reelStripId)
        {
            var timeStart           = DateTime.Now;
            var module              = SimulationHelper.GetModule(gameId);
            var configuration       = new Configuration();
            var targetRtpLevel      = Math.Round(configuration.RtpLevels.FirstOrDefault(rl => rl.Level == level).Rtp, 2);
            var totalSummaryData    = new SummaryData();
            var spinRequestContext  = SimulationHelper.GetMockSpinRequestContext(gameId);
            var bonusRequestContext = SimulationHelper.GetMockBonusRequestContext(0, gameId);
            var targetWheel         = MainGameEngine.GetTargetWheel(level, configuration, reelStripId);
            var userGameKey         = new UserGameKey()
            {
                UserId = -1,
                GameId = gameId,
                Level  = level
            };

            var spinBet = MainGameEngine.GenerateSpinBet(spinRequestContext);
            var wheel   = new Wheel(Game.WheelWidth, Game.WheelHeight)
            {
                ReelStripsId = reelStripId
            };

            for (var reel1 = 0; reel1 < targetWheel[0].Count; reel1++)
            {
                for (var reel2 = 0; reel2 < targetWheel[1].Count; reel2++)
                {
                    for (var reel3 = 0; reel3 < targetWheel[2].Count; reel3++)
                    {
                        for (var reel4 = 0; reel4 < targetWheel[3].Count; reel4++)
                        {
                            for (var reel5 = 0; reel5 < targetWheel[4].Count; reel5++)
                            {
                                wheel.Reels[0] = SimulationHelper.GetReelRange(targetWheel[0], reel1);
                                wheel.Reels[1] = SimulationHelper.GetReelRange(targetWheel[1], reel2);
                                wheel.Reels[2] = SimulationHelper.GetReelRange(targetWheel[2], reel3);
                                wheel.Reels[3] = SimulationHelper.GetReelRange(targetWheel[3], reel4);
                                wheel.Reels[4] = SimulationHelper.GetReelRange(targetWheel[4], reel5);

                                var topIndices = new List <int> {
                                    reel1, reel2, reel3, reel4, reel5
                                };
                                var avalancheMultiplier = configuration.BonusConfig.FreeSpin.Multipliers.First();
                                var winPositions        = MainGameEngine.GenerateWinPositions(configuration.Payline, configuration.PayTable, wheel, spinBet.LineBet, spinBet.Lines, avalancheMultiplier);
                                var bonusPositions      = MainGameEngine.GenerateBonusPositions(wheel);

                                var spinResult = new SpinResult(spinBet, wheel, topIndices, winPositions, bonusPositions, avalancheMultiplier)
                                {
                                    PlatformType = spinRequestContext.Platform,
                                    Level        = level
                                };

                                totalSummaryData.Update(spinResult);

                                if (spinResult.HasBonus)
                                {
                                    var bonus = module.CreateBonus(spinResult).Value;

                                    if (bonus is FreeSpinBonus)
                                    {
                                        bonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(spinResult);
                                    }

                                    var collapsingSpinBonus = bonus as CollapsingSpinBonus;

                                    while (!bonus.IsCompleted)
                                    {
                                        var previousSpinResult = collapsingSpinBonus.PreviousGameResult == null ? collapsingSpinBonus.SpinResult : collapsingSpinBonus.PreviousSpinResult;

                                        var referenceWheel       = MainGameEngine.GetTargetWheel(level, configuration, previousSpinResult.Wheel.ReelStripsId);
                                        var collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(
                                            previousSpinResult,
                                            referenceWheel,
                                            configuration.BonusConfig.FreeSpin.Multipliers,
                                            configuration.Payline,
                                            configuration.PayTable);

                                        collapsingSpinBonus.UpdateBonus(collapsingSpinResult);
                                        var bonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingSpinBonus, collapsingSpinResult);

                                        totalSummaryData.UpdateBonus(bonusResult);

                                        bonus = bonusResult.Bonus;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            totalSummaryData.DisplayData(level, timeStart, targetRtpLevel);
            var resultOverallRtp = Math.Round(totalSummaryData.RtpData.OverallRtp, 2);

            var isWithinRtp = totalSummaryData.RtpData.OverallRtp >= targetRtpLevel - 0.5m && totalSummaryData.RtpData.OverallRtp <= targetRtpLevel + 0.5m;

            Assert.True(isWithinRtp, $"RTP not matching. The result is {resultOverallRtp}. Expected is {targetRtpLevel}");
        }
Exemplo n.º 45
0
 // This is a (subtle) example of Dependency Injection.
 public Gear(int chainring, int cog, Wheel wheel)
 {
     Chainring = chainring;
     Cog = cog;
     Wheel = wheel;
 }
Exemplo n.º 46
0
 /// <summary>
 /// Called after a wheel event is received by the owning view.<br />
 /// CustomViewBehaviour.REQUIRES_WHEEL_EVENTS must be enabled during construction. See CustomView(ViewWrapperImpl.CustomViewBehaviour behaviour).<br />
 /// </summary>
 /// <param name="wheel">The wheel event.</param>
 /// <returns>True if the wheel event should be consumed.</returns>
 /// <since_tizen> 3 </since_tizen>
 public virtual bool OnWheel(Wheel wheel)
 {
     return(false); // Do not consume
 }
Exemplo n.º 47
0
Arquivo: Tank.cs Projeto: whztt07/SDK
        /// <summary>Overridden from <see cref="Engine.EntitySystem.Entity.OnPreCreate()"/>.</summary>
        protected override void OnPreCreate()
        {
            base.OnPreCreate();

            //initialize wheels list
            wheels = new List<Wheel>();
            foreach( TankType.Wheel wheelType in Type.Wheels )
            {
                Wheel wheel = new Wheel();

                wheel.type = wheelType;

                //detect track
                bool left = wheel.type.WheelBoneName.ToLower().Contains( "left" );
                wheel.track = left ? leftTrack : rightTrack;

                wheel.rotationAngle = World.Instance.Random.NextFloat() * MathFunctions.PI * 2;

                wheels.Add( wheel );
            }
        }
Exemplo n.º 48
0
 public AntiRoll(Wheel left, Wheel right)
 {
     this.wheelL = left;
     this.wheelR = right;
 }
Exemplo n.º 49
0
        public new void Setup(Vector halfSize, float mass, Color color)
        {
            //front wheels
            wheels[0] = new Wheel(new Vector(halfSize.X, halfSize.Y), 0.5f);
            wheels[1] = new Wheel(new Vector(-halfSize.X, halfSize.Y), 0.5f);

            //rear wheels
            wheels[2] = new Wheel(new Vector(halfSize.X, -halfSize.Y), 0.5f);
            wheels[3] = new Wheel(new Vector(-halfSize.X, -halfSize.Y), 0.5f);

            base.Setup(halfSize, mass, color);
        }
Exemplo n.º 50
0
        public void SaveChildEntities()
        {
            Executor executor = Executor.GetInstance();

            executor.CreateTable <Order>();
            executor.CreateTable <Skateboard>();
            executor.CreateTable <Wheel>();

            Order order = new Order
            {
                OrderDate = new DateTime(2021, 12, 5),
                Address   = "123 abc street"
            };

            var w = new Wheel {
                Name = "1"
            };
            var w2 = new Wheel {
                Name = "2"
            };
            var w3 = new Wheel {
                Name = "3"
            };
            var w4 = new Wheel {
                Name = "4"
            };

            var sk = new Skateboard
            {
                Brand       = "Hotsauce",
                DateCreated = new DateTime(2020, 5, 5),
                IsColor     = true,
                Price       = 45.99m,
                Wheels      = new List <Wheel> {
                    w, w2
                }
            };

            var sk2 = new Skateboard
            {
                Brand       = "Water",
                DateCreated = new DateTime(2021, 2, 28),
                IsColor     = false,
                Price       = 48.99m,
                Wheels      = new List <Wheel> {
                    w3, w4
                }
            };

            List <Skateboard> skateboards = new List <Skateboard>
            {
                sk,
                sk2
            };

            order.Items = skateboards;

            executor.Insert(order);

            Assert.AreEqual(1L, order.Items[0].BoardId);
            Assert.AreEqual(2L, order.Items[1].BoardId);

            Assert.AreEqual("1", order.Items[0].Wheels[0].Name);
            Assert.AreEqual("2", order.Items[0].Wheels[1].Name);
            Assert.AreEqual("3", order.Items[1].Wheels[0].Name);
            Assert.AreEqual("4", order.Items[1].Wheels[1].Name);
        }
Exemplo n.º 51
0
Arquivo: CarB.cs Projeto: BBJV/camachi
    Wheel SetupWheel( Transform wheelTransform ,   bool isFrontWheel  )
    {
        GameObject go = new GameObject(wheelTransform.name + " Collider");
        go.transform.position = wheelTransform.position;
        go.transform.parent = transform;
        go.transform.rotation = wheelTransform.rotation;
        go.layer = LayerMask.NameToLayer("Wheel");

        WheelCollider wc = go.AddComponent(typeof(WheelCollider)) as WheelCollider;
        wc.suspensionDistance = suspensionRange;
        JointSpring js = wc.suspensionSpring;

        if (isFrontWheel)
        js.spring = suspensionSpringFront;
        else
        js.spring = suspensionSpringRear;

        js.damper = suspensionDamper;
        wc.suspensionSpring = js;

        Wheel wheel = new Wheel();
        wheel.collider = wc;
        wc.sidewaysFriction = wfc;
        wheel.wheelGraphic = wheelTransform;
        //wheel.tireGraphic = wheelTransform.GetComponentsInChildren<Transform>()[1];
        wheel.tireGraphic = wheelTransform;

        wheelRadius = wheel.tireGraphic.renderer.bounds.size.y / 2;
        wheel.collider.radius = wheelRadius;

        if (isFrontWheel)
        {
        wheel.steerWheel = true;

        go = new GameObject(wheelTransform.name + " Steer Column");
        go.transform.position = wheelTransform.position;
        go.transform.rotation = wheelTransform.rotation;
        go.transform.parent = transform;
        wheelTransform.parent = go.transform;
        }
        else
        {
        wheel.driveWheel = true;
        go = new GameObject(wheelTransform.name + " drive Column");
        go.transform.position = wheelTransform.position;
        go.transform.rotation = wheelTransform.rotation;
        go.transform.parent = transform;
        wheelTransform.parent = go.transform;
        }

        return wheel;
    }
Exemplo n.º 52
0
 public void Visit(Wheel wheel)
 {
     Console.WriteLine("Visiting {0} wheel", wheel.Name);
 }
 public void GiveWheel(Wheel myWheel)
 {
     Sim.DLL_GiveWheelToCar(this.nativeCarObject, myWheel.nativeWheelObject);
 }
Exemplo n.º 54
0
 public WheelFrictionChanger(Wheel w)
 {
     wheel = w;
     forwardStiffness  = w.whCollider.forwardFriction.stiffness;
     sidewaysStiffness = w.whCollider.sidewaysFriction.stiffness;
 }
Exemplo n.º 55
0
        public void createVehicle(Vector3 position)
        {
            Chassis chassisentity = new Chassis();
            float width = 4;
            float height = 4;
            float length = 4;
            float pistonheight=1;
            float pistonradius=1;
            float hubheight = .1f;
            float hubradius = 3.25f;
            WeldJoint weldjoint;
            BepuEntity chassis = chassisentity.createChassis(position, width, height, length);
            chassis.LoadContent();
            chassis.body.Mass = 5;
            float wheelWidth = 3;
            float wheelRadius = .006f;
            BepuEntity wheel;
            BepuEntity cylinder1;
            BepuEntity piston;
            BepuEntity shoeright;
            BepuEntity shoeleft;

            BepuEntity hub;

            pos = position;
            chassis.body.Position = position;
            position = pos;

            SlaveCylinder slave = new SlaveCylinder();
            Hub hubentity = new Hub();
            BrakeShoeLeft brakeshoeleft = new BrakeShoeLeft();
            BrakeShoeRight brakeshoeright = new BrakeShoeRight();
            Wheel wheelentity = new Wheel();
            SlavePiston slavepiston = new SlavePiston();

            /*
            shoeright = createShoeRight(new Vector3(position.X - (width + 12), position.Y, position.Z - (length / 2)), width, height, length);
            LineJoint = new LineSliderJoint(chassis.body, shoeright.body, new Vector3(1, 0, 0), new Vector3(1, 0, 0), new Vector3(1, 0, 0));
             //   LineJoint.Motor.Settings.VelocityMotor.GoalVelocity = .0000000000000000001f;
            LineJoint.Motor.IsActive = false;
            space.Add(LineJoint);*/

            shoeright = brakeshoeright.createShoeRight(new Vector3(position.X - (width + 12), position.Y, position.Z - (length / 2)), width, height, length);
            XNAGame.Instance().joint = new RevoluteJoint(chassis.body, shoeright.body, shoeright.body.Position, new Vector3(1, 0, 0));
            XNAGame.Instance().space.Add(XNAGame.Instance().joint);
            shoeright = brakeshoeright.createShoeRight(new Vector3(position.X + (width + 12), position.Y, position.Z - (length / 2)), width, height, length);
            XNAGame.Instance().joint = new RevoluteJoint(chassis.body, shoeright.body, shoeright.body.Position, new Vector3(1, 0, 0));
            XNAGame.Instance().space.Add(XNAGame.Instance().joint);
            shoeright = brakeshoeright.createShoeRight(new Vector3(position.X - (width + 12), position.Y, position.Z + (length + 23)), width, height, length);
            XNAGame.Instance().joint = new RevoluteJoint(chassis.body, shoeright.body, shoeright.body.Position, new Vector3(1, 0, 0));
            XNAGame.Instance().space.Add(XNAGame.Instance().joint);
            shoeright = brakeshoeright.createShoeRight(new Vector3(position.X + (width + 12), position.Y, position.Z + (length + 23)), width, height, length);
            XNAGame.Instance().joint = new RevoluteJoint(chassis.body, shoeright.body, shoeright.body.Position, new Vector3(1, 0, 0));
            XNAGame.Instance().space.Add(XNAGame.Instance().joint);

            /*
                       shoeleft = brakeshoeleft.createShoeLeft(new Vector3(position.X - (width + 12), position.Y-2.5f, position.Z - (length / 2)), width, height, length);
                       joint = new RevoluteJoint(chassis.body, shoeleft.body, shoeleft.body.Position, new Vector3(0, 0, 1));
                       space.Add(joint);
                       shoeleft = brakeshoeleft.createShoeLeft(new Vector3(position.X + (width + 12), position.Y-2.5f, position.Z - (length / 2)), width, height, length);
                       joint = new RevoluteJoint(chassis.body, shoeleft.body, shoeleft.body.Position, new Vector3(1, 0, 0));
                       space.Add(joint);
                       shoeleft = brakeshoeleft.createShoeLeft(new Vector3(position.X - (width + 12), position.Y-2.5f, position.Z + (length + 23)), width, height, length);
                       joint = new RevoluteJoint(chassis.body, shoeleft.body, shoeleft.body.Position, new Vector3(1, 0, 0));
                       space.Add(joint);
                       shoeleft = brakeshoeleft.createShoeLeft(new Vector3(position.X + (width + 12), position.Y-2.5f, position.Z + (length + 23)), width, height, length);
                       joint = new RevoluteJoint(chassis.body, shoeleft.body, shoeleft.body.Position, new Vector3(0, 1, 0));
                       space.Add(joint);
                  */

            hub = hubentity.createHub(new Vector3(position.X - (width + 10), position.Y, position.Z - (length - 2)), hubheight, hubradius);
            weldjoint = new WeldJoint(chassis.body, hub.body);
            XNAGame.Instance().space.Add(weldjoint);
            hub = hubentity.createHub(new Vector3(position.X + (width + 10), position.Y, position.Z - (length - 2)), hubheight, hubradius);
            weldjoint = new WeldJoint(chassis.body, hub.body);
            XNAGame.Instance().space.Add(weldjoint);
            hub = hubentity.createHub(new Vector3(position.X - (width + 10), position.Y, position.Z + (length + 23)), hubheight, hubradius);
            weldjoint = new WeldJoint(chassis.body, hub.body);
            XNAGame.Instance().space.Add(weldjoint);

            hub = hubentity.createHub(new Vector3(position.X + (width + 10), position.Y, position.Z + (length + 23)), hubheight, hubradius);
            weldjoint = new WeldJoint(chassis.body, hub.body);
            XNAGame.Instance().space.Add(weldjoint);

            cylinder1 = slave.createCylinder(new Vector3(position.X - (width + 11), position.Y + 1.25f, position.Z -1), "SlaveCylinder", 1);
            XNAGame.Instance().joint = new RevoluteJoint(chassis.body, cylinder1.body, cylinder1.body.Position, new Vector3(0, 0, 1));

            XNAGame.Instance().space.Add(XNAGame.Instance().joint);

            weldjoint = new WeldJoint(chassis.body, cylinder1.body);
            XNAGame.Instance().space.Add(weldjoint);
            cylinder1 = slave.createCylinder(new Vector3(position.X + (width + 11), position.Y + 1.25f, position.Z - 1), "SlaveCylinder", 1);
            XNAGame.Instance().joint = new RevoluteJoint(chassis.body, cylinder1.body, cylinder1.body.Position, new Vector3(0, 0, 1));
            XNAGame.Instance().space.Add(XNAGame.Instance().joint);

            weldjoint = new WeldJoint(chassis.body, cylinder1.body);
            XNAGame.Instance().space.Add(weldjoint);
             cylinder1 = slave.createCylinder(new Vector3(position.X - (width + 11), position.Y + 1.25f, position.Z + (length + 24)), "SlaveCylinder", 1);
             XNAGame.Instance().joint = new RevoluteJoint(chassis.body, cylinder1.body, cylinder1.body.Position, new Vector3(0, 0, 1));
             XNAGame.Instance().space.Add(XNAGame.Instance().joint);

            weldjoint = new WeldJoint(chassis.body, cylinder1.body);
            XNAGame.Instance().space.Add(weldjoint);
            cylinder1 = slave.createCylinder(new Vector3(position.X + (width + 11), position.Y + 1.25f, position.Z + (length + 24)), "SlaveCylinder", 1);
            XNAGame.Instance().joint = new RevoluteJoint(chassis.body, cylinder1.body, cylinder1.body.Position, new Vector3(0, 0, 1));
            XNAGame.Instance().space.Add(XNAGame.Instance().joint);

            weldjoint = new WeldJoint(chassis.body, cylinder1.body);
            XNAGame.Instance().space.Add(weldjoint);

            piston = slavepiston.createPiston1(new Vector3(position.X - (width + 11), position.Y + 1.25f, position.Z - 1), pistonheight, pistonradius);
            /*
            prismjoint = new PrismaticJoint(cylinder1.body, piston.body, cylinder1.body.Position,new Vector3(0,1,0) , piston.body.Position);
            prismjoint.Motor.IsActive = false;
            prismjoint.Limit.IsActive = true;
            prismjoint.Limit.Minimum = 0;
            prismjoint.Limit.Maximum = 4;
            space.Add(prismjoint);
            */

            XNAGame.Instance().LineJoint = new LineSliderJoint(cylinder1.body, piston.body, new Vector3(60, 5, -21), new Vector3(0, 0, -10), new Vector3(60, 5, -10));
            XNAGame.Instance().LineJoint.Motor.IsActive = false;
            XNAGame.Instance().space.Add(XNAGame.Instance().LineJoint);

            piston = slavepiston.createPiston1(new Vector3(position.X + (width + 11), position.Y + 1.25f, position.Z - 1), pistonheight, pistonradius);
            XNAGame.Instance().LineJoint = new LineSliderJoint(cylinder1.body, piston.body, new Vector3(60, 5, -21), new Vector3(0, 0, 10), new Vector3(60, 5, -10));
            XNAGame.Instance().LineJoint.Motor.IsActive = false;
            //    space.Add(LineJoint);

            piston = slavepiston.createPiston1(new Vector3(position.X - (width + 11), position.Y + 1.25f, position.Z + (length + 24)), pistonheight, pistonradius);
            XNAGame.Instance().LineJoint = new LineSliderJoint(cylinder1.body, piston.body, new Vector3(60, 5, -21), new Vector3(0, 0, 10), new Vector3(60, 5, -10));
            XNAGame.Instance().LineJoint.Motor.IsActive = false;
            //    space.Add(LineJoint);

            piston = slavepiston.createPiston1(new Vector3(position.X + (width + 11), position.Y + 1.25f, position.Z + (length + 24)), pistonheight, pistonradius);
            XNAGame.Instance().LineJoint = new LineSliderJoint(cylinder1.body, piston.body, new Vector3(60, 5, -21), new Vector3(0, 0, 10), new Vector3(60, 5, -10));
            XNAGame.Instance().LineJoint.Motor.IsActive = false;
            //    space.Add(LineJoint);

            //WHEELS AS MESH ENTITYS
            wheel = wheelentity.createWheel(new Vector3(position.X - (width + 12) + wheelRadius, position.Y, position.Z - (length - 5) - wheelWidth), "Wheels6", 1);
            XNAGame.Instance().wheeljoint1 = new RevoluteJoint(chassis.body, wheel.body, wheel.body.Position, new Vector3(1, 0, 0));
            XNAGame.Instance().wheeljoint1.Motor.IsActive = false;
            XNAGame.Instance().space.Add(XNAGame.Instance().wheeljoint1);

            wheel = wheelentity.createWheel(new Vector3(position.X + (width + 12) - wheelRadius, position.Y, position.Z - (length - 5) - wheelWidth), "Wheels6", 1);
            XNAGame.Instance().wheeljoint2 = new RevoluteJoint(chassis.body, wheel.body, wheel.body.Position, new Vector3(1, 0, 0));
            XNAGame.Instance().wheeljoint2.Motor.IsActive = false;
            XNAGame.Instance().space.Add(XNAGame.Instance().wheeljoint2);

            wheel = wheelentity.createWheel(new Vector3(position.X - (width + 12) + wheelRadius, position.Y, position.Z + (length + 21) + wheelWidth), "Wheels6", 1);
            XNAGame.Instance().wheeljoint3 = new RevoluteJoint(chassis.body, wheel.body, wheel.body.Position, new Vector3(1, 0, 0));
            XNAGame.Instance().wheeljoint3.Motor.IsActive = false;
            XNAGame.Instance().space.Add(XNAGame.Instance().wheeljoint3);

            wheel = wheelentity.createWheel(new Vector3(position.X + (width + 12) - wheelRadius, position.Y, position.Z + (length + 21) + wheelWidth), "Wheels6", 1);
            XNAGame.Instance().wheeljoint4 = new RevoluteJoint(chassis.body, wheel.body, wheel.body.Position, new Vector3(1, 0, 0));
            XNAGame.Instance().wheeljoint4.Motor.IsActive = false;
            XNAGame.Instance().space.Add(XNAGame.Instance().wheeljoint4);

            //modelDrawer.Add(chassis.body);
        }
Exemplo n.º 56
0
 private void UpdateWheelPose(Wheel wheel)
 {
     wheel.collider.GetWorldPose(out wheel.info.position, out wheel.info.rotation);
     wheel.model.position = wheel.info.position;
     wheel.model.rotation = wheel.info.rotation;
 }
        private void Initialize(VehicleDef def, int[] colors = null)
        {
            Definition = def;

            if (colors != null && colors[0] != -1) {
                SetColors(colors);
            } else {
                var defaultClrs = CarColors.GetCarDefaults(Definition.ModelName);

                if (defaultClrs != null) {
                    SetColors(defaultClrs[UnityEngine.Random.Range(0, defaultClrs.Count)]);
                } else {
                    Debug.LogWarningFormat("No colours defined for {0}!", def.GameName);
                }
            }

            name = Definition.GameName;

            _geometryParts = Geometry.Load(Definition.ModelName,
                TextureDictionary.Load(Definition.TextureDictionaryName),
                TextureDictionary.Load("vehicle"),
                TextureDictionary.Load("misc"));

            _frames = _geometryParts.AttachFrames(transform, MaterialFlags.Vehicle);

            var wheelFrame = _frames.FirstOrDefault(x => x.Name == "wheel");

            if (wheelFrame == null) {
                Debug.LogWarningFormat("No wheels defined for {0}!", def.GameName);
                Destroy(gameObject);
                return;
            }

            foreach (var frame in _frames) {
                if (!frame.Name.StartsWith("wheel_")) continue;
                if (!frame.Name.EndsWith("_dummy")) continue;

                var childFrames = _frames.Where(x => x.ParentIndex == frame.Index);

                // disable all children of wheel dummies
                foreach (var childFrame in childFrames) {
                    childFrame.gameObject.SetActive(false);
                }

                var wheelAlignment = GetWheelAlignment(frame.Name);

                Wheel inst;

                // see if this wheel dummy has a wheel child
                var wheel = childFrames.FirstOrDefault(x => x.Name == "wheel");

                if (wheel == null) {
                    var copy = Instantiate(wheelFrame.transform);
                    copy.SetParent(frame.transform, false);

                    _wheels.Add(inst = new Wheel {
                        Alignment = wheelAlignment,
                        Parent = frame.transform,
                        Child = copy,
                    });
                } else {
                    // all children of wheel dummies get set to inactive so activate this one
                    wheel.gameObject.SetActive(true);

                    _wheels.Add(inst = new Wheel {
                        Alignment = wheelAlignment,
                        Parent = frame.transform,
                        Child = wheel.transform,
                    });
                }

                if (inst.IsLeftHand) {
                    frame.transform.Rotate(Vector3.up, 180.0f);
                }

                inst.Complement = _wheels.FirstOrDefault(x =>
                    (x.Alignment & WheelAlignment.LeftRightMask) != (inst.Alignment & WheelAlignment.LeftRightMask) &&
                    (x.Alignment & WheelAlignment.FrontMidRearMask) == (inst.Alignment & WheelAlignment.FrontMidRearMask));

                if (inst.Complement != null) {
                    inst.Complement.Complement = inst;
                }
            }

            InitializePhysics();

            foreach (var pair in _frames.Where(x => x.Name.StartsWith("door_"))) {
                var doorAlignment = GetDoorAlignment(pair.Name);

                if (doorAlignment == DoorAlignment.None) continue;

                var hinge = pair.gameObject.AddComponent<HingeJoint>();
                hinge.axis = Vector3.up;
                hinge.useLimits = true;

                var limit = 90.0f * ((doorAlignment == DoorAlignment.LeftFront || doorAlignment == DoorAlignment.LeftRear) ? 1.0f : -1.0f);
                hinge.limits = new JointLimits { min = Mathf.Min(0, limit), max = Mathf.Max(0, limit), };
                hinge.connectedBody = gameObject.GetComponent<Rigidbody>();
            }

            var frontSeat = GetPart("ped_frontseat");
            var backSeat = GetPart("ped_backseat");

            if (frontSeat != null) {
                var frontSeatMirror = new GameObject("ped_frontseat").transform;
                frontSeatMirror.SetParent(frontSeat.parent, false);
                frontSeatMirror.localPosition = Vector3.Scale(frontSeat.localPosition, new Vector3(-1f, 1f, 1f));

                if (frontSeat.localPosition.x > 0f) {
                    AttachSeat(frontSeat, SeatAlignment.FrontRight);
                    AttachSeat(frontSeatMirror, SeatAlignment.FrontLeft);
                } else {
                    AttachSeat(frontSeatMirror, SeatAlignment.FrontRight);
                    AttachSeat(frontSeat, SeatAlignment.FrontLeft);
                }

                DriverTransform = GetSeat(SeatAlignment.FrontLeft).Parent;
            }

            if (backSeat != null) {
                var backSeatMirror = new GameObject("ped_backseat").transform;
                backSeatMirror.SetParent(backSeat.parent, false);
                backSeatMirror.localPosition = Vector3.Scale(backSeat.localPosition, new Vector3(-1f, 1f, 1f));

                if (backSeat.localPosition.x > 0f) {
                    AttachSeat(backSeat, SeatAlignment.BackRight);
                    AttachSeat(backSeatMirror, SeatAlignment.BackLeft);
                } else {
                    AttachSeat(backSeatMirror, SeatAlignment.BackRight);
                    AttachSeat(backSeat, SeatAlignment.BackLeft);
                }
            }

            gameObject.SetLayerRecursive(Layer);
        }
Exemplo n.º 58
0
	void LoadWheelData(Wheel w, string wheelPosition){
		value=LoadValue("mass","wheels-"+wheelPosition); if (value!="") w.mass=float.Parse(value,System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
		value=LoadValue("radius","wheels-"+wheelPosition); if (value!="") w.radius=float.Parse(value,System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
		value=LoadValue("rimRadius","wheels-"+wheelPosition); if (value!="") w.rimRadius=float.Parse(value,System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
		value=LoadValue("width","wheels-"+wheelPosition); if (value!="") w.width=float.Parse(value,System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
	}	
Exemplo n.º 59
0
    public void LoadTiresData(Wheel w, string tires)
    {
        tiresFound = true;
        if (tires == "competition_front")
        {
            System.Array.Copy(TireParameters.aCompetitionFront, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bCompetitionFront, w.b, w.b.Length);
            if (TireParameters.cCompetitionFront.Length != 0)
            {
                System.Array.Copy(TireParameters.cCompetitionFront, w.c, w.c.Length);
            }
        }
        else if (tires == "competition_rear")
        {
            System.Array.Copy(TireParameters.aCompetitionRear, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bCompetitionRear, w.b, w.b.Length);
            if (TireParameters.cCompetitionRear.Length != 0)
            {
                System.Array.Copy(TireParameters.cCompetitionRear, w.c, w.c.Length);
            }
        }
        else if (tires == "supersport_front")
        {
            System.Array.Copy(TireParameters.aSuperSportFront, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bSuperSportFront, w.b, w.b.Length);
            if (TireParameters.cSuperSportFront.Length != 0)
            {
                System.Array.Copy(TireParameters.cSuperSportFront, w.c, w.c.Length);
            }
        }
        else if (tires == "supersport_rear")
        {
            System.Array.Copy(TireParameters.aSuperSportRear, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bSuperSportRear, w.b, w.b.Length);
            if (TireParameters.cSuperSportRear.Length != 0)
            {
                System.Array.Copy(TireParameters.cSuperSportRear, w.c, w.c.Length);
            }
        }

        else if (tires == "sport_front")
        {
            System.Array.Copy(TireParameters.aSportFront, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bSportFront, w.b, w.b.Length);
            if (TireParameters.cSportFront.Length != 0)
            {
                System.Array.Copy(TireParameters.cSportFront, w.c, w.c.Length);
            }
        }
        else if (tires == "sport_rear")
        {
            System.Array.Copy(TireParameters.aSportRear, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bSportRear, w.b, w.b.Length);
            if (TireParameters.cSportRear.Length != 0)
            {
                System.Array.Copy(TireParameters.cSportRear, w.c, w.c.Length);
            }
        }
        else if (tires == "touring_front")
        {
            System.Array.Copy(TireParameters.aTouringFront, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bTouringFront, w.b, w.b.Length);
            if (TireParameters.cTouringFront.Length != 0)
            {
                System.Array.Copy(TireParameters.cTouringFront, w.c, w.c.Length);
            }
        }
        else if (tires == "touring_rear")
        {
            System.Array.Copy(TireParameters.aTouringRear, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bTouringRear, w.b, w.b.Length);
            if (TireParameters.cTouringRear.Length != 0)
            {
                System.Array.Copy(TireParameters.cTouringRear, w.c, w.c.Length);
            }
        }
        else if (tires == "offroad_front")              //OffRoad tires
        {
            System.Array.Copy(TireParameters.aOffRoadFront, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bOffRoadFront, w.b, w.b.Length);
            if (TireParameters.cOffRoadFront.Length != 0)
            {
                System.Array.Copy(TireParameters.cOffRoadFront, w.c, w.c.Length);
            }
        }
        else if (tires == "offroad_rear")               //OffRoad tires
        {
            System.Array.Copy(TireParameters.aOffRoadRear, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bOffRoadRear, w.b, w.b.Length);
            if (TireParameters.cOffRoadRear.Length != 0)
            {
                System.Array.Copy(TireParameters.cOffRoadRear, w.c, w.c.Length);
            }
        }
        else if (tires == "truck_front")        //Truck truck tires
        {
            System.Array.Copy(TireParameters.aTruckFront, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bTruckFront, w.b, w.b.Length);
            if (TireParameters.cTruckFront.Length != 0)
            {
                System.Array.Copy(TireParameters.cTruckFront, w.c, w.c.Length);
            }
        }
        else if (tires == "truck_rear")         //Truck truck tires
        {
            System.Array.Copy(TireParameters.aTruckRear, w.a, w.a.Length);
            System.Array.Copy(TireParameters.bTruckRear, w.b, w.b.Length);
            if (TireParameters.cTruckRear.Length != 0)
            {
                System.Array.Copy(TireParameters.cTruckRear, w.c, w.c.Length);
            }
        }
        else
        {
            tiresFound = false;
        }
        w.CalculateIdealSlipRatioIdealSlipAngle(20);
    }
Exemplo n.º 60
0
 private void Wheel_MouseUp(object sender, MouseButtonEventArgs e)
 {
     rotating = false;
     Wheel.ReleaseMouseCapture();
 }