Less garbage, fewer GC hitches: no Joint array per part every 0.5 s, cheap aim check after clicks, cached FPS/ping/chat labels; perf report measures object sync, vehicle fx and part/bolt sync correctly
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
fe08fa5213
commit
d567d5992a
+11
-3
@@ -811,15 +811,23 @@ namespace MSCO
|
||||
return attached;
|
||||
}
|
||||
|
||||
static bool IsAttached(SyncedBody b)
|
||||
bool IsAttached(SyncedBody b)
|
||||
{
|
||||
if (b.IsVehicle || b.Rb == null) return false;
|
||||
// Unter einem anderen Rigidbody (z.B. am Auto eingehängt)
|
||||
for (Transform p = b.Rb.transform.parent; p != null; p = p.parent)
|
||||
if (p.GetComponent<Rigidbody>() != null) return true;
|
||||
// Per Gelenk mit etwas verbunden, das nicht der Spieler ist (die Hand hält Items nicht über Gelenke fest)
|
||||
// Per Gelenk mit etwas verbunden, das nicht der Spieler ist (die Hand hält Items nicht über Gelenke fest).
|
||||
// Läuft alle 0,5 s für jedes Teil: erst billig prüfen, ob es überhaupt ein Gelenk hat (GetComponents legt
|
||||
// jedes Mal ein neues Array an - die allermeisten Teile haben keins).
|
||||
if (b.Rb.GetComponent<Joint>() == null) return false;
|
||||
Transform playerRoot = Head != null ? Head.root : null;
|
||||
foreach (Joint j in b.Rb.GetComponents<Joint>())
|
||||
if (j != null && j.connectedBody != null && j.connectedBody.transform.root.name != "PLAYER") return true;
|
||||
{
|
||||
if (j == null || j.connectedBody == null) continue;
|
||||
Transform root = j.connectedBody.transform.root;
|
||||
if (playerRoot != null ? root != playerRoot : root.name != "PLAYER") return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user