MCPcopy Create free account
hub / github.com/Norbyte/bg3se / PrepareAddComponent

Method PrepareAddComponent

BG3Extender/GameDefinitions/EntitySystem.cpp:424–446  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

422}
423
424bool ImmediateWorldCache::PrepareAddComponent(EntityHandle entity, ComponentTypeIndex type, void*& component)
425{
426 auto typeInfo = EntityWorld->ComponentRegistry_.Get(type);
427 if (EntityWorld->GetRawComponent(entity, type, typeInfo->InlineSize, false)) {
428 return false;
429 }
430
431 auto changes = GetOrAddComponentChanges(type);
432 auto change = changes->Components.find(entity);
433
434 if (!change) {
435 ComponentFrameStorageIndex index;
436 component = changes->FrameStorage.Allocate(index);
437 change = changes->Components.add(entity, ComponentChange{
438 .Ptr = component,
439 .StorageIndex = index
440 });
441 return true;
442 } else {
443 WARN("A change for component [%d] already exists on entity [%016llx]!", type, entity.Handle);
444 return false;
445 }
446}
447
448void ImmediateWorldCache::FinalizeAddComponent(EntityHandle entity, ComponentTypeIndex type, void* component)
449{

Callers 1

Calls 5

GetRawComponentMethod · 0.80
GetMethod · 0.45
findMethod · 0.45
AllocateMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected