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

Method set_instance_data

src/world/render_world.cpp:2234–2255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2232}
2233
2234void RenderWorld::MeshManager::set_instance_data(u32 ii, SceneGraph &scene_graph)
2235{
2236 if (_data.skeleton[ii] != NULL) {
2237 AnimationSkeletonInstance *skeleton = (AnimationSkeletonInstance *)_data.skeleton[ii];
2238
2239 for (u32 b = 0; b < skeleton->num_bones; ++b) {
2240 TransformId bone_ti = scene_graph.instance(skeleton->bone_lookup[b]);
2241 skeleton->bones[b] = skeleton->offsets[b] * scene_graph.world_pose(bone_ti);
2242 }
2243
2244 TransformId ti = scene_graph.instance(_data.unit[ii]);
2245 Matrix4x4 world_pose = scene_graph.world_pose(ti);
2246 skeleton->bones[0] = world_pose;
2247
2248 bgfx::setTransform(skeleton->bones, skeleton->num_bones);
2249 } else {
2250 bgfx::setTransform(to_float_ptr(_data.world[ii]));
2251 }
2252
2253 bgfx::setVertexBuffer(0, _data.mesh[ii].vbh);
2254 bgfx::setIndexBuffer(_data.mesh[ii].ibh);
2255}
2256
2257void RenderWorld::MeshManager::draw_shadow_casters(u8 view_id, SceneGraph &scene_graph, u32 stencil)
2258{

Callers 2

draw_meshFunction · 0.80
renderMethod · 0.80

Calls 5

world_poseMethod · 0.80
setTransformFunction · 0.50
setVertexBufferFunction · 0.50
setIndexBufferFunction · 0.50
instanceMethod · 0.45

Tested by

no test coverage detected