// Register a custom mesh creator
meshManager.meshCreators["mesh://custom"] = { entity ->
// Create and return a custom SceneMesh for the entity
SceneMesh.box(
-0.5f, -0.5f, -0.5f,
0.5f, 0.5f, 0.5f,
material.generateSceneMaterial(entity, context)
)
}
// Set a mesh for an entity using a URI
meshManager.setMeshForEntity(
entity,
Uri.parse("models/cube.glb"),
Uri.parse("file:///data/data/com.example.app/files/models/cube.glb"),
"", // default shader override
-1, // default scene override
true // use cache
)
// Set a mesh directly for an entity
meshManager.setMeshForEntityDirectly(entity, sceneMesh)
class MeshManager(val scene: Scene, val meshCreators: HashMap<String, (ent: Entity) -> SceneMesh>, val sceneObjectSystem: SceneObjectSystem)
MeshManager
(
scene
,
meshCreators
,
sceneObjectSystem
)
:
MeshManager |
Signature
constructor(scene: Scene, meshCreators: HashMap<String, (ent: Entity) -> SceneMesh>, sceneObjectSystem: SceneObjectSystem) Parameters
scene:
Scene
meshCreators:
HashMap
sceneObjectSystem:
SceneObjectSystem Returns |
meshCreators
:
HashMap
[Get] |
Map of URI schemes to mesh creator functions
Signature
val meshCreators: HashMap<String, (ent: Entity) -> SceneMesh> |
scene
:
Scene [Get] |
The Scene instance used for rendering
Signature
val scene: Scene |
sceneObjectSystem
:
SceneObjectSystem [Get] |
System for managing SceneObjects
Signature
val sceneObjectSystem: SceneObjectSystem |
deleteMeshForEntity
(
entity
)
|
This method removes the SceneObject associated with the entity and destroys any meshes that were created for it.
Signature
fun deleteMeshForEntity(entity: Entity) Parameters
entity:
Entity |
destroy
()
|
Signature
fun destroy() |
retrieveAssociatedMeshFilesForEntity
(
entity
)
:
Array?
|
Signature
fun retrieveAssociatedMeshFilesForEntity(entity: Entity): Array<<Error class: unknown class>>? Parameters
entity:
Entity Returns
Array?
|
setMeshForEntity
(
entity
,
meshSimpleUri
,
meshFullPathUri
,
defaultShaderOverride
,
defaultSceneOverride
,
useCache
)
|
Attaches a mesh to an Entity based on the provided URIs. Avoid using this method directly and instead assign the Mesh component the Entity.
This method loads a mesh from the specified URI and attaches it to the entity. It supports different URI schemes:
Any previous mesh attached to the entity will be destroyed.
Signature
fun setMeshForEntity(entity: Entity, meshSimpleUri: Uri, meshFullPathUri: Uri, defaultShaderOverride: String, defaultSceneOverride: Int, useCache: Boolean = true) Parameters
entity:
Entity
meshSimpleUri:
Uri
meshFullPathUri:
Uri
defaultShaderOverride:
String
defaultSceneOverride:
Int
useCache:
Boolean
|
setMeshForEntityDirectly
(
entity
,
mesh
)
|
Attaches a mesh directly to an Entity, bypassing the data model. Should use the Mesh component instead.
This method should be used sparingly as it is not reflected by the data model. It's intended as an escape hatch when the mesh creators don't fit well with the standard workflow. Any previous mesh attached to the entity will be destroyed.
Signature
fun setMeshForEntityDirectly(entity: Entity, mesh: SceneMesh) |