mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-04-15 11:42:23 +00:00
rework sectorsync
This commit is contained in:
parent
db593c2c57
commit
8c2973a8c2
@ -154,7 +154,7 @@ namespace QSB
|
||||
offset3 += _debugLineSpacing;
|
||||
foreach (var obj in PlayerTransformSync.LocalInstance?.SectorSync.SectorList)
|
||||
{
|
||||
GUI.Label(new Rect(420, offset3, 200f, 20f), $"- {obj.AttachedObject.name} : {Vector3.Distance(obj.Position, Locator.GetPlayerTransform().position)}");
|
||||
GUI.Label(new Rect(420, offset3, 400f, 20f), $"- {obj.AttachedObject.name} : {Vector3.Distance(obj.Position, Locator.GetPlayerTransform().position)}");
|
||||
offset3 += _debugLineSpacing;
|
||||
}
|
||||
|
||||
|
@ -69,13 +69,32 @@ namespace QSB.SectorSync
|
||||
var listToCheck = SectorList.Count == 0
|
||||
? QSBWorldSync.GetWorldObjects<QSBSector>()
|
||||
: SectorList;
|
||||
// TODO : maybe improve this by more carefully picking sectors that are in the same place? maybe by last entered or closest to edge?
|
||||
return listToCheck
|
||||
.Where(sector => sector.AttachedObject != null
|
||||
&& !_sectorBlacklist.Contains(sector.Type)
|
||||
&& sector.Transform.gameObject.activeInHierarchy)
|
||||
|
||||
var activeNotNullNotBlacklisted = listToCheck.Where(sector => sector.AttachedObject != null
|
||||
&& !_sectorBlacklist.Contains(sector.Type)
|
||||
&& sector.Transform.gameObject.activeInHierarchy);
|
||||
var ordered = activeNotNullNotBlacklisted
|
||||
.OrderBy(sector => Vector3.Distance(sector.Position, trans.position))
|
||||
.FirstOrDefault();
|
||||
.ThenBy(sector => GetRadius(sector));
|
||||
return ordered.FirstOrDefault();
|
||||
}
|
||||
|
||||
private float GetRadius(QSBSector sector)
|
||||
{
|
||||
if (sector == null)
|
||||
{
|
||||
return 0f;
|
||||
}
|
||||
// TODO : make this work for other stuff, not just shaped triggervolumes
|
||||
var trigger = sector.AttachedObject.GetTriggerVolume();
|
||||
if (trigger != null)
|
||||
{
|
||||
if (trigger.GetShape() != null)
|
||||
{
|
||||
return trigger.GetShape().CalcWorldBounds().radius;
|
||||
}
|
||||
}
|
||||
return 0f;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user