2026-05-07 10:14:44 +02:00

87 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using Wing.Utils;
namespace Wing.Gizmos
{
public class GizmosManager : MonoSingleton<GizmosManager>
{
private GizmosMove _gizmosMove;
private GizmosScale _gizmosScale;
private GizmosRotate _gizmosRotate;
void Start()
{
var glayer = 1 << LayerMask.NameToLayer(Settings.GizmosLayerName);
var nlayer = 1 << LayerMask.NameToLayer(Settings.NavLayerName);
var mask = Camera.main.cullingMask;
Camera.main.cullingMask = ((glayer | mask) & ~nlayer);
}
public static bool IsOnGizmos()
{
int layer = LayerMask.NameToLayer(Settings.GizmosLayerName);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 1000, 1 << layer))
{
return hit.collider.gameObject != null;
}
return false;
}
public GizmosRotate GetSingleRotate()
{
if(_gizmosRotate == null)
{
_gizmosRotate = CreateRotate();
}
return _gizmosRotate;
}
public GizmosRotate CreateRotate()
{
GameObject go = new GameObject("gizmos-rotate");
go.transform.SetParent(this.transform);
return go.AddComponent<GizmosRotate>();
}
public GizmosMove GetSingleMove()
{
if(_gizmosMove == null)
{
_gizmosMove = CreateMove();
}
return _gizmosMove;
}
public GizmosMove CreateMove()
{
GameObject Prefab = Resources.Load("Prefabs/GizmosMove") as GameObject;
GameObject obj = Instantiate(Prefab);
return obj.GetComponent<GizmosMove>();
}
public GizmosScale GetSingleScale()
{
if(_gizmosScale == null)
{
_gizmosScale = CreateScale();
}
return _gizmosScale;
}
public GizmosScale CreateScale()
{
GameObject Prefab = Resources.Load("Prefabs/GizmosScale") as GameObject;
GameObject obj = Instantiate(Prefab);
return obj.GetComponent<GizmosScale>();
}
}
}