Example #1
0
        [HideInInspector][NonSerialized] public bool isActive             = false;                                                               // this allows us to detect if we're enabled/disabled


        public void ClearCache()
        {
            parentData.Reset();
            generatedMeshes = null;
            forceUpdate     = false;
            isActive        = false;
        }
        private static HelperSurfaceDescription GenerateHelperSurfaceDescription(GeneratedMeshes meshContainer, CSGModel model, ModelSettingsFlags modelSettings, GeneratedMeshDescription meshDescription, RenderSurfaceType renderSurfaceType)
        {
            HelperSurfaceDescription helperSurfaceDescription;

            var startGetMeshInstanceTime = EditorApplication.timeSinceStartup;

            {
                helperSurfaceDescription = MeshInstanceManager.GetHelperSurfaceDescription(meshContainer, modelSettings, meshDescription, renderSurfaceType);
            }
            getMeshInstanceTime += EditorApplication.timeSinceStartup - startGetMeshInstanceTime;
            if (meshDescription == helperSurfaceDescription.MeshDescription &&
                helperSurfaceDescription.SharedMesh &&
                helperSurfaceDescription.IsValid())
            {
                return(helperSurfaceDescription);
            }

            helperSurfaceDescription.MeshDescription = meshDescription;
            if (!UpdateMesh(model,
                            helperSurfaceDescription.MeshDescription,
                            helperSurfaceDescription.RenderSurfaceType,
                            ref helperSurfaceDescription.HasGeneratedNormals,
                            ref helperSurfaceDescription.SharedMesh))
            {
                return(null);
            }

            return(helperSurfaceDescription);
        }
        private static GeneratedMeshInstance GenerateMeshInstance(GeneratedMeshes meshContainer, CSGModel model, ModelSettingsFlags modelSettings, GeneratedMeshDescription meshDescription, RenderSurfaceType renderSurfaceType, List <GameObject> unusedInstances)
        {
            GeneratedMeshInstance meshInstance = MeshInstanceManager.CreateMeshInstance(meshContainer, meshDescription, modelSettings, renderSurfaceType, unusedInstances);

            string baseName;

            switch (renderSurfaceType)
            {
            case RenderSurfaceType.Collider:    baseName = "Collider"; break;

            case RenderSurfaceType.Normal:      baseName = "Renderable"; break;

            default:                            baseName = "Unknown"; break;
            }

            meshInstance.MeshDescription = meshDescription;
            if (!UpdateMesh(model, baseName,
                            meshInstance.MeshDescription,
                            meshInstance.RenderSurfaceType,
                            ref meshInstance.HasGeneratedNormals,
                            ref meshInstance.SharedMesh))
            {
                return(null);
            }

            return(meshInstance);
        }
        private static GeneratedMeshInstance GenerateMeshInstance(GeneratedMeshes meshContainer, CSGModel model, ModelSettingsFlags modelSettings, GeneratedMeshDescription meshDescription, RenderSurfaceType renderSurfaceType)
        {
            GeneratedMeshInstance meshInstance;

            var startGetMeshInstanceTime = EditorApplication.timeSinceStartup;

            {
                meshInstance = MeshInstanceManager.GetMeshInstance(meshContainer, meshDescription, modelSettings, renderSurfaceType);
                if (!meshInstance)
                {
                    return(null);
                }
            }

            getMeshInstanceTime += EditorApplication.timeSinceStartup - startGetMeshInstanceTime;
            if (meshDescription == meshInstance.MeshDescription &&
                meshInstance.SharedMesh &&
                meshInstance.IsValid())
            {
                return(meshInstance);
            }

            meshInstance.MeshDescription = meshDescription;
            if (!UpdateMesh(model,
                            meshInstance.MeshDescription,
                            meshInstance.RenderSurfaceType,
                            ref meshInstance.HasGeneratedNormals,
                            ref meshInstance.SharedMesh))
            {
                return(null);
            }

            return(meshInstance);
        }
        public void OnAfterDeserialize()
        {
            //remain for backup
            if (generatedMeshesKeys != null && generatedMeshesValues != null)
            {
                GeneratedMeshes.Clear();
                for (int i = 0; i < generatedMeshesKeys.Count; ++i)
                {
                    string k = generatedMeshesKeys[i];
                    Mesh   m = generatedMeshesValues[i];
                    if (!string.IsNullOrEmpty(k) && m != null)
                    {
                        GeneratedMeshes[k] = m;
                    }
                }
            }

            if (meshesKeys != null && meshesValues != null)
            {
                Meshes.Clear();
                for (int i = 0; i < meshesKeys.Count; ++i)
                {
                    Vector3Int k = meshesKeys[i];
                    Mesh       m = meshesValues[i];
                    Meshes[k] = m;
                }
            }
        }
        private static HelperSurfaceDescription GenerateHelperSurfaceDescription(GeneratedMeshes meshContainer, CSGModel model, ModelSettingsFlags modelSettings, GeneratedMeshDescription meshDescription, RenderSurfaceType renderSurfaceType)
        {
            HelperSurfaceDescription helperSurfaceDescription = MeshInstanceManager.CreateHelperSurfaceDescription(meshContainer, modelSettings, meshDescription, renderSurfaceType);

            helperSurfaceDescription.MeshDescription = meshDescription;
            if (!UpdateMesh(model, renderSurfaceMeshNames[(int)renderSurfaceType],
                            helperSurfaceDescription.MeshDescription,
                            helperSurfaceDescription.RenderSurfaceType,
                            ref helperSurfaceDescription.HasGeneratedNormals,
                            ref helperSurfaceDescription.SharedMesh,
                            editorOnly: true))
            {
                return(null);
            }
            return(helperSurfaceDescription);
        }
        private static bool TryGetHelperSurfaceDescription(GeneratedMeshes meshContainer, CSGModel model, ModelSettingsFlags modelSettings, GeneratedMeshDescription meshDescription, RenderSurfaceType renderSurfaceType, out HelperSurfaceDescription helperSurfaceDescription)
        {
            var startGetMeshInstanceTime = EditorApplication.timeSinceStartup;

            helperSurfaceDescription = MeshInstanceManager.GetHelperSurfaceDescription(meshContainer, modelSettings, meshDescription, renderSurfaceType);
            getMeshInstanceTime     += EditorApplication.timeSinceStartup - startGetMeshInstanceTime;
            if (helperSurfaceDescription != null &&
                meshDescription == helperSurfaceDescription.MeshDescription &&
                helperSurfaceDescription.SharedMesh &&
                helperSurfaceDescription.IsValid())
            {
                return(true);
            }
            helperSurfaceDescription = null;
            return(true);
        }
        private static bool TryGetMeshInstance(GeneratedMeshes meshContainer, CSGModel model, ModelSettingsFlags modelSettings, GeneratedMeshDescription meshDescription, RenderSurfaceType renderSurfaceType, out GeneratedMeshInstance meshInstance)
        {
            var startGetMeshInstanceTime = EditorApplication.timeSinceStartup;

            meshInstance         = MeshInstanceManager.GetMeshInstance(meshContainer, meshDescription, modelSettings, renderSurfaceType);
            getMeshInstanceTime += EditorApplication.timeSinceStartup - startGetMeshInstanceTime;
            if (meshInstance &&
                meshDescription == meshInstance.MeshDescription &&
                meshInstance.SharedMesh &&
                meshInstance.IsValid())
            {
                return(true);
            }

            meshInstance = null;
            return(true);
        }
Example #9
0
        protected override IEnumerator CreateMapMeshes(MeshGenerator meshGenerator)
        {
            GameObject sector = CreateSector(meshGenerator.index);

            yield return(null);

            Mesh ceilingMesh = CreateCeiling(meshGenerator, sector, ceilingMaterial);

            yield return(null);

            Mesh wallMesh = CreateWall(meshGenerator, sector, wallMaterial);

            yield return(null);

            Mesh floorMesh = CreateFloor(meshGenerator, sector, floorMaterial);

            GeneratedMeshes.Add(new MapMeshes(ceilingMesh, wallMesh, floorMesh));
        }
 public void Reset()
 {
     ParentData.Reset();
     GeneratedMeshes = null;
 }