コード例 #1
1
void UEnvQueryGenerator_ActorsOfClass::GenerateItems(FEnvQueryInstance& QueryInstance) const
{
	float RadiusValue = 0.0f;
	float DensityValue = 0.0f;

	UWorld* World = GEngine->GetWorldFromContextObject(QueryInstance.Owner.Get());
	// @TODO add some logging here
	if (World == NULL || QueryInstance.GetParamValue(Radius, RadiusValue, TEXT("Radius")) == false
		|| SearchedActorClass == NULL)
	{
		return;
	}

	const float RadiusSq = FMath::Square(RadiusValue);

	TArray<FVector> ContextLocations;
	QueryInstance.PrepareContext(SearchCenter, ContextLocations);

	for (TActorIterator<AActor> ItActor = TActorIterator<AActor>(World, SearchedActorClass); ItActor; ++ItActor)
	{
		for (int32 ContextIndex = 0; ContextIndex < ContextLocations.Num(); ++ContextIndex)
		{
			if (FVector::DistSquared(ContextLocations[ContextIndex], ItActor->GetActorLocation()) < RadiusSq)
			{
				QueryInstance.AddItemData<UEnvQueryItemType_Actor>(*ItActor);
				break;
			}
		}
	}
}
コード例 #2
0
ファイル: a_movingcamera.cpp プロジェクト: AkumaKing/Xeu
void AInterpolationPoint::FormChain ()
{
	if (flags & MF_AMBUSH)
		return;

	flags |= MF_AMBUSH;

	TActorIterator<AInterpolationPoint> iterator (args[3] + 256 * args[4]);
	Next = iterator.Next ();

	if (Next == this)	// Don't link to self
		Next = iterator.Next ();

	if (Next == NULL && (args[3] | args[4]))
		Printf ("Can't find target for camera node %d\n", tid);

	pitch = (signed int)((char)args[0]) * ANGLE_1;
	if (pitch <= -ANGLE_90)
		pitch = -ANGLE_90 + ANGLE_1;
	else if (pitch >= ANGLE_90)
		pitch = ANGLE_90 - ANGLE_1;

	if (Next != NULL)
		Next->FormChain ();
}
コード例 #3
0
void UEnvQueryGenerator_ActorsOfClass::GenerateItems(FEnvQueryInstance& QueryInstance) const
{
	SearchRadius.BindData(QueryInstance.Owner.Get(), QueryInstance.QueryID);
	float RadiusValue = SearchRadius.GetValue();

	UWorld* World = GEngine->GetWorldFromContextObject(QueryInstance.Owner.Get());
	if (World == NULL || SearchedActorClass == NULL)
	{
		return;
	}

	const float RadiusSq = FMath::Square(RadiusValue);

	TArray<FVector> ContextLocations;
	QueryInstance.PrepareContext(SearchCenter, ContextLocations);

	for (TActorIterator<AActor> ItActor = TActorIterator<AActor>(World, SearchedActorClass); ItActor; ++ItActor)
	{
		for (int32 ContextIndex = 0; ContextIndex < ContextLocations.Num(); ++ContextIndex)
		{
			if (FVector::DistSquared(ContextLocations[ContextIndex], ItActor->GetActorLocation()) < RadiusSq)
			{
				QueryInstance.AddItemData<UEnvQueryItemType_Actor>(*ItActor);
				break;
			}
		}
	}
}
コード例 #4
0
void ASkyPicker::PostBeginPlay ()
{
	ASkyViewpoint *box;
	Super::PostBeginPlay ();

	if (args[0] == 0)
	{
		box = NULL;
	}
	else
	{
		TActorIterator<ASkyViewpoint> iterator (args[0]);
		box = iterator.Next ();
	}

	if (box == NULL && args[0] != 0)
	{
		Printf ("Can't find SkyViewpoint %d for sector %td\n",
			args[0], Sector - sectors);
	}
	else
	{
		if (0 == (args[1] & 2))
		{
			Sector->SkyBoxes[sector_t::ceiling] = box;
			if (box == NULL) Sector->MoreFlags |= SECF_NOCEILINGSKYBOX;	// sector should ignore the level's default skybox
		}
		if (0 == (args[1] & 1))
		{
			Sector->SkyBoxes[sector_t::floor] = box;
			if (box == NULL) Sector->MoreFlags |= SECF_NOFLOORSKYBOX;	// sector should ignore the level's default skybox
		}
	}
	Destroy ();
}
コード例 #5
0
ファイル: a_movingcamera.cpp プロジェクト: AkumaKing/Xeu
void APathFollower::NewNode ()
{
	TActorIterator<AInterpolationSpecial> iterator (CurrNode->tid);
	AInterpolationSpecial *spec;

	while ( (spec = iterator.Next ()) )
	{
		P_ExecuteSpecial(spec->special, NULL, NULL, false, spec->args[0],
			spec->args[1], spec->args[2], spec->args[3], spec->args[4]);
	}
}
コード例 #6
0
void ALowerStackLookOnly::PostBeginPlay ()
{
	Super::PostBeginPlay ();
	TActorIterator<AUpperStackLookOnly> it (tid);
	Sector->CeilingSkyBox = it.Next();
	if (Sector->CeilingSkyBox != NULL)
	{
		Sector->CeilingSkyBox->Mate = this;
		Sector->CeilingSkyBox->PlaneAlpha = Scale (args[0], OPAQUE, 255);
	}
}
コード例 #7
0
ファイル: a_movingcamera.cpp プロジェクト: AkumaKing/Xeu
void APathFollower::PostBeginPlay ()
{
	// Find first node of path
	TActorIterator<AInterpolationPoint> iterator (args[0] + 256 * args[1]);
	AInterpolationPoint *node = iterator.Next ();
	AInterpolationPoint *prevnode;

	target = node;

	if (node == NULL)
	{
		Printf ("PathFollower %d: Can't find interpolation pt %d\n",
			tid, args[0] + 256 * args[1]);
		return;
	}

	// Verify the path has enough nodes
	node->FormChain ();
	if (args[2] & 1)
	{	// linear path; need 2 nodes
		if (node->Next == NULL)
		{
			Printf ("PathFollower %d: Path needs at least 2 nodes\n", tid);
			return;
		}
		lastenemy = NULL;
	}
	else
	{	// spline path; need 4 nodes
		if (node->Next == NULL ||
			node->Next->Next == NULL ||
			node->Next->Next->Next == NULL)
		{
			Printf ("PathFollower %d: Path needs at least 4 nodes\n", tid);
			return;
		}
		// If the first node is in a loop, we can start there.
		// Otherwise, we need to start at the second node in the path.
		prevnode = node->ScanForLoop ();
		if (prevnode == NULL || prevnode->Next != node)
		{
			lastenemy = target;
			target = node->Next;
		}
		else
		{
			lastenemy = prevnode;
		}
	}
}
コード例 #8
0
ファイル: Avatar.cpp プロジェクト: nzayatz14/MazeGameEnhanced
// Called every frame
void AAvatar::Tick( float DeltaTime )
{
    Super::Tick( DeltaTime );
    
    //check for the win if the user has all of the items and hasn't won
    if(hasAllItems && !hasWon){
        
        //move player start to that location
        TActorIterator<AAvatarGameMode> ActorItr =TActorIterator<AAvatarGameMode>(GetWorld());
        
        if (ActorItr) {
            
            hasWon = ActorItr->checkForWin(hasWon, this->GetActorLocation());
        }
    }
    
}
コード例 #9
0
ファイル: a_movingcamera.cpp プロジェクト: floverdevel/zdoom
void AInterpolationPoint::FormChain ()
{
	if (flags & MF_AMBUSH)
		return;

	flags |= MF_AMBUSH;

	TActorIterator<AInterpolationPoint> iterator (args[3] + 256 * args[4]);
	Next = iterator.Next ();

	if (Next == this)	// Don't link to self
		Next = iterator.Next ();

	if (Next == NULL && (args[3] | args[4]))
		Printf ("Can't find target for camera node %d\n", tid);

	Angles.Pitch = (double)clamp<int>((signed char)args[0], -89, 89);

	if (Next != NULL)
		Next->FormChain ();
}
コード例 #10
0
ファイル: a_skies.cpp プロジェクト: Accusedbold/zdoom
void ASkyPicker::PostBeginPlay ()
{
	ASkyViewpoint *box;
	Super::PostBeginPlay ();

	if (args[0] == 0)
	{
		box = NULL;
	}
	else
	{
		TActorIterator<ASkyViewpoint> iterator (args[0]);
		box = iterator.Next ();
	}

	if (box == NULL && args[0] != 0)
	{
		Printf ("Can't find SkyViewpoint %d for sector %td\n", args[0], Sector - sectors);
	}
	else
	{
		int boxindex = P_GetSkyboxPortal(box);
		// Do not override special portal types, only regular skies.
		if (0 == (args[1] & 2))
		{
			if (Sector->GetPortalType(sector_t::ceiling) == PORTS_SKYVIEWPOINT)
				Sector->Portals[sector_t::ceiling] = boxindex;
		}
		if (0 == (args[1] & 1))
		{
			if (Sector->GetPortalType(sector_t::floor) == PORTS_SKYVIEWPOINT)
				Sector->Portals[sector_t::floor] = boxindex;
		}
	}
	Destroy ();
}
コード例 #11
0
void ASkyPicker::PostBeginPlay ()
{
	ASkyViewpoint *box;
	Super::PostBeginPlay ();

	if (args[0] == 0)
	{
		box = NULL;
	}
	else
	{
		TActorIterator<ASkyViewpoint> iterator (args[0]);
		box = iterator.Next ();
	}

	if (box == NULL && args[0] != 0)
	{
		Printf ("Can't find SkyViewpoint %d for sector %td\n",
			args[0], Sector - sectors);
	}
	else
	{
		if (0 == (args[1] & 2))
		{
			Sector->CeilingSkyBox = box;
		}
		if (0 == (args[1] & 1))
		{
			Sector->FloorSkyBox = box;
		}
	}
	// [BB] The server may not destroy the SkyPicker, otherwise he can't
	// inform the client about it during a full update.
	if( NETWORK_GetState() != NETSTATE_SERVER )
		Destroy ();
}
コード例 #12
0
ファイル: Avatar.cpp プロジェクト: nzayatz14/MazeGameEnhanced
void AAvatar::onHit(AActor *Self, AActor *neighbor, FVector NormalImpulse, const FHitResult &Hit)
{
  
    int row, col;
    FVector *AllTheItems;
    FVector2D MazeDimensions;
    // If the hero touched an item, drop it into his inventory and set it to found
    if(neighbor && (neighbor->GetActorLabel()).Contains( TEXT("itemBasic"), ESearchCase::CaseSensitive, ESearchDir::FromEnd )) {
        if(! (((AitemBasic*)neighbor)->found) ){
            ((AitemBasic*)neighbor)->found = true;
            row = ((AitemBasic*)neighbor)->GetMazeLocation().X;
            col = ((AitemBasic*)neighbor)->GetMazeLocation().Y;
            TActorIterator<AMaze> ActorItr =TActorIterator<AMaze>(GetWorld());
            if(ActorItr){
                AllTheItems = ActorItr->GetAllTheItems();
                MazeDimensions = ActorItr->GetMazeDimensions();
                for(int i=0; i< ((MazeDimensions.X>MazeDimensions.Y)?MazeDimensions.X-2:MazeDimensions.Y-2) ; i++){
                    if((int)(AllTheItems[i].X) == row && (int)(AllTheItems[i].Y) == col )
                        AllTheItems[i].Z = 1;
                }
            }
            neighbor->SetActorLocation( FVector(0, 0, -1000) );
            //increment itemBasic in Hero's Bag
            switch(((AitemBasic*)neighbor)->itemType){
                case 'A':
                    HeroBag->push("Pill");
                    Pill = true;
                    break;
                case 'B':
                    HeroBag->push("Pyramid");
                    Pill = false;
                    break;
                case 'C':
                    HeroBag->push("Macaroni");
                    Pill = false;
                    break;
                case 'D':
                    HeroBag->push("Moldy Cheese");
                    Pill= false;
                    break;
                default:
                    HeroBag->push("Trash");
                    Pill=false;
                    break;
            }
        }
        //check to see if all items have been found
        TActorIterator<AitemsSpawning> ActorItrItems =TActorIterator<AitemsSpawning>(GetWorld());
        if(ActorItrItems){
            if(ActorItrItems->allItemsFound() && !hasAllItems){
                hasAllItems = true;
                
                TActorIterator<AMaze> ActorItrMaze =TActorIterator<AMaze>(GetWorld());
                if(ActorItrMaze){
                    ActorItrMaze->openExit();
                }
            }
        }
    }

}
コード例 #13
-1
void ASkyPicker::PostBeginPlay ()
{
	ASkyViewpoint *box;
	Super::PostBeginPlay ();

	if (args[0] == 0)
	{
		box = NULL;
	}
	else
	{
		TActorIterator<ASkyViewpoint> iterator (args[0]);
		box = iterator.Next ();
	}

	if (box == NULL && args[0] != 0)
	{
		Printf ("Can't find SkyViewpoint %d for sector %td\n",
			args[0], Sector - sectors);
	}
	else
	{
		if (0 == (args[1] & 2))
		{
			Sector->CeilingSkyBox = box;
		}
		if (0 == (args[1] & 1))
		{
			Sector->FloorSkyBox = box;
		}
	}
	Destroy ();
}