コード例 #1
0
        // Detect if people have rebaked their lighting and clear the data if they have.
        public void OnBeforeSerialize()
        {
            Renderer[] renderers = GetComponentsInChildren <Renderer>(true);

            if (renderers.Length != rendererLightmapData.Length)
            {
                isSaved = false;
                EditorSceneManager.MarkSceneDirty(gameObject.scene);
                return;
            }

            for (int i = 0; i < renderers.Length; ++i)
            {
                Renderer             currentRenderer = renderers[i];
                RendererLightmapData currentData     = rendererLightmapData[i];

                if (currentRenderer != currentData.renderer)
                {
                    isSaved = false;
                    EditorSceneManager.MarkSceneDirty(gameObject.scene);
                    return;
                }

                if (currentRenderer.lightmapIndex != currentData.lightmapIndex ||
                    currentRenderer.lightmapScaleOffset != currentData.lightmapScaleOffset
                    //currentRenderer.realtimeLightmapIndex != currentData.realtimeLightmapIndex ||
                    //currentRenderer.realtimeLightmapScaleOffset != currentRenderer.realtimeLightmapScaleOffset
                    )
                {
                    isSaved = false;
                    EditorSceneManager.MarkSceneDirty(gameObject.scene);
                    return;
                }
            }
        }
コード例 #2
0
        public void BuildLightmapStorage()
        {
            LightmapData[] lightmaps = LightmapSettings.lightmaps;

            LightmapStorageData[] storedLightmaps = new LightmapStorageData[lightmaps.Length];

            for (int i = 0; i < lightmaps.Length; ++i)
            {
                LightmapData currentLightmap = lightmaps[i];
                storedLightmaps[i] = new LightmapStorageData()
                {
                    lightmap = currentLightmap.lightmapColor, lightmapDir = currentLightmap.lightmapDir, shadowmask = currentLightmap.shadowMask
                };
            }

            this.lightmaps = storedLightmaps;

            Renderer[] renderers = GetComponentsInChildren <Renderer>(true);

            RendererLightmapData[] rendererData = new RendererLightmapData[renderers.Length];

            for (int i = 0; i < renderers.Length; ++i)
            {
                rendererData[i] = new RendererLightmapData()
                {
                    renderer            = renderers[i],
                    lightmapIndex       = renderers[i].lightmapIndex,
                    lightmapScaleOffset = renderers[i].lightmapScaleOffset,
                    //realtimeLightmapIndex = renderers[i].realtimeLightmapIndex,
                    //realtimeLightmapScaleOffset = renderers[i].realtimeLightmapScaleOffset
                };
            }

            this.rendererLightmapData = rendererData;

            isSaved = true;
        }