static public LightingMainBuffer2D Get(CameraSettings cameraSettings) { if (cameraSettings.GetCamera() == null) { return(null); } foreach (LightingMainBuffer2D mainBuffer in List) { if (mainBuffer.cameraSettings.GetCamera() == cameraSettings.GetCamera() && mainBuffer.cameraSettings.bufferID == cameraSettings.bufferID) { return(mainBuffer); } } if (Lighting2D.BufferPresets.Length <= cameraSettings.bufferID) { Debug.LogWarning("Lighting2D: Not enough buffer settings initialized"); return(null); } Buffers.Get(); LightingMainBuffer2D buffer = new LightingMainBuffer2D(); buffer.cameraSettings = cameraSettings; Rendering.LightingMainBuffer.InitializeRenderTexture(buffer); return(buffer); }
private void DrawGizmos() { if (isActiveAndEnabled == false) { return; } Gizmos.color = new Color(0, 1f, 1f); if (Lighting2D.ProjectSettings.editorView.drawGizmosBounds == EditorGizmosBounds.Rectangle) { for(int i = 0; i < cameraSettings.Length; i++) { CameraSettings cameraSetting = cameraSettings[i]; Camera camera = cameraSetting.GetCamera(); if (camera != null) { Rect cameraRect = CameraTransform.GetWorldRect(camera); GizmosHelper.DrawRect(transform.position, cameraRect); } } } for(int i = 0; i < Scriptable.LightSprite2D.List.Count; i++) { Scriptable.LightSprite2D light = Scriptable.LightSprite2D.List[i]; Rect rect = light.lightSpriteShape.GetWorldRect(); Gizmos.color = new Color(1f, 0.5f, 0.25f); GizmosHelper.DrawPolygon(light.lightSpriteShape.GetSpriteWorldPolygon(), transform.position); Gizmos.color = new Color(0, 1f, 1f); GizmosHelper.DrawRect(transform.position, rect); } }
public void UpdateMainBuffers() { for(int i = 0; i < cameraSettings.Length; i++) { CameraSettings cameraSetting = cameraSettings[i]; if (cameraSetting.renderMode == CameraSettings.RenderMode.Disabled) { continue; } LightingMainBuffer2D buffer = LightingMainBuffer2D.Get(cameraSetting); if (buffer != null) { buffer.cameraSettings.renderMode = cameraSetting.renderMode; buffer.cameraSettings.renderLayerId = cameraSetting.renderLayerId; if (buffer.cameraSettings.customMaterial != cameraSetting.customMaterial) { buffer.cameraSettings.customMaterial = cameraSetting.customMaterial; buffer.ClearMaterial(); } if (buffer.cameraSettings.renderShader != cameraSetting.renderShader) { buffer.cameraSettings.renderShader = cameraSetting.renderShader; buffer.ClearMaterial(); } foreach(Material material in cameraSetting.GetMaterials().materials) { if (material == null) { continue; } Camera camera = cameraSetting.GetCamera(); if (cameraSetting.cameraType == CameraSettings.CameraType.SceneView) { CameraMaterials.SetMaterial(2, material, camera, buffer.renderTexture); } else { CameraMaterials.SetMaterial(1, material, camera, buffer.renderTexture); } } } } for(int i = 0; i < LightingMainBuffer2D.List.Count; i++) { LightingMainBuffer2D buffer = LightingMainBuffer2D.List[i]; if (buffer != null) { buffer.Update(); } } if (LightingMainBuffer2D.List.Count > 0) { foreach(LightingMainBuffer2D buffer in LightingMainBuffer2D.List) { if (Lighting2D.disable) { buffer.updateNeeded = false; return; } CameraSettings cameraSettings = buffer.cameraSettings; bool render = cameraSettings.renderMode != CameraSettings.RenderMode.Disabled; if (render && cameraSettings.GetCamera() != null) { buffer.updateNeeded = true; } else { buffer.updateNeeded = false; } } } }