# Projects and Assets

The SDK heavily uses the systems provided by the base platform for the handling of assets and projects and extends the system with jME3 specific features.

## AssetDataObject

Most “files” that you encounter in the SDK come in the form of AssetDataObjects. All Nodes that you encounter contain the AssetDataObject they were loaded from. It provides not just access to the FileObject of the specific file but also an AssetData object that allows access to jME specific properties and data. The AssetData object also allows loading the object via the jME3 assetManager. It is accessible via the lookup of the Node or AssetDataObject:

    assetDataObject.getLookup().lookup(AssetData.class)

## ProjectAssetManager

All AssetDataObjects and SceneExplorerNodes allow access to the ProjectAssetManager of the project they were loaded from.

    ProjectAssetManager pm = node.getLookup().lookup(ProjectAssetManager.class)

The ProjectAssetManager is basically a normal DesktopAssetManager for each project with some added functionality:

- Access to the FileObject of the assets folder of the project to load and save data
- Convert absolute file paths to relative asset paths and vice versa
- Get lists of all textures, materials etc. in the project
- more convenient stuff.. :)

view online version