public PhysicsCore(ReadOnlyTargetRules Target) : base(Target)
    {
        PublicIncludePaths.Add("Runtime/PhysicsCore/Public");

        PrivateDependencyModuleNames.AddRange(
            new string[] {
            "Core",
            "CoreUObject"
        }
            );

        PublicDependencyModuleNames.AddRange(
            new string[] {
            "DeveloperSettings"
        }
            );

        SetupModulePhysicsSupport(Target);


        // SetupModulePhysicsSupport adds a dependency on PhysicsCore, but we are PhysicsCore!
        PublicIncludePathModuleNames.Remove("PhysicsCore");
        PublicDependencyModuleNames.Remove("PhysicsCore");

        if (Target.bCompileChaos == false && Target.bUseChaos == false)
        {
            if (Target.bCompilePhysX)
            {
                // Not ideal but as this module publicly exposes PhysX types
                // to other modules when PhysX is enabled it requires that its
                // public files have access to PhysX includes
                PublicDependencyModuleNames.Add("PhysX");
            }

            if (Target.bCompileAPEX)
            {
                PublicDependencyModuleNames.Add("APEX");
            }
        }

        PrivateDefinitions.Add("CHAOS_INCLUDE_LEVEL_1=1");
    }