public void SetBatching(Slicer2D script)
        {
            Slicer2DSettingsProfile profile = Slicer2DSettings.GetProfile();

            if (profile == null || profile.batching == Slicer2DSettings.Batching.Default)
            {
                script.materialSettings.batchMaterial = EditorGUILayout.Toggle("Batch Material", script.materialSettings.batchMaterial);
            }
            else
            {
                EditorGUI.BeginDisabledGroup(true);
                EditorGUILayout.Toggle("Batch Material", Slicer2DSettings.GetBatching(script.materialSettings.batchMaterial));
                EditorGUI.EndDisabledGroup();
            }
        }
示例#2
0
        public void CreateMesh(GameObject gameObject, Polygon2D polygon)
        {
            polygon.CreateMesh(gameObject, scale, offset, GetTriangulation());

            if (material)
            {
                MeshRenderer meshRenderer = gameObject.GetComponent <MeshRenderer> ();
                if (Slicer2DSettings.GetBatching(batchMaterial))
                {
                    Slicer2DProfiler.IncBatchingApplied();
                    meshRenderer.sharedMaterial = material;
                }
                else
                {
                    meshRenderer.sharedMaterial = new Material(material);
                }
            }
        }
示例#3
0
        // Check Before Each Function - Then This Could Be Private
        public void Initialize()
        {
            shape.ForceUpdate();

            List <Polygon2D> result = Polygon2DList.CreateFromGameObject(gameObject);

            // Split collider if there are more polygons than 1
            if (result.Count > 1)
            {
                PerformResult(result, new Slice2D());
            }

            switch (textureType)
            {
            case TextureType.Mesh2D:
                if (Slicer2DSettings.GetBatching(materialSettings.batchMaterial) && spriteRenderer != null)
                {
                    materialSettings.material = spriteRenderer.material;
                }

                // Needs Mesh UV Options
                materialSettings.CreateMesh(gameObject, shape.GetLocal());

                meshRenderer = GetComponent <MeshRenderer> ();

                meshFilter = GetComponent <MeshFilter>();

                break;

            case TextureType.Mesh3D:
                shape.GetLocal().CreateMesh3D(gameObject, materialSettings.depth, materialSettings.scale, materialSettings.offset, 0, materialSettings.GetTriangulation());

                meshRenderer = GetComponent <MeshRenderer> ();
                meshFilter   = GetComponent <MeshFilter>();

                Material[] sharedMaterials = new Material[2];
                sharedMaterials[1] = materialSettings.material;
                sharedMaterials[0] = materialSettings.sideMaterial;

                meshRenderer.sharedMaterials = sharedMaterials;

                break;

            case TextureType.Sprite:
                if (spriteRenderer == null)
                {
                    spriteRendererComponent = GetComponent <SpriteRenderer>();

                    spriteRenderer = new VirtualSpriteRenderer(spriteRendererComponent);
                }
                else
                {
                    if (Slicer2DSettings.GetBatching(materialSettings.batchMaterial) == false)
                    {
                        spriteRenderer.material = new Material(spriteRenderer.material);
                    }
                }
                break;

            case TextureType.Sprite3D:
                if (spriteRenderer == null)
                {
                    spriteRendererComponent = GetComponent <SpriteRenderer>();

                    spriteRenderer = new VirtualSpriteRenderer(spriteRendererComponent);

                    reinitialize = true;

                    Destroy(spriteRendererComponent);
                    spriteRendererComponent = null;
                }
                else
                {
                    if (Slicer2DSettings.GetBatching(materialSettings.batchMaterial) == false)
                    {
                        spriteRenderer.material = new Material(spriteRenderer.material);
                    }
                }
                break;

            case TextureType.SpriteAnimation:
                if (spriteRenderer == null)
                {
                    spriteRenderer = new VirtualSpriteRenderer(GetComponent <SpriteRenderer>());
                }
                break;

            default:
                break;
            }
        }