How to communicate and get access to other scripts in C++?

You are correct about the explicit offset of the .h file and moving it breaks your code.

What you can do is … put following in your "Project.Build.cs"file. This code walks through all your project code directories and adds them to your include paths.

Add this C# function to the “Project : ModuleRules” class.

  /*
    * IncludeSubDirectoriesRecursive() 
    * - automatically adds all code folders to "PublicIncludePaths"
    * - so users will not have to explicitly offset all .h includes
    */
	private void IncludeSubDirectoriesRecursive(string baseDirectory, string DirectoryPathToSearch)
    {
        string[] allDirectories = Directory.GetDirectories(DirectoryPathToSearch);
        foreach (string nextDirectory in allDirectories)
        {
            string relativePath = Path.GetRelativePath(baseDirectory, nextDirectory);
            Console.WriteLine("Adding include path: " + relativePath);
            PublicIncludePaths.Add(relativePath);
            IncludeSubDirectoriesRecursive(baseDirectory, nextDirectory);
        }
    }

Then in the same file in the “ProjectName : base” function add the following:

        // include all code directories in this project
        // so users do not have to explicitly offset all include files
        string baseCodeDirectory = Path.Combine(ModuleDirectory, "..\\");
		Console.WriteLine("Including all directories for " + ModuleDirectory.ToString());
		IncludeSubDirectoriesRecursive(baseCodeDirectory, baseCodeDirectory);

If it works correctly, in VisualStudio output you will see "“Adding include path: foldeName” for every code folder in your project. Now you can just Include “BaseItem.h” no matter where it is in your project code. No explicit offset needed.

1 Like