Sync car doors, hood and trunk angles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+13
-3
@@ -63,6 +63,7 @@ namespace MSCO
|
||||
readonly DamageSync damageSync = new DamageSync();
|
||||
readonly WorldVarSync worldVars = new WorldVarSync();
|
||||
readonly TrafficSync traffic = new TrafficSync();
|
||||
readonly HingeSync hinges = new HingeSync();
|
||||
readonly Overlays overlays = new Overlays();
|
||||
bool isAdmin; // Server hat uns als Admin gemeldet
|
||||
readonly HashSet<string> bannedNames = new HashSet<string>(); // P2P-Host: für diese Sitzung gebannt
|
||||
@@ -207,6 +208,7 @@ namespace MSCO
|
||||
lines.Add("tracked doors/gates/hoods: " + doorSync.Count);
|
||||
lines.Add("synced vehicle values (fuel, oil, bolts, wear ...): " + vehicleState.Count);
|
||||
lines.Add("synced body meshes (crash damage): " + damageSync.Count);
|
||||
lines.Add("synced car doors/hoods/trunks: " + hinges.Count);
|
||||
lines.Add("synced job/shop values: " + worldVars.Count);
|
||||
lines.Add("synced traffic cars: " + traffic.Count + (IsWorldAuthority ? " (simulated here)" : " (following)"));
|
||||
return lines;
|
||||
@@ -973,7 +975,7 @@ namespace MSCO
|
||||
worldSync.Reset();
|
||||
moneySync.Reset();
|
||||
doorSync.Reset();
|
||||
vehicleState.Reset(); damageSync.Reset(); worldVars.Reset(); traffic.Reset();
|
||||
vehicleState.Reset(); damageSync.Reset(); worldVars.Reset(); traffic.Reset(); hinges.Reset();
|
||||
isAdmin = false;
|
||||
if (overlays.AdminOpen || overlays.ChatOpen) overlays.CloseAll();
|
||||
FsmSync.Enabled = false;
|
||||
@@ -1002,7 +1004,7 @@ namespace MSCO
|
||||
|| t == MsgType.ObjRelease || t == MsgType.FsmEvent || t == MsgType.VehicleFx || t == MsgType.WorldTime || t == MsgType.MoneyDelta || t == MsgType.DoorState
|
||||
|| t == MsgType.Chat || t == MsgType.VarSync || t == MsgType.SpawnItem
|
||||
|| t == MsgType.ItemAppeared || t == MsgType.ObjDestroy || t == MsgType.VehicleDamage
|
||||
|| t == MsgType.TrafficStates || t == MsgType.WorldVars;
|
||||
|| t == MsgType.TrafficStates || t == MsgType.WorldVars || t == MsgType.HingeStates;
|
||||
}
|
||||
|
||||
void OnMessage(int peerId, Message m)
|
||||
@@ -1296,6 +1298,9 @@ namespace MSCO
|
||||
case MsgType.WorldVars:
|
||||
worldVars.Handle(r);
|
||||
break;
|
||||
case MsgType.HingeStates:
|
||||
hinges.Handle(r);
|
||||
break;
|
||||
case MsgType.TrafficStates:
|
||||
traffic.Handle(r, IsWorldAuthority);
|
||||
break;
|
||||
@@ -1416,7 +1421,7 @@ namespace MSCO
|
||||
passenger.Reset();
|
||||
localPlayer = null;
|
||||
objects.OnGameLoaded();
|
||||
vehicleState.Reset(); damageSync.Reset(); worldVars.Reset(); traffic.Reset();
|
||||
vehicleState.Reset(); damageSync.Reset(); worldVars.Reset(); traffic.Reset(); hinges.Reset();
|
||||
vehicleFx.Reset(); wheelSpin.Reset();
|
||||
worldSync.Reset();
|
||||
moneySync.Reset();
|
||||
@@ -1540,6 +1545,9 @@ namespace MSCO
|
||||
// Unfallschäden (verbeulte Karosserie)
|
||||
try { if (objects.ScanComplete) damageSync.Update(objects, localId, SendGame); }
|
||||
catch (System.Exception e) { ReportError("crash damage sync", e); }
|
||||
// Türen, Motorhaube, Kofferraum der Fahrzeuge
|
||||
try { if (objects.ScanComplete && localPlayer != null) hinges.Update(objects, localId, localPlayer.position, Time.deltaTime, SendGame); }
|
||||
catch (System.Exception e) { ReportError("car door sync", e); }
|
||||
// Jobs, Aufträge, Laden
|
||||
try { if (objects.ScanComplete) worldVars.Update(SendGame); }
|
||||
catch (System.Exception e) { ReportError("jobs/shop sync", e); }
|
||||
@@ -1594,6 +1602,8 @@ namespace MSCO
|
||||
catch (System.Exception e) { ReportError("object movement", e); }
|
||||
try { traffic.FixedUpdate(); }
|
||||
catch (System.Exception e) { ReportError("traffic movement", e); }
|
||||
try { hinges.FixedUpdate(); }
|
||||
catch (System.Exception e) { ReportError("car door movement", e); }
|
||||
}
|
||||
|
||||
void LateUpdate()
|
||||
|
||||
Reference in New Issue
Block a user