MCPcopy Create free account
hub / github.com/crownengine/crown / create_material

Method create_material

src/world/material_manager.cpp:101–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99}
100
101Material *MaterialManager::create_material(const MaterialResource *resource)
102{
103 Material *material = hash_map::get(_materials, resource, (Material *)NULL);
104 if (material != NULL)
105 return material;
106
107 const u32 size = sizeof(Material) + resource->dynamic_data_size;
108 material = (Material *)_allocator->allocate(size);
109 new (material) Material(*_allocator);
110 material->_resource_manager = _resource_manager;
111 material->_resource = resource;
112 material->_data = (char *)&material[1];
113 material->_shader = _shader_manager->shader(resource->shader);
114
115 const char *dynamic_data = (char *)resource + resource->dynamic_data_offset;
116 memcpy(material->_data, dynamic_data, resource->dynamic_data_size);
117
118#if CROWN_CAN_RELOAD
119 array::resize(material->_texture_resources, resource->num_textures);
120#endif
121
122 hash_map::set(_materials, resource, material);
123 return material;
124}
125
126Material *MaterialManager::get(const MaterialResource *resource)
127{

Callers 6

image_3d_uvMethod · 0.80
text_3dMethod · 0.80
textMethod · 0.80
mesh_set_materialMethod · 0.80
sprite_set_materialMethod · 0.80
create_instancesMethod · 0.80

Calls 6

getFunction · 0.85
memcpyFunction · 0.85
setClass · 0.85
shaderMethod · 0.80
resizeFunction · 0.50
allocateMethod · 0.45

Tested by

no test coverage detected