using UnityEditor; using UnityEngine; using System; using System.Collections.Generic; using System.Linq; using System.Text; using log4net; namespace P4Connect { /// /// This class hooks onto the Asset Save/Delete/Move process and makes sure that /// Perforce is updated accordingly. It uses the perforce connection class /// (which internally uses Config to retrieve the connection settings) /// to open a connection to the server and add the required changes (add/checkout/delete/move). /// public class AssetPostProcessor : UnityEditor.AssetPostprocessor { private static readonly ILog log = LogManager.GetLogger(typeof(AssetPostProcessor)); public static void OnPostprocessAllAssets ( String [] aImportedAssets, String [] aDeletedAssets, String [] aMovedAssets, String [] aMovedFromAssetPaths) { if (!Config.ValidConfiguration) // Should I queue up this stuff until the configuration is valid? return; #if DEBUG log.DebugFormat("import: {0} delete: {1} move: {2} moveTo: {3}", Logger.StringArrayToString(aImportedAssets), Logger.StringArrayToString(aDeletedAssets), Logger.StringArrayToString(aMovedAssets), Logger.StringArrayToString(aMovedFromAssetPaths)); #endif if (aImportedAssets.Length > 0) { Engine.CreateAssets(aImportedAssets); } if (aDeletedAssets.Length > 0) { Engine.DeleteAssets(aDeletedAssets); } if (aMovedAssets.Length > 0) { Engine.MoveAssets(aMovedFromAssetPaths, aMovedAssets); } #if DEBUG log.Debug("... Complete"); #endif } } }