#include <ComposableCameraRuntimeDataBlock.h>
Flat, contiguous memory block that holds all pin output values, exposed parameter values, internal variable values, and per-instance input pin default values for a single camera instance at runtime.
The layout is computed once from the camera type asset's pin declarations, connections, exposed parameters, internal variables, and per-instance pin overrides. All access is offset-based for performance.
Memory layout: [Output pin slots][Exposed parameter slots][Per-instance default slots][Internal variable slots]
Each slot is aligned to the type's natural alignment. The per-instance default slots mirror the authoring-layer FComposableCameraPinOverride::DefaultValueOverride values (see Nodes/ComposableCameraNodePinTypes.h) pre-parsed into typed bytes so the per-frame resolution path in TryResolveInputPin is a pure pointer lookup — no string parsing on the hot path.
Public Attributes¶
| Return | Name | Description |
|---|---|---|
TArray< uint8 > |
Storage |
Raw storage buffer. Allocated once during camera instantiation. |
TMap< FComposableCameraPinKey, int32 > |
OutputPinOffsets |
Lookup: (NodeIndex, PinName) for OUTPUT pins → byte offset in Storage. |
TMap< FName, int32 > |
ExposedParameterOffsets |
Lookup: ExposedParameterName → byte offset in Storage. |
TMap< FName, int32 > |
InternalVariableOffsets |
Lookup: InternalVariableName → byte offset in Storage. |
TMap< FComposableCameraPinKey, int32 > |
InputPinSourceOffsets |
Connection table: for each input pin, the offset of its source data. Key = (TargetNodeIndex, TargetPinName), Value = offset in Storage where the source output pin wrote its data. |
TMap< FComposableCameraPinKey, int32 > |
ExposedInputPinOffsets |
Exposure table: for each exposed input pin, the offset of the parameter slot. Key = (TargetNodeIndex, TargetPinName), Value = offset of the exposed parameter in Storage. |
TMap< FComposableCameraPinKey, int32 > |
DefaultValueOffsets |
Per-instance default-value table: for each input pin that has an authored FComposableCameraPinOverride::DefaultValueOverride (see Nodes/ComposableCameraNodePinTypes.h), the offset of the slot holding the pre-parsed typed bytes. Key = (TargetNodeIndex, PinName), Value = offset in Storage. |
int32 |
TotalSize |
Total allocated size. |
Storage¶
TArray< uint8 > Storage
Raw storage buffer. Allocated once during camera instantiation.
OutputPinOffsets¶
TMap< FComposableCameraPinKey, int32 > OutputPinOffsets
Lookup: (NodeIndex, PinName) for OUTPUT pins → byte offset in Storage.
ExposedParameterOffsets¶
TMap< FName, int32 > ExposedParameterOffsets
Lookup: ExposedParameterName → byte offset in Storage.
InternalVariableOffsets¶
TMap< FName, int32 > InternalVariableOffsets
Lookup: InternalVariableName → byte offset in Storage.
InputPinSourceOffsets¶
TMap< FComposableCameraPinKey, int32 > InputPinSourceOffsets
Connection table: for each input pin, the offset of its source data. Key = (TargetNodeIndex, TargetPinName), Value = offset in Storage where the source output pin wrote its data.
ExposedInputPinOffsets¶
TMap< FComposableCameraPinKey, int32 > ExposedInputPinOffsets
Exposure table: for each exposed input pin, the offset of the parameter slot. Key = (TargetNodeIndex, TargetPinName), Value = offset of the exposed parameter in Storage.
DefaultValueOffsets¶
TMap< FComposableCameraPinKey, int32 > DefaultValueOffsets
Per-instance default-value table: for each input pin that has an authored FComposableCameraPinOverride::DefaultValueOverride (see Nodes/ComposableCameraNodePinTypes.h), the offset of the slot holding the pre-parsed typed bytes. Key = (TargetNodeIndex, PinName), Value = offset in Storage.
This is ranked below InputPinSourceOffsets (wired) and ExposedInputPinOffsets (exposed-as-parameter) by TryResolveInputPin. It exists so that per-frame default resolution is a pointer-lookup / memcpy instead of a string-parse, honoring the "no hot-path allocations" rule.
Pins without an authored override are simply absent from this map; their default is resolved by the node's own class-level fallback (e.g. a UPROPERTY on the node template) when TryResolveInputPin returns false.
TotalSize¶
int32 TotalSize = 0
Total allocated size.
Public Methods¶
| Return | Name | Description |
|---|---|---|
T |
ReadValue const inline |
Read a typed value from the storage at the given byte offset. |
void |
WriteValue inline |
Write a typed value to the storage at the given byte offset. |
T |
ReadOutputPin const inline |
Read a value for a specific output pin. |
void |
WriteOutputPin inline |
Write a value for a specific output pin. |
bool |
TryResolveInputPin const inline |
Resolve an input pin's value. Checks in order: |
T |
ReadInternalVariable const inline |
Read an internal variable by name. |
void |
WriteInternalVariable inline |
Write an internal variable by name. |
bool |
HasInternalVariable const inline |
Check if a specific internal variable exists. |
void |
CopySlot inline |
Copy raw bytes from one slot to another within the same storage. Used by the exec-chain SetVariable dispatch to transfer a source node's output pin value into an internal variable slot without knowing the concrete C++ type at compile time. |
bool |
IsValid const inline |
Check if storage has been allocated. |
void |
ZeroInitialize inline |
Zero-initialize all storage. Called at allocation time. |
ReadValue¶
const inline
template<typename T> inline T ReadValue(int32 Offset) const
Read a typed value from the storage at the given byte offset.
WriteValue¶
inline
template<typename T> inline void WriteValue(int32 Offset, const T & Value)
Write a typed value to the storage at the given byte offset.
ReadOutputPin¶
const inline
template<typename T> inline T ReadOutputPin(int32 NodeIndex, FName PinName) const
Read a value for a specific output pin.
WriteOutputPin¶
inline
template<typename T> inline void WriteOutputPin(int32 NodeIndex, FName PinName, const T & Value)
Write a value for a specific output pin.
TryResolveInputPin¶
const inline
template<typename T> inline bool TryResolveInputPin(int32 NodeIndex, FName PinName, T & OutValue) const
Resolve an input pin's value. Checks in order:
-
Wired connection (InputPinSourceOffsets)
-
Exposed parameter (ExposedInputPinOffsets)
-
Per-instance default override (DefaultValueOffsets) — authoring-layer FComposableCameraPinOverride::DefaultValueOverride, pre-parsed by BuildRuntimeDataLayout.
-
Returns false if none of the above are found. Callers with a class-level fallback (e.g. a UPROPERTY on the node template) should read it in the false branch; see UComposableCameraFieldOfViewNode::OnTickNode for the canonical pattern.
ReadInternalVariable¶
const inline
template<typename T> inline T ReadInternalVariable(FName VariableName) const
Read an internal variable by name.
WriteInternalVariable¶
inline
template<typename T> inline void WriteInternalVariable(FName VariableName, const T & Value)
Write an internal variable by name.
HasInternalVariable¶
const inline
inline bool HasInternalVariable(FName VariableName) const
Check if a specific internal variable exists.
CopySlot¶
inline
inline void CopySlot(int32 SourceOffset, int32 TargetOffset, int32 NumBytes)
Copy raw bytes from one slot to another within the same storage. Used by the exec-chain SetVariable dispatch to transfer a source node's output pin value into an internal variable slot without knowing the concrete C++ type at compile time.
IsValid¶
const inline
inline bool IsValid() const
Check if storage has been allocated.
ZeroInitialize¶
inline
inline void ZeroInitialize()
Zero-initialize all storage. Called at allocation time.