MCPcopy Create free account
hub / github.com/defold/defold / UpdateTransforms

Function UpdateTransforms

engine/gameobject/src/gameobject/gameobject.cpp:2581–2620  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2579 }
2580
2581 void UpdateTransforms(Collection* collection)
2582 {
2583 DM_PROFILE("UpdateTransforms");
2584
2585 // Calculate world transforms
2586 // First root-level instances
2587 dmArray<uint16_t>& root_level = collection->m_LevelIndices[0];
2588 uint32_t root_count = root_level.Size();
2589 for (uint32_t i = 0; i < root_count; ++i)
2590 {
2591 uint16_t index = root_level[i];
2592 Instance* instance = collection->m_Instances[index];
2593 CheckEuler(instance);
2594 collection->m_WorldTransforms[index] = dmTransform::ToMatrix4(instance->m_Transform);
2595 uint16_t parent_index = instance->m_Parent;
2596 assert(parent_index == INVALID_INSTANCE_INDEX);
2597 }
2598
2599 for (uint32_t level_i = 1; level_i < MAX_HIERARCHICAL_DEPTH; ++level_i)
2600 {
2601 dmArray<uint16_t>& level = collection->m_LevelIndices[level_i];
2602 uint32_t instance_count = level.Size();
2603 for (uint32_t i = 0; i < instance_count; ++i)
2604 {
2605 uint16_t index = level[i];
2606 Instance* instance = collection->m_Instances[index];
2607 CheckEuler(instance);
2608 Matrix4* trans = &collection->m_WorldTransforms[index];
2609
2610 uint16_t parent_index = instance->m_Parent;
2611 assert(parent_index != INVALID_INSTANCE_INDEX);
2612
2613 Matrix4* parent_trans = &collection->m_WorldTransforms[parent_index];
2614 Matrix4 own = dmTransform::ToMatrix4(instance->m_Transform);
2615 *trans = *parent_trans * own;
2616 }
2617 }
2618
2619 collection->m_DirtyTransforms = false;
2620 }
2621
2622 void UpdateTransforms(HCollection hcollection)
2623 {

Callers 6

InitCollectionFunction · 0.70
DispatchMessagesFunction · 0.70
UpdateComponentFunctionFunction · 0.70
UpdateFunction · 0.70
AcquireResourcesFunction · 0.70
TEST_FFunction · 0.50

Calls 4

CheckEulerFunction · 0.70
ToMatrix4Function · 0.50
assertFunction · 0.50
SizeMethod · 0.45

Tested by 1

TEST_FFunction · 0.40