Interfaces, Blueprint Library and RPC calls.

the resson for them beeing virtual is becuse they simply need to be.
I prefer them not to be virtual but if I try to i get the following error.


error : In SoundAndParticleInterface: Interface functions that are not BlueprintImplementableEvents must be declared 'virtual'

Base defenition is in ISoundAndParticleInterface::


void ISoundAndParticleInterface::SERVER_PlaySoundForEveryoneAtLocation_Implementation(AActor* ParentActor, USoundCue* SoundToPlay, const FVector & LocationToPlayAt, FName AttachName, bool bFollow, float VolumeMultiplier, float PitchMultiplier)
{
	// Server calls the multi cast delegate that plays the sound on server and all clients applicable.
	MULTI_PlaySoundForEveryoneAtLocation(ParentActor, SoundToPlay, LocationToPlayAt, AttachName, bFollow, VolumeMultiplier, PitchMultiplier);
}

bool ISoundAndParticleInterface::SERVER_PlaySoundForEveryoneAtLocation_Validate(AActor* ParentActor, USoundCue* SoundToPlay, const FVector & LocationToPlayAt, FName AttachName, bool bFollow, float VolumeMultiplier, float PitchMultiplier)
{
	return true;
}

Am probeboly doing something stupid, or its not meant to work by design i just like to know for sure.