Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
assetsmanager [2019/03/12 12:55] – [Using AssetsManager] admin | assetsmanager [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Using AssetsManager ====== | ||
- | |||
- | |||
- | The AssetsManager is the core component in effective media management inside your Gorilla3D application. | ||
- | |||
- | Models, textures, audio, dialogues and so on will be cached for faster access and reusage. | ||
- | |||
- | You can build packages within the AssetsManager for modular media management. | ||
- | |||
- | For example: you could build a package for the main character and reference to it in every scene package. | ||
- | |||
- | Scene packages are extremly useful for compact and fast loading of all data in a scene. | ||
- | |||
- | ===== Package ===== | ||
- | An assets package is the management unit to handle groups and their attached assets. | ||
- | It is allowed to store a package as zip-archive or to use as in-memory package. | ||
- | |||
- | ===== Groups ===== | ||
- | Each package provides a number of fixed group entries to organize media content. | ||
- | |||
- | Default group ids to access the specific group of each package: | ||
- | * GORILLA_ASSETS_MODEL | ||
- | * GORILLA_ASSETS_TEXTURE | ||
- | * GORILLA_ASSETS_AUDIO | ||
- | * GORILLA_ASSETS_VIDEO | ||
- | * GORILLA_ASSETS_MISC | ||
- | * GORILLA_ASSETS_DIALOGUE | ||
- | * GORILLA_ASSETS_INVENTORY | ||
- | |||
- | ===== Assets ===== | ||
- | A media file is represented as extended TGorillaAsset instance inside in a specific group in an assets package. | ||
- | Depending on the media type the asset holds the data. | ||
- | |||
- | ==== TGorillaModelAsset ==== | ||
- | Holds model and animation data by the internal definition format TModelDef and writes data as *.g3d file to the zip-archive. | ||
- | |||
- | ==== TGorillaTextureAsset ==== | ||
- | Holds the texture as TBitmap in memory and writes those in original file format to zip-archive. | ||
- | |||
- | ==== TGorillaAudioAsset ==== | ||
- | Holds audio files in a TMemoryStream and writes those in original file format to zip-archive. | ||
- | |||
- | ==== TGorillaVideoAsset ==== | ||
- | Holds video files in a TMemoryStream and writes those in original file format to zip-archive. | ||
- | |||
- | ==== TGorillaMiscAsset ==== | ||
- | Used for unspecified file formats. Currently supported *.txt, *.json and *.xml. | ||
- | Holds data in a TMemoryStream and writes those in original file format to zip-archive. | ||
- | |||
- | ==== TGorillaDialogueAsset ==== | ||
- | Holds dialogue data in a TMemoryStream and writes those as *.dia file to zip-archive. | ||
- | |||
- | ==== TGorillaInventoryAsset ==== | ||
- | Holds inventory configuration data in a TMemoryStream and writes those as *.iff file to zip-archive. | ||
- | |||
- | ===== DesignTime ===== | ||
- | You can find the TGorillaAssetsManager component in the toolbar. Simply drag and drop onto your form. | ||
- | |||
- | In the next step we need to create a new package in " | ||
- | |||
- | ===== Example ===== | ||
- | |||
- | ==== Creating package at runtime ==== | ||
- | |||
- | Alternatively you can create the assets manager and packages at runtime. | ||
- | |||
- | <file pascal Form1.pas> | ||
- | var | ||
- | FAssetsManager : TGorillaAssetsManager; | ||
- | FPackage : TGorillaAssetsPackage; | ||
- | | ||
- | procedure TForm1.CreatePackage(); | ||
- | begin | ||
- | FAssetsManager := TGorillaAssetsManager.Create(Self); | ||
- | FPackage := FAssetsManager.AddEmptyPackage(GORILLA_PACKAGE_DEFAULT); | ||
- | end; | ||
- | </ | ||
- | |||
- | ==== Loading package from file ==== | ||
- | |||
- | You can easily setup packages by the Gorilla3D assets manager tool. | ||
- | There you can also save packages to file, which can be loaded at runtime in your program. | ||
- | |||
- | <file pascal Form1.pas> | ||
- | procedure TForm1.LoadPackage(const AFilename : String); | ||
- | begin | ||
- | FAssetsManager := TGorillaAssetsManager.Create(Self); | ||
- | FPackage := FAssetsManager.LoadPackageFromFile(AFilename); | ||
- | end; | ||
- | </ | ||
- | |||
- | ==== Storing your assets package at runtime ==== | ||
- | |||
- | Of course you are allowed to store the assets package you've setup. | ||
- | Easily use the provided SaveToFile method of each package instance. | ||
- | |||
- | <file pascal Form1.pas> | ||
- | procedure TForm1.SavePackage(const AFilename : String); | ||
- | begin | ||
- | FPackage.SaveToFile(AFilename); | ||
- | end; | ||
- | </ | ||
- | |||
- | ==== Finding an asset inside of a package ==== | ||
- | |||
- | 1) Each assets has an unique id (GUID) when added to the package by which we can find it exactly. | ||
- | |||
- | <file pascal Form1.pas> | ||
- | // finding an asset in a specific group by its unique id | ||
- | LAssetId := ' | ||
- | FPackage.GetAssetFromId(GORILLA_ASSETS_TEXTURE, | ||
- | </ | ||
- | |||
- | 2) Get asset by its filename | ||
- | |||
- | **Caution: This method will automatically import the asset from supplied file, if it can not be found.** | ||
- | |||
- | <file pascal Form1.pas> | ||
- | // finding an asset in a specific group by its filename | ||
- | LAssetFile := ' | ||
- | FPackage.GetAssetFromFile(GORILLA_ASSETS_TEXTURE, | ||
- | </ | ||
- | |||
- | 3) Get asset by its filename and stream | ||
- | |||
- | **Caution: This method will automatically import the asset from supplied stream, if it can not be found.** | ||
- | |||
- | <file pascal Form1.pas> | ||
- | // finding an asset in a specific group by its filename | ||
- | LAssetFile := ' | ||
- | FPackage.GetAssetFromStream(GORILLA_ASSETS_TEXTURE, | ||
- | </ | ||