Am I constructing it incorrectly?
InventoryComponent = CreateDefaultSubobject<UMInventoryComponent>(TEXT("InventoryComponent"));
UPROPERTY(VisibleAnywhere, Category = Inventory)
UMInventoryComponent* InventoryComponent;
Or am i missing doing something?
component header
UCLASS( ClassGroup=(Inventory), meta=(BlueprintSpawnableComponent) )
class MGAME_API UMInventoryComponent : public UActorComponent
{
GENERATED_BODY()
public:
// Sets default values for this component's properties
UMInventoryComponent();
UFUNCTION(BlueprintCallable)
void AddItem(FName ItemID, AMItem* Item);
// Equipment inventory
UPROPERTY(EditAnywhere)
TArray<FItem> Inventory;
protected:
// Called when the game starts
virtual void BeginPlay() override;
};
cpp
// Sets default values for this component's properties
UMInventoryComponent::UMInventoryComponent()
{
}
// Called when the game starts
void UMInventoryComponent::BeginPlay()
{
Super::BeginPlay();
}
void UMInventoryComponent::AddItem(FName ItemID, AMItem* Item)
{
AMGameGameModeBase* GameMode = Item->GetMyGameMode();
bool bItemFound = false;
FItem ItemFound = GameMode->FindItem(Item->ID, bItemFound);
if (bItemFound == true)
{
FItem NewItem;
NewItem.ID = Item->ID;
NewItem.Quantity = ItemFound.Quantity;
NewItem.MainParameters.Abbreviation = ItemFound.MainParameters.Abbreviation;
NewItem.MainParameters.EquipType = ItemFound.MainParameters.EquipType;
NewItem.MainParameters.InspectImage = ItemFound.MainParameters.InspectImage;
NewItem.MainParameters.InventoryImage = ItemFound.MainParameters.InventoryImage;
NewItem.MainParameters.IsUsable = ItemFound.MainParameters.IsUsable;
NewItem.MainParameters.Name = ItemFound.MainParameters.Name;
NewItem.MainParameters.SizeX = ItemFound.MainParameters.SizeX;
NewItem.MainParameters.SizeY = ItemFound.MainParameters.SizeY;
NewItem.MainParameters.StackSize = ItemFound.MainParameters.StackSize;
NewItem.MainParameters.UseType = ItemFound.MainParameters.UseType;
NewItem.Mesh.SkeletalMesh = ItemFound.Mesh.SkeletalMesh;
NewItem.Mesh.StaticMesh = ItemFound.Mesh.StaticMesh;
Inventory.Add(NewItem);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor(255, 255, 255), "ADD ITEM");
}
}