Пример #1
0
    public CameraMaterials GetMaterials()
    {
        if (materials == null)
        {
            materials = new CameraMaterials();
        }

        return(materials);
    }
Пример #2
0
    public CameraSettings(int id = 0)
    {
        this.id = id;

        renderMode = RenderMode.Draw;

        cameraType = CameraType.MainCamera;

        renderShader = RenderShader.Multiply;

        renderLayerType = RenderLayerType.Default;

        customMaterial = null;

        customMaterialInstance = null;

        bufferID = 0;

        renderLayerId = 0;

        customCamera = null;

        materials = new CameraMaterials();
    }
    override public void OnInspectorGUI()
    {
        LightingManager2D script = target as LightingManager2D;

        LightingSettings.Profile newProfile = (LightingSettings.Profile)EditorGUILayout.ObjectField("Profile", script.setProfile, typeof(LightingSettings.Profile), true);
        if (newProfile != script.setProfile)
        {
            script.setProfile = newProfile;

            script.UpdateProfile();

            // LightingMainBuffer2D.Clear();
            // Light2D.ForceUpdateAll();
        }

        EditorGUILayout.Space();

        int count = script.cameraSettings.Length;

        count = EditorGUILayout.IntSlider("Camera Count", count, 0, 10);
        if (count != script.cameraSettings.Length)
        {
            System.Array.Resize(ref script.cameraSettings, count);
        }

        EditorGUILayout.Space();

        for (int id = 0; id < script.cameraSettings.Length; id++)
        {
            CameraSettings cameraSetting = script.cameraSettings[id];

            cameraFoldout[id] = EditorGUILayout.Foldout(cameraFoldout[id], "Camera " + (id + 1) + " (" + cameraSetting.GetTypeName() + ")");

            if (cameraFoldout[id] == false)
            {
                EditorGUILayout.Space();
                continue;
            }

            EditorGUI.indentLevel++;

            cameraSetting.cameraType = (CameraSettings.CameraType)EditorGUILayout.EnumPopup("Camera Type", cameraSetting.cameraType);

            if (cameraSetting.cameraType == CameraSettings.CameraType.Custom)
            {
                cameraSetting.customCamera = (Camera)EditorGUILayout.ObjectField(cameraSetting.customCamera, typeof(Camera), true);
            }

            cameraSetting.bufferID = EditorGUILayout.Popup("Buffer Preset", (int)cameraSetting.bufferID, Lighting2D.Profile.bufferPresets.GetBufferLayers());

            cameraSetting.renderMode = (CameraSettings.RenderMode)EditorGUILayout.EnumPopup("Render Mode", cameraSetting.renderMode);

            if (cameraSetting.renderMode == CameraSettings.RenderMode.Draw)
            {
                cameraSetting.renderShader = (CameraSettings.RenderShader)EditorGUILayout.EnumPopup("Render Shader", cameraSetting.renderShader);

                if (cameraSetting.renderShader == CameraSettings.RenderShader.Custom)
                {
                    cameraSetting.customMaterial = (Material)EditorGUILayout.ObjectField(cameraSetting.customMaterial, typeof(Material), true);
                }

                cameraSetting.renderLayerType = (CameraSettings.RenderLayerType)EditorGUILayout.EnumPopup("Render Layer Type", cameraSetting.renderLayerType);

                if (cameraSetting.renderLayerType == CameraSettings.RenderLayerType.Custom)
                {
                    cameraSetting.renderLayerId = EditorGUILayout.LayerField("Render Layer", cameraSetting.renderLayerId);
                }
            }

            cameraMaterialsFoldout[id] = EditorGUILayout.Foldout(cameraMaterialsFoldout[id], "Materials");

            if (cameraMaterialsFoldout[id])
            {
                EditorGUI.indentLevel++;

                CameraMaterials materials = cameraSetting.GetMaterials();


                int matCount = materials.materials.Length;
                matCount = EditorGUILayout.IntField("Count", matCount);
                if (matCount != materials.materials.Length)
                {
                    System.Array.Resize(ref materials.materials, matCount);
                }

                for (int i = 0; i < materials.materials.Length; i++)
                {
                    materials.materials[i] = (Material)EditorGUILayout.ObjectField(materials.materials[i], typeof(Material), true);
                }

                EditorGUI.indentLevel--;
            }



            cameraSetting.id = id;

            script.cameraSettings[id] = cameraSetting;

            EditorGUI.indentLevel--;

            EditorGUILayout.Space();
        }



        /*
         *
         *
         * cameraSetting.renderMode = (CameraSettings.RenderMode)EditorGUILayout.EnumPopup("Render Mode", cameraSetting.renderMode);
         *
         * if (cameraSetting.renderMode == CameraSettings.RenderMode.Draw) {
         *      cameraSetting.renderShader = (CameraSettings.RenderShader)EditorGUILayout.EnumPopup("Render Shader", cameraSetting.renderShader);
         *
         *      if (cameraSetting.renderShader == CameraSettings.RenderShader.Custom) {
         *      cameraSetting.customMaterial = (Material)EditorGUILayout.ObjectField(cameraSetting.customMaterial, typeof(Material), true);
         *      }
         * }*/



        EditorGUILayout.Space();

        EditorGUILayout.LabelField("version " + Lighting2D.VERSION_STRING);

        string buttonName = "";

        if (script.version < Lighting2D.VERSION)
        {
            buttonName         += "Re-Initialize (Outdated)";
            GUI.backgroundColor = Color.red;

            Reinitialize(script);

            return;
        }
        else
        {
            buttonName += "Re-Initialize";
        }

        if (GUILayout.Button(buttonName))
        {
            Reinitialize(script);
        }

        if (GUI.changed)
        {
            Light2D.ForceUpdateAll();

            LightingManager2D.ForceUpdate();

            if (EditorApplication.isPlaying == false)
            {
                EditorUtility.SetDirty(target);
                EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
            }
        }
    }
Пример #4
0
	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;
				}
			}
		}
	}