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; } } } }
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 (); }
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; } } } }
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 (); }
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]); } }
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); } }
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; } } }
// 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()); } } }
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 (); }
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 (); }
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 (); }
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(); } } } } }
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 (); }