ThirdPartyPackageProcessor
Static processor pipeline that runs pre-processing and post-processing steps on third-party packages during import. Manages a registry of per-package ProcessorTable instances that drive asset renaming and remapping.
Definition
Namespace: Paragon.Editor.ThirdPartyPackageImporter Assembly: Paragon.Editor.dll
internal static class ThirdPartyPackageProcessorRemarks
ThirdPartyPackageProcessor implements a two-phase processing pipeline for third-party package imports. Each phase runs a fixed, ordered list of Processor subclasses over the package's import items.
Processing Pipeline
Processor Lists
Pre
PathProcessor
Normalizes import paths based on ProcessorTable rules
Pre
PrepareProcessor
Prepares assets and directories before Unity import
Post
FBXProcessor
Fixes FBX import settings after Unity import
Post
MaterialProcessor
Remaps and fixes material references
Post
MetaProcessor
Cleans up or adjusts .meta files
ProcessorTable Registry
Each package can have an associated ProcessorTable — a context-aware lookup table downloaded from Google Sheets via ThirdPartyPackageUtility. The table is registered with RegisterProcessorTable(packageID, table) and retrieved by processors via GetProcessorTable(packageID).
Processor tables contain rename/remap rules organized by context: VARIABLES, DIRECTORIES, FILES, MATERIALS, MESHES, ANIMATIONS. Variables can be referenced in other contexts and are expanded at parse time.
Quick Lookup
Run pre-processors on a package
ThirdPartyPackageProcessor.PreProcessPackage(package)
Run post-processors on a package
ThirdPartyPackageProcessor.PostProcessPackage(package)
Get a specific processor
ThirdPartyPackageProcessor.GetProcessor<PathProcessor>()
Register a processor table
ThirdPartyPackageProcessor.RegisterProcessorTable(packageID, table)
Get a processor table
ThirdPartyPackageProcessor.GetProcessorTable(packageID)
Methods
PreProcessPackage
Runs all pre-processors in order (PathProcessor → PrepareProcessor) on the given package.
package
ThirdPartyPackage
The package being imported
PostProcessPackage
Runs all post-processors in order (FBXProcessor → MaterialProcessor → MetaProcessor) on the given package.
package
ThirdPartyPackage
The package being imported
GetProcessor<TProcessor>
Retrieves a processor instance by type. Searches pre-processors first, then post-processors.
Type Parameters:
TProcessor— Must derive fromProcessor
Returns: The matching processor instance, or null if not found.
RegisterProcessorTable
Associates a ProcessorTable with a package ProductID. Replaces any existing table for that ID.
packageID
int
Asset Store ProductID
processorTable
ProcessorTable
The lookup table for asset renaming/remapping
GetProcessorTable
Retrieves the ProcessorTable for a package, or null if none is registered.
packageID
int
Asset Store ProductID
Common Pitfalls
Processor order matters Pre-processors and post-processors run in list order. PathProcessor must run before PrepareProcessor, and FBXProcessor must run before MaterialProcessor. Reordering the lists can break the import pipeline.
ProcessorTable must be registered before processing The Processor base class reads from the ProcessorTable via package.GetProcessedValue(). If no table is registered for the package (via RegisterProcessorTable), lookups will return null and processors may skip rename operations silently.
Processors are singletons Each processor is instantiated once in the static constructor and reused across all package imports. The Processor.Process() method sets this.package before processing and clears it to null afterward — processors are not thread-safe.
See Also
ThirdPartyPackageUtility — downloads and registers processor tables
ThirdPartyPackageManager — provides package info for processor table loading
ThirdPartyPackageCatalog — maps ProductID to package metadata
ThirdPartyPackageManager Overview — system overview
Last updated