コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }