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"); } }
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(); } }