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

Method update_transforms

src/world/render_world.cpp:981–1031  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

979}
980
981void RenderWorld::update_transforms(const UnitId *begin, const UnitId *end, const Matrix4x4 *world)
982{
983 MeshManager::MeshInstanceData &mid = _mesh_manager._data;
984 SpriteManager::SpriteInstanceData &sid = _sprite_manager._data;
985 LightManager::LightInstanceData &lid = _light_manager._data;
986 LodGroupManager::LodGroupInstanceData &lgd = _lod_group_manager._data;
987
988 for (; begin != end; ++begin, ++world) {
989 if (_mesh_manager.has(*begin)) {
990 MeshId mesh = _mesh_manager.mesh(*begin);
991 const u32 mesh_i = _mesh_manager.index(mesh);
992 mid.world[mesh_i] = *world;
993
994 _mesh_manager._data.flags[mesh_i] |= RenderableFlags::DIRTY;
995 _mesh_manager._dirty = true;
996 }
997
998 if (_sprite_manager.has(*begin)) {
999 SpriteId sprite = _sprite_manager.sprite(*begin);
1000 sid.world[sprite.i] = *world;
1001
1002 _sprite_manager._data.flags[sprite.i] |= RenderableFlags::DIRTY;
1003 _sprite_manager._dirty = true;
1004 }
1005
1006 if (_lod_group_manager.has(*begin)) {
1007 LodGroupId lod_group = _lod_group_manager.lod_group(*begin);
1008 lgd.world[lod_group.i] = *world;
1009
1010 culling_set::update(_cullable_objects
1011 , CullableType::LOD_GROUP
1012 , lod_group.i
1013 , lgd.sphere[lod_group.i]
1014 , lgd.world[lod_group.i]
1015 );
1016 }
1017
1018 if (_light_manager.has(*begin)) {
1019 LightId light = _light_manager.light(*begin);
1020
1021 Vector3 pos = translation(*world);
1022 Vector3 dir = -z(*world);
1023 normalize(dir);
1024
1025 lid.shader[light.i].position = pos;
1026 lid.shader[light.i].direction = dir;
1027
1028 _light_manager._dirty = true;
1029 }
1030 }
1031}
1032
1033// From BGFX's 16-shadowmaps example.
1034static void mtxYawPitchRoll(f32 *_result

Callers 1

update_sceneMethod · 0.80

Calls 8

normalizeFunction · 0.85
meshMethod · 0.80
spriteMethod · 0.80
lod_groupMethod · 0.80
lightMethod · 0.80
updateFunction · 0.70
hasMethod · 0.45
indexMethod · 0.45

Tested by

no test coverage detected