static void ConvertSpriteType(GameObject go, System.Type targetType) { tk2dBaseSprite spr = go.GetComponent <tk2dBaseSprite>(); System.Type sourceType = spr.GetType(); if (sourceType != targetType) { tk2dBatchedSprite batchedSprite = new tk2dBatchedSprite(); tk2dStaticSpriteBatcherEditor.FillBatchedSprite(batchedSprite, go); if (targetType == typeof(tk2dSprite)) { batchedSprite.type = tk2dBatchedSprite.Type.Sprite; } else if (targetType == typeof(tk2dTiledSprite)) { batchedSprite.type = tk2dBatchedSprite.Type.TiledSprite; } else if (targetType == typeof(tk2dSlicedSprite)) { batchedSprite.type = tk2dBatchedSprite.Type.SlicedSprite; } else if (targetType == typeof(tk2dClippedSprite)) { batchedSprite.type = tk2dBatchedSprite.Type.ClippedSprite; } #if (UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2) if (spr.collider != null) { Object.DestroyImmediate(spr.collider); } Object.DestroyImmediate(spr, true); #else { Collider[] colliders = spr.GetComponents <Collider>(); foreach (Collider c in colliders) { Undo.DestroyObjectImmediate(c); } Collider2D[] collider2Ds = spr.GetComponents <Collider2D>(); foreach (Collider2D c in collider2Ds) { Undo.DestroyObjectImmediate(c); } } Undo.DestroyObjectImmediate(spr); #endif bool sourceHasDimensions = sourceType == typeof(tk2dSlicedSprite) || sourceType == typeof(tk2dTiledSprite); bool targetHasDimensions = targetType == typeof(tk2dSlicedSprite) || targetType == typeof(tk2dTiledSprite); // Some minor fixups if (!sourceHasDimensions && targetHasDimensions) { batchedSprite.Dimensions = new Vector2(100, 100); } if (targetType == typeof(tk2dClippedSprite)) { batchedSprite.ClippedSpriteRegionBottomLeft = Vector2.zero; batchedSprite.ClippedSpriteRegionTopRight = Vector2.one; } if (targetType == typeof(tk2dSlicedSprite)) { batchedSprite.SlicedSpriteBorderBottomLeft = new Vector2(0.1f, 0.1f); batchedSprite.SlicedSpriteBorderTopRight = new Vector2(0.1f, 0.1f); } tk2dStaticSpriteBatcherEditor.RestoreBatchedSprite(go, batchedSprite); #if !(UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2) { tk2dBaseSprite tmpSprite = go.GetComponent <tk2dBaseSprite>(); if (tmpSprite != null) { Undo.RegisterCreatedObjectUndo(tmpSprite, "Convert Sprite Type"); } } #endif } }