Exemplo n.º 1
0
bool FEnvQueryInstance::PrepareContext(UClass* Context, TArray<AActor*>& Data)
{
	if (Context == NULL)
	{
		return false;
	}

	FEnvQueryContextData ContextData;
	const bool bSuccess = PrepareContext(Context, ContextData);

	if (bSuccess && ContextData.ValueType && ContextData.ValueType->IsChildOf(UEnvQueryItemType_ActorBase::StaticClass()))
	{
		UEnvQueryItemType_ActorBase* DefTypeOb = (UEnvQueryItemType_ActorBase*)ContextData.ValueType->GetDefaultObject();
		const uint16 DefTypeValueSize = DefTypeOb->GetValueSize();
		uint8* RawData = ContextData.RawData.GetTypedData();

		Data.Init(ContextData.NumValues);
		for (int32 i = 0; i < ContextData.NumValues; i++)
		{
			Data[i] = DefTypeOb->GetActor(RawData);
			RawData += DefTypeValueSize;
		}
	}

	return bSuccess;
}
Exemplo n.º 2
0
//----------------------------------------------------------------------//
// FEnvQueryResult
//----------------------------------------------------------------------//
AActor* FEnvQueryResult::GetItemAsActor(int32 Index) const
{
	if (Items.IsValidIndex(Index) &&
		ItemType->IsChildOf(UEnvQueryItemType_ActorBase::StaticClass()))
	{
		UEnvQueryItemType_ActorBase* DefTypeOb = static_cast<UEnvQueryItemType_ActorBase*>(ItemType->GetDefaultObject());
		return DefTypeOb->GetActor(RawData.GetData() + Items[Index].DataOffset);
	}

	return nullptr;
}
Exemplo n.º 3
0
void FEnvQueryResult::GetAllAsActors(TArray<AActor*>& OutActors) const
{
	if (ItemType->IsChildOf(UEnvQueryItemType_ActorBase::StaticClass()) && Items.Num() > 0)
	{
		UEnvQueryItemType_ActorBase* DefTypeOb = static_cast<UEnvQueryItemType_ActorBase*>(ItemType->GetDefaultObject());
		
		OutActors.Reserve(OutActors.Num() + Items.Num());

		for (const FEnvQueryItem& Item : Items)
		{
			OutActors.Add(DefTypeOb->GetActor(RawData.GetData() + Item.DataOffset));
		}
	}
}