Example #1
0
        public override void OnInspectorGUI()
        {
            ProjectionReceiverRenderer receiver = target as ProjectionReceiverRenderer;

            DrawDefaultInspector();
            Object projector = receiver.customProjector;

            if (projector == null)
            {
                projector = receiver.unityProjector;
            }
            Component newProjector = EditorGUILayout.ObjectField(s_projectorContent, projector, typeof(Component), true) as Component;

            if (newProjector != projector)
            {
                if (newProjector == null)
                {
                    Undo.RecordObject(receiver, "Inspector");
                    receiver.unityProjector  = null;
                    receiver.customProjector = null;
                }
                else
                {
                    Projector unityProjector = newProjector.GetComponent <Projector>();
                    if (unityProjector != null)
                    {
                        Undo.RecordObject(receiver, "Inspector");
                        receiver.unityProjector = unityProjector;
                    }
                    else
                    {
                        ProjectorBase projectorBase = newProjector.GetComponent <ProjectorBase>();
                        if (projectorBase != null)
                        {
                            Undo.RegisterCompleteObjectUndo(receiver, "Inspector");
                            receiver.customProjector = projectorBase;
                        }
                    }
                }
            }
            if (GUILayout.Button(s_buttonContent))
            {
                Renderer renderer = receiver.GetComponent <Renderer>();
                if (renderer != null && renderer.sharedMaterial != null)
                {
                    renderer.sharedMaterial.shaderKeywords = null;
                }
            }
        }
Example #2
0
        private static void ExecuteRunner(ProjectorBase projector)
        {
            // each projector runner has own config about fetching limits / timeouts, etc
            using (var runner = new ProjectorRunner())
            {
                runner.Add(projector);

                runner.Start();

                Console.WriteLine("\r\nPress any key to stop runner...");
                Console.ReadKey();

                runner.Stop();
            }
        }
Example #3
0
 private static async Task ExecuteOnce(ProjectorBase projector)
 {
     await projector.Run(); // Run once and exit when done
 }
Example #4
0
        public override void OnInspectorGUI()
        {
            ReceiverBase receiver = target as ReceiverBase;

            DrawDefaultInspector();
            Object projector = receiver.customProjector;

            if (projector == null)
            {
                projector = receiver.unityProjector;
            }
            Component newProjector = EditorGUILayout.ObjectField("Projector", projector, typeof(Component), true) as Component;

            if (newProjector != projector)
            {
                if (newProjector == null)
                {
                    Undo.RecordObject(receiver, "Inspector");
                    receiver.unityProjector  = null;
                    receiver.customProjector = null;
                }
                else
                {
                    Projector unityProjector = newProjector.GetComponent <Projector>();
                    Renderer  renderer       = receiver.GetComponent <Renderer>();
                    Material  material       = renderer.sharedMaterial;
                    if (unityProjector != null)
                    {
                        Undo.RecordObject(receiver, "Inspector");
                        receiver.unityProjector = unityProjector;
                        if (material == null || material == editorSettings.m_defaultShadowmapReceiverMaterial)
                        {
                            Undo.RecordObject(renderer, "Inspector");
                            renderer.sharedMaterial = editorSettings.m_defaultReceiverMaterial;
#if (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7) // support Unity 4.3 or later
                            renderer.castShadows = false;
#else
                            renderer.shadowCastingMode    = UnityEngine.Rendering.ShadowCastingMode.Off;
                            renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
#endif
                            renderer.useLightProbes = false;
                            renderer.receiveShadows = false;
                        }
                    }
                    else
                    {
                        ProjectorBase projectorBase = newProjector.GetComponent <ProjectorBase>();
                        if (projectorBase != null)
                        {
                            Undo.RegisterCompleteObjectUndo(receiver, "Inspector");
                            receiver.customProjector = projectorBase;
                            if (material == null || material == editorSettings.m_defaultReceiverMaterial)
                            {
                                Undo.RecordObject(renderer, "Inspector");
                                renderer.sharedMaterial = editorSettings.m_defaultShadowmapReceiverMaterial;
#if (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7) // support Unity 4.3 or later
                                renderer.castShadows = false;
#else
                                renderer.shadowCastingMode    = UnityEngine.Rendering.ShadowCastingMode.Off;
                                renderer.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off;
#endif
                                renderer.useLightProbes = false;
                                renderer.receiveShadows = true;
                            }
                        }
                    }
                }
            }
            // check errors
            string errorMessage = null;
            if (projector == null)
            {
                // check if the object is prefab or not.
                PrefabType type = PrefabUtility.GetPrefabType(receiver.gameObject);
                if (type != PrefabType.Prefab && type != PrefabType.ModelPrefab)
                {
                    // check if there is ProjectorManager and the receiver is add to it.
                    ProjectorManager proman = Object.FindObjectOfType <ProjectorManager>();
                    if (proman != null)
                    {
                        if (!proman.receivers.Contains(receiver))
                        {
                            errorMessage = "<color=red>Projector has not been set! There is a ProjectorManager in the scene. Do you forget to add this shadow receiver into the ProjectorManager?</color>";
                        }
                    }
                    else
                    {
                        errorMessage = "<color=red>Projector has not been set! Shadow receiver will not work until a Projector is assigned.</color>";
                    }
                }
            }
            else if (projector is Projector)
            {
                if ((((Projector)projector).ignoreLayers & (1 << receiver.gameObject.layer)) != 0)
                {
                    errorMessage = "<color=red>This shadow receiver is being ignored by the Projector. Cannot receive the shadow from the Projector. Please check the layer of this object and Ignore Layers of the Projector.</color>";
                }
            }
            if (!string.IsNullOrEmpty(errorMessage))
            {
                GUILayout.TextArea(errorMessage, errorStyle);
            }
        }