Graph is linked to private object(s) in an external package

Howdy and good day everyone,

I get this error when trying to save or package a BP that has a C++ Child actor. The child actor is the

MyCharacter.h
MyCharacter.cpp

Found in this project.

I am not sure what changes to make to fix this, as I want the code to be used as a C++ derived BP.

If anyone has any feedback that would be greatly appreciated, thank you and take care.


Can’t save C:/…/FirstPersonCharacter.uasset: Graph is linked to private object(s) in an external package.
External Object(s):
SoundWaveProcedural_4

Try to find the chain of references to that object (may take some time)?

Original tutorial followed:
UE4 Voice Capture Volume and Playback (C++) - YouTube by @Ascentroid

Not an answer, but a follow up. The problem appears to be in the engine source code. Although, perhaps it’s not a problem. The USoundWaveProcedural class inherits from USoundWave. Looking at the tutorial in question, the following code (from tutorial) used to set the sound wave parameters is setting them as though they are public member variables. However, in the USoundWave.h where these are defined, they are not under a class access modifier (public, private, etc). It’s my understanding that if no access modifier is specified, the class members/methods are by default private. Could this be the problem?

VoiceCaptureSoundWaveProcedural = NewObject<USoundWaveProcedural>();
	VoiceCaptureSoundWaveProcedural->SampleRate = 22050;
	//VoiceCaptureSoundWaveProcedural->SampleRate = 16000;
	VoiceCaptureSoundWaveProcedural->NumChannels = 1;
	VoiceCaptureSoundWaveProcedural->Duration = INDEFINITELY_LOOPING_DURATION;
	VoiceCaptureSoundWaveProcedural->SoundGroup = SOUNDGROUP_Voice;
	VoiceCaptureSoundWaveProcedural->bLooping = false;
	VoiceCaptureSoundWaveProcedural->bProcedural = true;
	VoiceCaptureSoundWaveProcedural->Pitch = 0.85f;
	VoiceCaptureSoundWaveProcedural->Volume = 5.f;

Sample of relevant code from USoundWave.h showing no access modifier:

UCLASS(hidecategories=Object, editinlinenew, BlueprintType)
class ENGINE_API USoundWave : public USoundBase
{
	GENERATED_UCLASS_BODY()

	/** Platform agnostic compression quality. 1..100 with 1 being best compression and 100 being best quality. */
	UPROPERTY(EditAnywhere, Category=Compression, meta=(ClampMin = "1", ClampMax = "100"), AssetRegistrySearchable)
	int32 CompressionQuality;

	/** If set, when played directly (not through a sound cue) the wave will be played looping. */
	UPROPERTY(EditAnywhere, Category=SoundWave, AssetRegistrySearchable)
	uint32 bLooping:1;

	/** Whether this sound can be streamed to avoid increased memory usage */
	UPROPERTY(EditAnywhere, Category=Streaming)
	uint32 bStreaming:1;

	/** Priority of this sound when streaming (lower priority streams may not always play) */
	UPROPERTY(EditAnywhere, Category=Streaming, meta=(ClampMin=0))
	int32 StreamingPriority;

	/** Set to true for programmatically-generated, streamed audio. */
	uint32 bProcedural:1;

	/** Set to true for procedural waves that can be processed asynchronously. */
	uint32 bCanProcessAsync:1;

	/** Whether to free the resource data after it has been uploaded to the hardware */
	uint32 bDynamicResource:1;