Exemplo n.º 1
0
    private void SaveMaterials(Dictionary <SkinnableType, SkinObject> lookup, SkinnableGeneral skn)
    {
        bool showWarning = false;

        if (lookup[skn.type].materials.Length > 0)
        {
            Material[] mats = skn.GetMaterials();

            for (int i = 0; i < mats.Length; i++)
            {
                if (lookup[skn.type].materials[i] != null)
                {
                    lookup[skn.type].materials[i].CopyPropertiesFromMaterial(mats[i]);
                }
                else
                {
                    showWarning = true;
                }
            }
        }
        else
        {
            showWarning = true;
        }

        if (showWarning)
        {
            Debug.LogWarning("could not save the object materials! " +
                             "there is no material assigned in the skin asset for this type of object, please assign a material in the skin asset");
        }
    }
Exemplo n.º 2
0
    private void SaveSkinnable(SkinManagerSkinObjects skinObjects)
    {
        Dictionary <SkinnableType, SkinObject> lookup = skinObjects.GetLookup();

        if (_skinnable is SkinnableGeneral)
        {
            SkinnableGeneral skn = _skinnable as SkinnableGeneral;
            if (_skinnable is SkinnablePrefab)
            {
                (_skinnable as SkinnablePrefab).AssignRendererRef();
            }

            if (_saveMaterials)
            {
                SaveMaterials(lookup, skn);
            }
            if (_saveMatColors)
            {
                lookup[skn.type].materialColors = skn.GetColors(saveColors).ToArray();
            }
        }
        if (_skinnable is SkinnableMesh)
        {
            SkinnableMesh skn = _skinnable as SkinnableMesh;
            if (_saveMesh)
            {
                lookup[skn.type].mesh = skn.GetMesh();
            }
        }
        else if (_skinnable is SkinnablePrefab && !EditorApplication.isPlaying)
        {
            SkinnablePrefab skn = _skinnable as SkinnablePrefab;

            GameObject objectToReplace = (_skinnable as SkinnablePrefab).objectToReplace;
            if (objectToReplace != null)
            {
                lookup[skn.type].prefab = PrefabUtility.GetCorrespondingObjectFromSource(objectToReplace);
            }
        }
        else if (_skinnable is SkinnableParticles)
        {
            SkinnableParticles skn = _skinnable as SkinnableParticles;

            if (_saveParticleColors)
            {
                var colors = skn.GetParticleColors();
                ParticlesColor[] particlesColors = new ParticlesColor[colors.Count];

                int colorsCount = 0;
                if (_saveParticleStartColor)
                {
                    particlesColors[colorsCount] = colors[ParticleGradType.StartColor];
                    colorsCount++;
                }
                if (_saveParticleColorOverLife)
                {
                    particlesColors[colorsCount] = colors[ParticleGradType.OverLife];
                    colorsCount++;
                }
                if (_saveParticleColorBySpeed)
                {
                    particlesColors[colorsCount] = colors[ParticleGradType.BySpeed];
                }

                lookup[skn.type].particlesColors = particlesColors;
            }
        }

        if (_skinnable is SkinnableLight)
        {
            SkinnableLight skn = _skinnable as SkinnableLight;

            lookup[skn.type].lightObject = skn.GetLightObject();
        }
    }