public static void DrawProjectorGizmos(this OTProjector projector) { Matrix4x4 mtx = default(Matrix4x4); if (projector.orthographic) { mtx = Matrix4x4.Ortho(-projector.orthographicSize * projector.aspect, projector.orthographicSize * projector.aspect, projector.orthographicSize, -projector.orthographicSize, -projector.near, -projector.far).inverse; } else { mtx = Matrix4x4.Perspective(projector.fieldOfView, projector.aspect, -projector.near, -projector.far).inverse; } mtx = projector.transform.localToWorldMatrix * mtx; Vector3 p1 = new Vector3(-1, -1, -1); Vector3 p2 = new Vector3(-1, 1, -1); Vector3 p3 = new Vector3(1, 1, -1); Vector3 p4 = new Vector3(1, -1, -1); Vector3 p5 = new Vector3(-1, -1, 1); Vector3 p6 = new Vector3(-1, 1, 1); Vector3 p7 = new Vector3(1, 1, 1); Vector3 p8 = new Vector3(1, -1, 1); p1 = mtx.MultiplyPoint(p1); p2 = mtx.MultiplyPoint(p2); p3 = mtx.MultiplyPoint(p3); p4 = mtx.MultiplyPoint(p4); p5 = mtx.MultiplyPoint(p5); p6 = mtx.MultiplyPoint(p6); p7 = mtx.MultiplyPoint(p7); p8 = mtx.MultiplyPoint(p8); Gizmos.color = new Color(0.8f, 0.8f, 0.8f, 0.6f); Gizmos.DrawLine(p1, p2); Gizmos.DrawLine(p2, p3); Gizmos.DrawLine(p3, p4); Gizmos.DrawLine(p4, p1); Gizmos.DrawLine(p5, p6); Gizmos.DrawLine(p6, p7); Gizmos.DrawLine(p7, p8); Gizmos.DrawLine(p8, p5); Gizmos.DrawLine(p1, p5); Gizmos.DrawLine(p2, p6); Gizmos.DrawLine(p3, p7); Gizmos.DrawLine(p4, p8); }
void OnEnable() { m_Target = (OTProjector)target; List <string> treeList = new List <string>(); treeList.Add("None"); DirectoryInfo resDir = new DirectoryInfo("Assets/Resources"); int i = 0; if (resDir.Exists) { FileInfo[] treeFiles = resDir.GetFiles("*.asset", SearchOption.AllDirectories); foreach (var file in treeFiles) { string filename = file.FullName; filename = filename.Replace('\\', '/'); filename = FileUtil.GetProjectRelativePath(filename); var obj = AssetDatabase.LoadAssetAtPath <OcTreeProjector.MeshOcTree>(filename); if (filename.EndsWith(".asset")) { filename = filename.Replace(".asset", ""); } if (filename.StartsWith("Assets/Resources/")) { filename = filename.Replace("Assets/Resources/", ""); } if (obj) { i++; treeList.Add(filename); if (m_Target.ocTreeName == filename) { m_Index = i; } } } } m_Trees = treeList.ToArray(); }