/// <inheritdoc/> public AssetCompilerResult Compile(CompilerContext context, AssetItem assetItem) { if (context == null) throw new ArgumentNullException("context"); if (assetItem == null) throw new ArgumentNullException("assetItem"); var compilerResult = new AssetCompilerResult(); var dependencySet = assetItem.Package.Session.DependencyManager.FindDependencySet(assetItem.Id); if (dependencySet == null) { compilerResult.Warning("Could not find dependency for asset [{0}]", assetItem); return compilerResult; } assetItem = dependencySet.Item; if (assetItem.Package == null) { compilerResult.Warning("Asset [{0}] is not attached to a package", assetItem); return compilerResult; } var assetCompilerContext = (AssetCompilerContext)context; // create the a package that contains only the asset and its the dependencies var dependenciesCompilePackage = assetItem.Package.Session.CreateCompilePackageFromAsset(assetItem); var clonedAsset = dependenciesCompilePackage.FindAsset(assetItem.Id); CompileWithDependencies(assetCompilerContext, clonedAsset, assetItem, compilerResult); return compilerResult; }
/// <inheritdoc/> public AssetCompilerResult Compile(CompilerContext context, AssetItem assetItem) { if (context == null) { throw new ArgumentNullException("context"); } if (assetItem == null) { throw new ArgumentNullException("assetItem"); } assetItem = assetItem.Package.Session.DependencyManager.FindDependencySet(assetItem.Id).Item; var compilerResult = new AssetCompilerResult(); if (assetItem.Package == null) { compilerResult.Warning("Asset [{0}] is not attached to a package", assetItem); return(compilerResult); } var assetCompilerContext = (AssetCompilerContext)context; // create the a package that contains only the asset and its the dependencies var dependenciesCompilePackage = assetItem.Package.Session.CreateCompilePackageFromAsset(assetItem); var clonedAsset = dependenciesCompilePackage.FindAsset(assetItem.Id); CompileWithDependencies(assetCompilerContext, clonedAsset, assetItem, compilerResult); return(compilerResult); }
public virtual AssetCompilerResult Compile(CompilerContext context, AssetItem assetItem) { if (context == null) { throw new ArgumentNullException("context"); } if (assetItem == null) { throw new ArgumentNullException("assetItem"); } Asset = (T)assetItem.Asset; AssetItem = assetItem; var compilerResult = new AssetCompilerResult(); // TODO: Workaround in case an asset item has been removed from its package if (AssetItem.Package == null) { compilerResult.Warning("Asset [{0}] is not attached to a package", AssetItem); return(compilerResult); } AssetsSession = AssetItem.Package.Session; CompileOverride((AssetCompilerContext)context, compilerResult); return(compilerResult); }
/// <inheritdoc/> public AssetCompilerResult Compile(CompilerContext context, AssetItem assetItem) { if (context == null) throw new ArgumentNullException("context"); if (assetItem == null) throw new ArgumentNullException("assetItem"); var compilerResult = new AssetCompilerResult(); if (assetItem.Package == null) { compilerResult.Warning("Asset [{0}] is not attached to a package", assetItem); return compilerResult; } var assetCompilerContext = (AssetCompilerContext)context; // create the a package that contains only the asset and its the dependencies var dependenciesCompilePackage = assetItem.Package.Session.CreateCompilePackageFromAsset(assetItem); var clonedAsset = dependenciesCompilePackage.FindAsset(assetItem.Id); CompileWithDependencies(assetCompilerContext, clonedAsset, assetItem, compilerResult); // Check unloadable items foreach (var currentAssetItem in dependenciesCompilePackage.Assets) { var unloadableItems = UnloadableObjectRemover.Run(currentAssetItem.Asset); foreach (var unloadableItem in unloadableItems) { compilerResult.Log(new AssetLogMessage(dependenciesCompilePackage, currentAssetItem.ToReference(), LogMessageType.Warning, $"Unable to load the object of type {unloadableItem.UnloadableObject.TypeName} which is located at [{unloadableItem.MemberPath}] in the asset")); } } // Find AssetBuildStep var assetBuildSteps = new Dictionary<AssetId, AssetBuildStep>(); foreach (var step in compilerResult.BuildSteps.EnumerateRecursively()) { var assetStep = step as AssetBuildStep; if (assetStep != null) { assetBuildSteps[assetStep.AssetItem.Id] = assetStep; } } // TODO: Refactor logging of CompilerApp and BuildEngine // Copy log top-level to proper asset build steps foreach (var message in compilerResult.Messages) { var assetMessage = message as AssetLogMessage; // Find asset (if nothing found, default to main asset) var assetId = assetMessage?.AssetReference.Id ?? assetItem.Id; AssetBuildStep assetBuildStep; if (assetBuildSteps.TryGetValue(assetId, out assetBuildStep)) { // Log to AssetBuildStep assetBuildStep.Logger?.Log(message); } } return compilerResult; }
/// <inheritdoc/> public AssetCompilerResult Compile(CompilerContext context, AssetItem assetItem) { if (context == null) { throw new ArgumentNullException("context"); } if (assetItem == null) { throw new ArgumentNullException("assetItem"); } var compilerResult = new AssetCompilerResult(); if (assetItem.Package == null) { compilerResult.Warning("Asset [{0}] is not attached to a package", assetItem); return(compilerResult); } var assetCompilerContext = (AssetCompilerContext)context; // create the a package that contains only the asset and its the dependencies var dependenciesCompilePackage = assetItem.Package.Session.CreateCompilePackageFromAsset(assetItem); var clonedAsset = dependenciesCompilePackage.FindAsset(assetItem.Id); CompileWithDependencies(assetCompilerContext, clonedAsset, assetItem, compilerResult); // Check unloadable items foreach (var currentAssetItem in dependenciesCompilePackage.Assets) { var unloadableItems = UnloadableObjectRemover.Run(currentAssetItem.Asset); foreach (var unloadableItem in unloadableItems) { compilerResult.Log(new AssetLogMessage(dependenciesCompilePackage, currentAssetItem.ToReference(), LogMessageType.Warning, $"Unable to load the object of type {unloadableItem.UnloadableObject.TypeName} which is located at [{unloadableItem.MemberPath}] in the asset")); } } // Find AssetBuildStep var assetBuildSteps = new Dictionary <AssetId, AssetBuildStep>(); foreach (var step in compilerResult.BuildSteps.EnumerateRecursively()) { var assetStep = step as AssetBuildStep; if (assetStep != null) { assetBuildSteps[assetStep.AssetItem.Id] = assetStep; } } // TODO: Refactor logging of CompilerApp and BuildEngine // Copy log top-level to proper asset build steps foreach (var message in compilerResult.Messages) { var assetMessage = message as AssetLogMessage; // Find asset (if nothing found, default to main asset) var assetId = assetMessage?.AssetReference.Id ?? assetItem.Id; AssetBuildStep assetBuildStep; if (assetBuildSteps.TryGetValue(assetId, out assetBuildStep)) { // Log to AssetBuildStep assetBuildStep.Logger?.Log(message); } } return(compilerResult); }