bool IncludeMeshRenderer(Renderer renderer, GDOC_ManagementMode mode, GDOC_UpdateMode movementMode, GDOC_Occludee parentOccludee = null) { var meshFilter = renderer.GetComponent <MeshFilter>(); if (meshFilter == null) { return(false); } if (meshFilter.sharedMesh == null) { return(false); } var e = renderer.gameObject.AddComponent <GDOC_Occludee>(); e.mode = GDOC_OccludeeMode.MeshRenderer; e.movementMode = movementMode; e.isTemporary = true; e.shadowCastingMode = renderer.shadowCastingMode; e.managementMode = mode; e.Init(); var size = e.size.x + e.size.y + e.size.z; if (size >= 3) { var material = renderer.sharedMaterial; if (material != null && material.shader != null) { if (material.shader.renderQueue < 2450) { e.isImportant = true; } } } return(AddOccludee(e, parentOccludee) != -1); }
bool IncludeLODGroup(LODGroup lodGroup, GDOC_ManagementMode mode, GDOC_UpdateMode movementMode = GDOC_UpdateMode.Static, GDOC_Occludee parentOccludee = null) { var e = lodGroup.gameObject.AddComponent <GDOC_Occludee>(); lodGroup.RecalculateBounds(); e.mode = GDOC_OccludeeMode.MeshRendererGroup; e.movementMode = movementMode; e.isTemporary = true; e.managementMode = mode; e.GrabLODGroupRenderers(); e.Init(); e.isImportant = e.volumeSizeSqr > 2; AddOccludee(e, parentOccludee); return(false); }