|  |  | @ -168,7 +168,7 @@ static void ClearExampleResources(char **resPaths); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Add/remove VS project (.vcxproj) tofrom existing VS solution (.sln) | 
		
	
		
			
			|  |  |  | static int AddVSProjectToSolution(const char *projFile, const char *slnFile, const char *category); | 
		
	
		
			
			|  |  |  | //static int RemoveVSProjectFromSolution(const char *projFile, const char *slnFile, const char *category); | 
		
	
		
			
			|  |  |  | static int f">RemoveVSProjectFromSolution(const char *projFile, const char *slnFile, const char *category); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Generate unique UUID v4 string | 
		
	
		
			
			|  |  |  | // Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} | 
		
	
	
		
			
				|  |  | @ -770,11 +770,8 @@ int main(int argc, char *argv[]) | 
		
	
		
			
			|  |  |  | FileRemove(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName)); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Edit: raylib/projects/VS2022/raylib.sln --> Remove example project | 
		
	
		
			
			|  |  |  | //--------------------------------------------------------------------------- | 
		
	
		
			
			|  |  |  | // TODO: Remove project from solution | 
		
	
		
			
			|  |  |  | //RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), | 
		
	
		
			
			|  |  |  | //    TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath)); | 
		
	
		
			
			|  |  |  | //--------------------------------------------------------------------------- | 
		
	
		
			
			|  |  |  | RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), | 
		
	
		
			
			|  |  |  | TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exCategory); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Remove: raylib.com/examples/<category>/<category>_example_name.html | 
		
	
		
			
			|  |  |  | // Remove: raylib.com/examples/<category>/<category>_example_name.data | 
		
	
	
		
			
				|  |  | @ -819,6 +816,22 @@ int main(int argc, char *argv[]) | 
		
	
		
			
			|  |  |  | int exListLen = (int)strlen(exList); | 
		
	
		
			
			|  |  |  | strcpy(exListUpdated, exList); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Copy examples list into an update list | 
		
	
		
			
			|  |  |  | // NOTE: Checking and removing duplicate entries | 
		
	
		
			
			|  |  |  | int lineCount = 0; | 
		
	
		
			
			|  |  |  | char **exListLines = LoadTextLines(exList, &lineCount); | 
		
	
		
			
			|  |  |  | int exListUpdatedOffset = 0; | 
		
	
		
			
			|  |  |  | exListUpdatedOffset = sprintf(exListUpdated, "%s\n", exListLines[0]); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | for (int i = 1; i < lineCount; i++) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | if ((TextFindIndex(exListUpdated, exListLines[i]) == -1) ||  (exListLines[i][0] == '#')) | 
		
	
		
			
			|  |  |  | exListUpdatedOffset += sprintf(exListUpdated + exListUpdatedOffset, "%s\n", exListLines[i]); | 
		
	
		
			
			|  |  |  | else listUpdated = true; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | UnloadTextLines(exListLines); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | for (unsigned int i = 0; i < list.count; i++) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | if ((strcmp("examples_template", GetFileNameWithoutExt(list.paths[i])) != 0) &&  // HACK: Skip "examples_template" | 
		
	
	
		
			
				|  |  | @ -859,8 +872,6 @@ int main(int argc, char *argv[]) | 
		
	
		
			
			|  |  |  | int exCollectionCount = 0; | 
		
	
		
			
			|  |  |  | rlExampleInfo *exCollection = LoadExamplesData(exCollectionFilePath, "ALL", false, &exCollectionCount); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // TODO: Validate: Check duplicate entries in collection list? | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Set status information for all examples, using "status" field in the struct | 
		
	
		
			
			|  |  |  | for (int i = 0; i < exCollectionCount; i++) | 
		
	
		
			
			|  |  |  | { | 
		
	
	
		
			
				|  |  | @ -2149,6 +2160,16 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, con | 
		
	
		
			
			|  |  |  | return result; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Remove VS project (.vcxproj) to existing VS solution (.sln) | 
		
	
		
			
			|  |  |  | static int RemoveVSProjectFromSolution(const char *projFile, const char *slnFile, const char *category) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | int result = 0; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // TODO: Remove project from solution file | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return result; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Generate unique UUID v4 string | 
		
	
		
			
			|  |  |  | // Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1} | 
		
	
		
			
			|  |  |  | static const char *GenerateUUIDv4(void) | 
		
	
	
		
			
				|  |  | @ -2188,6 +2209,8 @@ static void UpdateSourceMetadata(const char *exSrcPath, const rlExampleInfo *inf | 
		
	
		
			
			|  |  |  | char exDescription[256] = { 0 };    // Example description: example text line #3 | 
		
	
		
			
			|  |  |  | char exTitle[64] = { 0 };           // Example title: fileName without extension, replacing underscores by spaces | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // TODO: Update source code metadata | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Update example header title (line #3 - ALWAYS) | 
		
	
		
			
			|  |  |  | // String: "*   raylib [shaders] example - texture drawing" | 
		
	
		
			
			|  |  |  |  | 
		
	
	
		
			
				|  |  | @ -2305,12 +2328,11 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Get text between two strings | 
		
	
		
			
			|  |  |  | // NOTE: Using static string to return result, MAX: 1024 bytes | 
		
	
		
			
			|  |  |  | static char *GetTextBetween(const char *text, const char *begin, const char *end) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | #define MAX_TEXT_BETWEEN_SIZE   1024 | 
		
	
		
			
			|  |  |  | #define MAX_TEXT_BETWEEN_SIZE   1024 | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | static char between[MAX_TEXT_BETWEEN_SIZE] = { 0 }; | 
		
	
		
			
			|  |  |  | memset(between, 0, MAX_TEXT_BETWEEN_SIZE); | 
		
	
	
		
			
				|  |  |  |