I have been trying to make my function available to use in my blueprints as an overridable function. I couldn’t see it in my list of overridable functions, so I tried to call it and it appeared as a pure function. I don’t know why this is happening.
Const functions are always considered pure by the Unreal Build tool. Since they are not supposed to modify the members of the class (except for mutable varaibles, which you should use exceptionally), there is no need for the execution pin to go throught them.
Have you tried changing your *.h to be “virtual void Name (Parameters) [override];”. I am away from my game laptop but if you follow the construct of the BeginPlay syntax you should get the same results.
I am assuming you already have a UFUNCTION defined above the declaration.
UFUNCTION(BlueprintCallable)
virtual void FunctionName(int32 Parameter);
If you look at the first error when building AI_Char.cpp you will see that the function GetActorEyesViewPoint was not found in the base class, or it was not declared as virtual in the base class.
Another thing, the implementation of GetActorEyesViewPoint does not have the const qualifier. Always remembers that declaration and definition of a function needs to match. Either remove the const or add one in the Cpp file
First: Add BlueprintNativeEvent to the UFUNCTION(), then in the .cpp, rename the definition to AAI_Char::GetPerceptionLocRot_Implementation. You should keep the BlueprintCallable specifier there also.
Then, you should add BlueprintPure=false to the UFUNCTION(), it will force the compiler to include the Execution Pins again.
This can be important because BlueprintPure outputs are not cached (they are re-evaluated for every execute pulse). The CPP compiled method will also retain the optimizations the compiler can use with const methods.