AssetProcessor is used to apply processing to assets
after they have been loaded. They are assigned to a particular
asset type (which is represented by a Class) and any assets
loaded that are of that class will be processed by the assigned
Creates a clone of the given asset.
If no clone is desired, then the same instance can be returned,
otherwise, a clone should be created.
For example, a clone of a Material should have its own set
of unique parameters that can be changed just for that instance,
but it may share certain other data if it sees fit (like the Shader).
obj - The asset to clone
The cloned asset, or the same as the given argument if no
clone is needed.