mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-04-16 14:42:35 +00:00
rework sectorsync
This commit is contained in:
parent
db593c2c57
commit
8c2973a8c2
@ -154,7 +154,7 @@ namespace QSB
|
|||||||
offset3 += _debugLineSpacing;
|
offset3 += _debugLineSpacing;
|
||||||
foreach (var obj in PlayerTransformSync.LocalInstance?.SectorSync.SectorList)
|
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;
|
offset3 += _debugLineSpacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,13 +69,32 @@ namespace QSB.SectorSync
|
|||||||
var listToCheck = SectorList.Count == 0
|
var listToCheck = SectorList.Count == 0
|
||||||
? QSBWorldSync.GetWorldObjects<QSBSector>()
|
? QSBWorldSync.GetWorldObjects<QSBSector>()
|
||||||
: SectorList;
|
: 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
|
var activeNotNullNotBlacklisted = listToCheck.Where(sector => sector.AttachedObject != null
|
||||||
.Where(sector => sector.AttachedObject != null
|
|
||||||
&& !_sectorBlacklist.Contains(sector.Type)
|
&& !_sectorBlacklist.Contains(sector.Type)
|
||||||
&& sector.Transform.gameObject.activeInHierarchy)
|
&& sector.Transform.gameObject.activeInHierarchy);
|
||||||
|
var ordered = activeNotNullNotBlacklisted
|
||||||
.OrderBy(sector => Vector3.Distance(sector.Position, trans.position))
|
.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