Details are the main building data blocks in Apparatus. They are high-level entities (unlike Traits), which support some additional ECS+ functionality like multi-iterating and inheritance.
Details do derive from UObject and are subject to garbage collecting and Unreal’s general memory model (unlike Traits which use their own memory organization).
If you need to change some of the Detail members, you can do it *directly* via members’ assignment or calling non-const Detail’s methods. No need to re-apply or copy the Detail data again.
As an optimization of some internal logic, Details can’t really be removed from Subjectives. They can only be *disabled*. This is effectively the same thing as removal since Filters do respect this enabled/disabled state both in including and excluding contexts.
In order to create a Detail visible in your C++ source code you have to do the following:
MyDetail.h
:// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Detail.h" #include "MyDetail.generated.h" /** * */ UCLASS() class MY_API UMyDetail : public UDetail { GENERATED_BODY() };
MyDetail.cpp
:// Fill out your copyright notice in the Description page of Project Settings. #include "MyDetail.h"
float X = 0; float Y = 0;
UPROPERTY(BlueprintReadWrite, EditAnywhere) float X = 0; UPROPERTY(BlueprintReadWrite, EditAnywhere) float Y = 0;