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(); } } }
public void NameTest() { var wheelName = "This is a test name"; var wheel = new Wheel(wheelName); Assert.Equal(wheel.Name, wheelName); }
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); }
private static Wheel<int> Setup() { var wheel = new Wheel<int>(); wheel.Push(1); wheel.Push(2); wheel.Push(3); return wheel; }
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)); }
void Start() { menuController = MenuController.instance; wheel = transform.parent.GetComponent<Wheel>(); _zDefault = transform.position.z; _zOffset = transform.position.z - 1; _btnTag = gameObject.tag; }
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)); }
// 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; } }
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; }
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("成功"); }
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; } }
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); } }
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; } }
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); }
public WheelFrictionChanger(Wheel w) { Collider = w.whCollider; forwardFriction = Collider.forwardFriction; sidewaysFriction = Collider.sidewaysFriction; }
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>(); }
private void AdjustTurnAngles(Wheel wheel) { wheel.collider.steerAngle = _turnAmount * _driveSettings.maxTurnAngle * (wheel.info.isFrontWheel ? 1 : -1); }
private float BrakeBias(Wheel wheel) { return wheel.IsFront ? 1f - HandlingData.BrakeBias : wheel.IsRear ? HandlingData.BrakeBias : .5f; }
void UpdateWheelFromCollider(Wheel wheel) { wheel.wheelCollider.GetWorldPose(out Vector3 position, out Quaternion rotation); wheel.wheelTransform.position = position; wheel.wheelTransform.rotation = rotation; }
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; }
private void Wheel_MouseDown(object sender, MouseButtonEventArgs e) { rotating = true; rotationStart = e.GetPosition(Wheel); Wheel.CaptureMouse(); }
// 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"); }
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)); } } } }
public bool EngineShouldDetermineIfCoordinatesAreWithinWheelBounds(int widthIndex, int heightIndex) { var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight); return(wheel.IsInBounds(widthIndex, heightIndex)); }
/// <summary> /// Check if a wheel is touching the ground /// </summary> public bool IsWheelOnGround(Wheel wheel) { return(MtaClient.IsVehicleWheelOnGround(element, (int)wheel)); }
void Awake() { wheel = GetComponent <Wheel>(); rb = GetComponent <Rigidbody2D>(); }
public void TestInitialize() { wheel = new Wheel(); binBuilder = new BinBuilder(); }
private bool ShouldSteer(Wheel wheel) { // TODO: look at flags return(wheel.IsFront); }
public string Repair(Wheel value) { value.RepairWhell(); return("wheel repaired"); }
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"); }
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}"); }
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; } } }
private void Start() { _wheel = new Wheel(_numberOfSectors, _probability, _circle); _wheel.Init(); _wheel.InitButton(_twistButton); }
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); * } * } * }*/ }
private float BrakeBias(Wheel wheel) { return(wheel.IsFront ? 1f - HandlingData.BrakeBias : wheel.IsRear ? HandlingData.BrakeBias : .5f); }
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); }
//[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; }
public WheelFrictionChanger(Wheel w) { wheel = w; forwardStiffness = w.whCollider.forwardFriction.stiffness; sidewaysStiffness = w.whCollider.sidewaysFriction.stiffness; }
private void ApplyBrakeTorque(Wheel wheel, float direction) { wheel.collider.brakeTorque = direction * maxAcceleration * 1000000 * Time.deltaTime; }
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}"); }
// This is a (subtle) example of Dependency Injection. public Gear(int chainring, int cog, Wheel wheel) { Chainring = chainring; Cog = cog; Wheel = wheel; }
/// <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 }
/// <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 ); } }
public AntiRoll(Wheel left, Wheel right) { this.wheelL = left; this.wheelR = right; }
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); }
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); }
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; }
public void Visit(Wheel wheel) { Console.WriteLine("Visiting {0} wheel", wheel.Name); }
public void GiveWheel(Wheel myWheel) { Sim.DLL_GiveWheelToCar(this.nativeCarObject, myWheel.nativeWheelObject); }
public WheelFrictionChanger(Wheel w) { wheel = w; forwardStiffness = w.whCollider.forwardFriction.stiffness; sidewaysStiffness = w.whCollider.sidewaysFriction.stiffness; }
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); }
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); }
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); }
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); }
private void Wheel_MouseUp(object sender, MouseButtonEventArgs e) { rotating = false; Wheel.ReleaseMouseCapture(); }