/// <summary> /// Applies random permutation of this skin to the set of renderers based on the given randomSeed. /// </summary> public void ApplyRandom( GameObject root, int randomSeed ) { Assert.NotNull( root ); Assert.HasComponent<Animator>( root, "ApplyRandom, parameter needs to have an Animator component" ); if ( skeletonBones != null ) { foreach ( SpriteSkeletonSkin mapping in skeletonBones ) { GameObject child = root.FindChildObjectByName( mapping.name ); if ( child != null ) { if ( colorOptions != null && colorOptions.Length > 0 ) { mapping.ApplyRandom( child.GetComponent<SpriteRenderer>(), colorOptions, randomSeed ); } else { mapping.ApplyRandom( child.GetComponent<SpriteRenderer>(), randomSeed ); } } } } else { Debug.LogWarning( "Apply random skin configuration: no bonemappings defined. No skin will be applied." ); } }
/// <summary> /// Merges the skin defined by the given skeleton with the current skin (much like a union). /// </summary> public void Merge( GameObject skeletonRoot ) { Assert.NotNull( skeletonRoot ); Assert.HasComponent<Animator>( skeletonRoot, "ApplyRandom, parameter needs to have an Animator component" ); foreach ( SpriteSkeletonSkin mapping in skeletonBones ) { GameObject bone = skeletonRoot.FindChildObjectByName( mapping.name ); if ( bone != null ) { SpriteRenderer renderer = bone.GetComponent<SpriteRenderer>(); if ( renderer != null && !mapping.ContainsSprite( renderer.sprite ) ) { mapping.AddBoneConfiguration( renderer.sprite, bone.transform, renderer.color ); Debug.Log ( "[Merge] Added sprite: " + renderer.sprite + " to " + mapping.name ); } } } }