public void ShadowCaster2DSceneGUI() { LightReactor2D shadowCaster = target as LightReactor2D; Transform t = shadowCaster.transform; Vector3[] shape = shadowCaster.shapePath; Handles.color = Color.white; for (int i = 0; i < shape.Length - 1; ++i) { Handles.DrawAAPolyLine(4, new Vector3[] { t.TransformPoint(shape[i]), t.TransformPoint(shape[i + 1]) }); } if (shape.Length > 1) { Handles.DrawAAPolyLine(4, new Vector3[] { t.TransformPoint(shape[shape.Length - 1]), t.TransformPoint(shape[0]) }); } }
protected override void SetShape(ScriptablePath shapeEditor, SerializedObject serializedObject) { serializedObject.Update(); var pointsProperty = serializedObject.FindProperty(k_ShapePath); pointsProperty.arraySize = shapeEditor.pointCount; for (var i = 0; i < shapeEditor.pointCount; ++i) { pointsProperty.GetArrayElementAtIndex(i).vector3Value = shapeEditor.GetPoint(i).position; } // This is untracked right now... serializedObject.ApplyModifiedProperties(); LightReactor2D shadowCaster = target as LightReactor2D; if (shadowCaster != null) { int hash = LightUtility.GetShapePathHash(shadowCaster.shapePath); shadowCaster.shapePathHash = hash; } }