x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Unreal 4.6 Function is hidden and inaccessible

There seems to be a new feature in Unreal 4.6

I can't drag and drop functions from my Favorites Menu oder the Find a Node Menu like i used to. Instead i often get an Error Message: Function is hidden and inaccessible See Picture in the Attachment

For Example when i want to drop the "Get Actor Location" Function in my PlayerController Class, i can't do this anymore. Also i can't duplicate it any more. I can get the function i want if i pull if from the "Return Value" but i would rather just drag and drop it from my Favorites Menu.

Is there a way to disable this new feature ? In 4.5 i could just drag and drop everything from my Palette on the right which was way more convenient.

alt text

Product Version: Not Selected
Tags:
more ▼

asked Dec 11 '14 at 12:40 AM in Blueprint Scripting

avatar image

Gaara
51 2 5 11

(comments are locked)
10|2000 characters needed characters left

3 answers: sort voted first

Hi Gaara,

Some nodes are marked as 'not Blueprint Spawnable' in certain blueprint classes. The reason behind this is they're Context Sensitive and will only work with other specific nodes. This is to protect your project from compile errors or even becoming corrupted. These nodes also aren't allowed to be copied/duplicated because it has been found to sometimes cause errors as well.

Cheers,

TJ

more ▼

answered Dec 11 '14 at 09:07 PM

avatar image

TJ V ♦♦ STAFF
41.2k 1009 183 493

avatar image Gaara Dec 13 '14 at 02:08 AM

Thanks for your answer. But is there any way to disable this "feature" ? I really hate it!

avatar image TJ V ♦♦ STAFF Dec 15 '14 at 06:47 PM

Unfortunately there isn't a way to disable this feature in the editor. You could however alter the source code if you are using the Github version of the editor.

After looking into this issue further, it looks like some of the nodes that were effected weren't meant to be. Including the GetActorLocation node. It's been fixed in our latest internal build so you should see this corrected in a future update.

avatar image Gaara Dec 17 '14 at 12:25 PM

Thank you for answering and looking into the issue further! Can't wait for the new update. I have been impressed with the great support. Keep on rocking!

(comments are locked)
10|2000 characters needed characters left

CORRECTION BELOW I am working in C++ and hit the GetActorLocation is hidden problem. After diving into the Unreal souce code (4.7.0) I found that APlayerState is a subclass of AInfo, which is a subclass of AActor. So this ugly code appears to have worked so far. It in effect forces the GetActorLocation to get un-hidden. (I'm finding the nearest player to a NPC Character in the game.) Maybe there is a more elegant way?

     float d2 = NO_PLAYER_DISTANCE * NO_PLAYER_DISTANCE;
     APlayerState * nearestPlayer = NULL;
 
     for (int i = 0; i < GetWorld()->GetGameState()->PlayerArray.Num(); i++)
     {
         // Known bug in Unreal. ** NO ITS NOT! **
         APlayerState * pst = GetWorld()->GetGameState()->PlayerArray[i];
         // So horribly violate encapsulation.
         AActor * act = (AActor *)pst;
         float dSq = FVector::DistSquared(act->GetActorLocation(), GetActorLocation());
         if (dSq < d2)
         {
             d2 = dSq;
             nearestPlayer = pst;
         }
     }

CORRECTION

Turns out the PlayerState is 'global' in the world and does not track the location of the player's Character. Thus correctly, GetActorLocation is hidden.

So you get the Character (possibly sub-class of Character) of the players.

     float d2 = NO_PLAYER_DISTANCE * NO_PLAYER_DISTANCE;
     ASurvivorCharacter * nearestPlayer = NULL;
 
     for ( TActorIterator<ASurvivorCharacter> i(GetWorld()); i; ++i )
     {
         FVector v = i->GetActorLocation();
         float dSq = FVector::DistSquared(v, GetActorLocation());
         if (dSq < d2)
         {
             d2 = dSq;
             nearestPlayer = *i;
             wanderDestination = v;
         }
     }
 
     if (nearestPlayer != NULL)
     {
         NearestPlayerDistance = FMath::Sqrt(d2);
         NearestPlayerFractionalDistance = FMath::Clamp( NearestPlayerDistance / MaxActiveDistance, 0.0f, 1.0f );
         //UE_LOG(TDLLog, Log, TEXT("AZedCharacter::SetupNearestPlayer best %f"), NearestPlayerDistance);
         return true;
     }



more ▼

answered Jan 16 '15 at 07:03 AM

avatar image

SND R Keene
948 29 118 112

(comments are locked)
10|2000 characters needed characters left
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question