FlatRedBall.Glue.ProjectManager.AddFileToContentProject C# (CSharp) Method

AddFileToContentProject() private static method

private static AddFileToContentProject ( ProjectBase project, bool useContentPipeline, bool shouldLink, string fileToAddAbsolute ) : void
project ProjectBase
useContentPipeline bool
shouldLink bool
fileToAddAbsolute string
return void
        private static void AddFileToContentProject(ProjectBase project, bool useContentPipeline, bool shouldLink, string fileToAddAbsolute)
        {
            string relativeFileName = FileManager.MakeRelative(
                fileToAddAbsolute,
                FileManager.GetDirectory(project.ContentProject.FullFileName) + project.ContentProject.ContentDirectory);

            if (relativeFileName.StartsWith(ContentDirectoryRelative))
            {
                relativeFileName = relativeFileName.Substring(ContentDirectoryRelative.Length);
            }

            if (!useContentPipeline && project.ContentProject.IsFilePartOfProject(fileToAddAbsolute, BuildItemMembershipType.CompileOrContentPipeline))
            {
                ReferencedFileSave rfs = ObjectFinder.Self.GetReferencedFileSaveFromFile(fileToAddAbsolute);

                if (rfs != null)
                {
                    rfs.UseContentPipeline = false;
                    ContentPipelineHelper.ReactToUseContentPipelineChange(rfs);
                }

            }
            else if (useContentPipeline && project.ContentProject.IsFilePartOfProject(fileToAddAbsolute, BuildItemMembershipType.CopyIfNewer))
            {
                ReferencedFileSave rfs = ObjectFinder.Self.GetReferencedFileSaveFromFile(fileToAddAbsolute);

                if (rfs != null)
                {
                    rfs.UseContentPipeline = true;
                    ContentPipelineHelper.ReactToUseContentPipelineChange(rfs);
                }
            }
            else
            {
                project.ContentProject.AddContentBuildItem(
                    fileToAddAbsolute,
                    shouldLink ? SyncedProjectRelativeType.Linked : SyncedProjectRelativeType.Contained,
                    useContentPipeline);

            }

            PluginManager.ReceiveOutput("Added " + relativeFileName + " to project as content");
        }