How do plugins work in 4.4? Precompiled header error

I am getting this error when trying to update my plugins:

\RamaTCPReceiver\RamaTCPReceiverPrivatePCH.h.pch’ is not a valid precompiled header file

I used to use this structure:

RamaDialogueModule.cpp
RamaDialoguePrivatePCH.h


//module cpp
/*

	By Rama

*/
#include "RamaDialoguePrivatePCH.h"

DEFINE_LOG_CATEGORY(DiaLog)

IMPLEMENT_MODULE(FDefaultGameModuleImpl, RamaDialogue);



//pch
/*

	By Rama

*/
#pragma once

#include "Engine.h"
#include "RamaDialogueClasses.h"

DECLARE_LOG_CATEGORY_EXTERN(DiaLog, Log, All);


Then in my .cpp files I include:


#include "VictoryAIPrivatePCH.h"

What are we supposed to do now differently?

The above method has worked great all the way thru 4.3 :slight_smile:

Also:

Where did the source code go for all the engine plugins?

I just see header files!

Rama

Answering Self

Apparently the only change in 4.4 is that it is now manditory to include the interface file


/*

	By Rama

*/
#pragma once

#include "ModuleManager.h"


/**
 * The public interface to this module.  In most cases, this interface is only public to sibling modules 
 * within this plugin.
 */
class IVictoryAI : public IModuleInterface
{

public:

	/**
	 * Singleton-like access to this module's interface.  This is just for convenience!
	 * Beware of calling this during the shutdown phase, though.  Your module might have been unloaded already.
	 *
	 * @return Returns singleton instance, loading the module on demand if needed
	 */
	static inline IVictoryAI& Get()
	{
		return FModuleManager::LoadModuleChecked< IVictoryAI >( "VictoryAI" );
	}

	/**
	 * Checks to see if this module is loaded and ready.  It is only valid to call Get() if IsAvailable() returns true.
	 *
	 * @return True if the module is loaded and ready to use
	 */
	static inline bool IsAvailable()
	{
		return FModuleManager::Get().IsModuleLoaded( "VictoryAI" );
	}
};