@@ -72,6 +72,8 @@ public void UpdateState(Transform rootTransform)
7272 _drawList . Add ( new KeyValuePair < Action < Component > , Component > ( DrawTransformGizmo , component ) ) ;
7373 else if ( component is Collider )
7474 _drawList . Add ( new KeyValuePair < Action < Component > , Component > ( DrawColliderGizmo , component ) ) ;
75+ else if ( component is Projector )
76+ _drawList . Add ( new KeyValuePair < Action < Component > , Component > ( DrawProjectorGizmo , component ) ) ;
7577 else if ( _dbcType != null && component . GetType ( ) == _dbcType )
7678 _drawList . Add ( new KeyValuePair < Action < Component > , Component > ( DrawDynamicBoneColliderGizmo , component ) ) ;
7779
@@ -190,6 +192,57 @@ private static void DrawDynamicBoneColliderGizmo(Component obj)
190192 DrawWireCapsule ( transform . TransformPoint ( center ) , transform . TransformPoint ( center2 ) , radius , color ) ;
191193 }
192194
195+ private static void DrawProjectorGizmo ( Component obj )
196+ {
197+ if ( obj != null && obj is Projector projector )
198+ {
199+ float startRange , endRange ;
200+ if ( projector . orthographic )
201+ {
202+ startRange = projector . orthographicSize ;
203+ endRange = projector . orthographicSize ;
204+ }
205+ else
206+ {
207+ startRange = projector . nearClipPlane * Mathf . Tan ( Mathf . PI / 180f * projector . fieldOfView / 2f ) ;
208+ endRange = projector . farClipPlane * Mathf . Tan ( Mathf . PI / 180f * projector . fieldOfView / 2f ) ;
209+ }
210+
211+ Vector3 forward = projector . transform . rotation * Vector3 . forward ;
212+ Vector3 up = projector . transform . rotation * Vector3 . up ;
213+ Vector3 right = projector . transform . rotation * Vector3 . right ;
214+
215+ Vector3 startTopRight , startBottomRight , startTopLeft , startBottomLeft , endTopRight , endBottomRight , endTopLeft , endBottomLeft ;
216+ startTopRight = projector . transform . position + forward * projector . nearClipPlane + ( up + right * projector . aspectRatio ) * startRange ;
217+ startBottomRight = projector . transform . position + forward * projector . nearClipPlane + ( - up + right * projector . aspectRatio ) * startRange ;
218+ startTopLeft = projector . transform . position + forward * projector . nearClipPlane + ( up - right * projector . aspectRatio ) * startRange ;
219+ startBottomLeft = projector . transform . position + forward * projector . nearClipPlane + ( - up - right * projector . aspectRatio ) * startRange ;
220+
221+ endTopRight = projector . transform . position + forward * projector . farClipPlane + ( up + right * projector . aspectRatio ) * endRange ;
222+ endBottomRight = projector . transform . position + forward * projector . farClipPlane + ( - up + right * projector . aspectRatio ) * endRange ;
223+ endTopLeft = projector . transform . position + forward * projector . farClipPlane + ( up - right * projector . aspectRatio ) * endRange ;
224+ endBottomLeft = projector . transform . position + forward * projector . farClipPlane + ( - up - right * projector . aspectRatio ) * endRange ;
225+
226+ //Draw near clip plane
227+ lib . Gizmos . Line ( startTopRight , startBottomRight , Color . red ) ;
228+ lib . Gizmos . Line ( startBottomRight , startBottomLeft , Color . red ) ;
229+ lib . Gizmos . Line ( startBottomLeft , startTopLeft , Color . red ) ;
230+ lib . Gizmos . Line ( startTopLeft , startTopRight , Color . red ) ;
231+
232+ //Draw far clip plane
233+ lib . Gizmos . Line ( endTopRight , endBottomRight , Color . red ) ;
234+ lib . Gizmos . Line ( endBottomRight , endBottomLeft , Color . red ) ;
235+ lib . Gizmos . Line ( endBottomLeft , endTopLeft , Color . red ) ;
236+ lib . Gizmos . Line ( endTopLeft , endTopRight , Color . red ) ;
237+
238+ //Draw connection between near and far clip planes
239+ lib . Gizmos . Line ( startTopRight , endTopRight , Color . red ) ;
240+ lib . Gizmos . Line ( startBottomRight , endBottomRight , Color . red ) ;
241+ lib . Gizmos . Line ( startTopLeft , endTopLeft , Color . red ) ;
242+ lib . Gizmos . Line ( startBottomLeft , endBottomLeft , Color . red ) ;
243+ }
244+ }
245+
193246 // Based on code by Qriva
194247 private static void DrawWireCapsule ( Vector3 p1 , Vector3 p2 , float radius , Color color )
195248 {
0 commit comments