mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-06 09:39:52 +00:00
74 lines
1.6 KiB
C#
74 lines
1.6 KiB
C#
using OWML.Common;
|
|
using QSB.Utility;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace QSB.SectorSync;
|
|
|
|
public class FakeSector : Sector
|
|
{
|
|
public static void Create<T>(GameObject go, Sector parent, Action<T> initShape)
|
|
where T : Shape
|
|
{
|
|
var name = $"FakeSector_{go.name}";
|
|
if (go.transform.Find(name))
|
|
{
|
|
DebugLog.DebugWrite($"{name} already exists", MessageType.Warning);
|
|
return;
|
|
}
|
|
|
|
var go2 = new GameObject(name);
|
|
go2.SetActive(false);
|
|
go2.transform.SetParent(go.transform, false);
|
|
|
|
var fakeSector = go2.AddComponent<FakeSector>();
|
|
fakeSector._name = (Name)(-1);
|
|
fakeSector._subsectors = new List<Sector>();
|
|
fakeSector.SetParentSector(parent);
|
|
|
|
go2.AddComponent<OWTriggerVolume>();
|
|
initShape(go2.AddComponent<T>());
|
|
go2.AddComponent<DebugRenderer>().FS = fakeSector;
|
|
|
|
go2.SetActive(true);
|
|
}
|
|
|
|
private class DebugRenderer : MonoBehaviour
|
|
{
|
|
[NonSerialized]
|
|
public FakeSector FS;
|
|
|
|
private void OnRenderObject()
|
|
{
|
|
if (!QSBCore.DebugSettings.DebugMode)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var shape = FS._owTriggerVolume._shape;
|
|
var center = shape.GetWorldSpaceCenter();
|
|
switch (shape)
|
|
{
|
|
case SphereShape sphereShape:
|
|
Popcron.Gizmos.Sphere(center, sphereShape.radius, Color.yellow);
|
|
break;
|
|
case BoxShape boxShape:
|
|
Popcron.Gizmos.Cube(center, boxShape.transform.rotation, boxShape.size, Color.yellow);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void OnGUI()
|
|
{
|
|
if (!QSBCore.DebugSettings.DebugMode ||
|
|
Event.current.type != EventType.Repaint)
|
|
{
|
|
return;
|
|
}
|
|
|
|
DebugGUI.DrawLabel(FS.transform, FS.name);
|
|
}
|
|
}
|
|
}
|