| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -167,8 +167,8 @@ static char **ScanExampleResources(const char *filePath, int *resPathCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			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 AddVSProjectToSolution(const char *slnFile, const char *projFile, const char *category); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int RemoveVSProjectFromSolution(const char *slnFile, const char *exName); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Generate unique UUID v4 string  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Output format: {9A2F48CC-0DA8-47C0-884E-02E37F9BE6C1}  | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -563,8 +563,8 @@ int main(int argc, char *argv[]) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Edit: raylib/projects/VS2022/raylib.sln --> Add new example project | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // WARNING: This function uses TextFormat() extensively inside, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // we must store provided file paths because pointers will be overwriten | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName),  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                exVSProjectSolutionFile, exCategory); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            AddVSProjectToSolution(exVSProjectSolutionFile,  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName), exCategory); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            //------------------------------------------------------------------------------------------------ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Recompile example (on raylib side) | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -639,7 +639,7 @@ int main(int argc, char *argv[]) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                FileTextReplace(exCollectionFilePath, TextFormat("%s;%s", exCategory, exName),  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    TextFormat("%s;%s", exRecategory, exRename)); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                // TODO: Move example resources from <src_category>/resources to <dst_category>/resources | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                // TODO: Move example resources from <exCategory>/resources to <exRecategory>/resources | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                // WARNING: Resources can be shared with other examples in the category | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                // Edit: Rename example code file (copy and remove) | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -684,7 +684,8 @@ int main(int argc, char *argv[]) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            FileCopy(TextFormat("%s/%s/%s.js", exBasePath, exRecategory, exRename), | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                TextFormat("%s/%s/%s.js", exWebPath, exRecategory, exRename)); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Create commit with changes (local) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            /* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Create GitHub commit with changes (local) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            putenv("PATH=%PATH%;C:\\Program Files\\Git\\bin"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            ChangeDirectory("C:\\GitHub\\raylib"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            system("git --version"); | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -696,9 +697,9 @@ int main(int argc, char *argv[]) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            system("git add -A"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            result = system(TextFormat("git commit -m \"REXM: RENAME: example: `%s` --> `%s`\"", exName, exRename)); // Commit changes (only tracked files) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (result != 0) LOG("WARNING: Error committing changes\n"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            //result = system("git push"); // Push to the remote (origin, current branch) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            //if (result != 0) LOG("WARNING: Error pushing changes\n"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            */ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case OP_REMOVE:     // Remove | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -770,8 +771,7 @@ 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 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exName),  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exCategory); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            RemoveVSProjectFromSolution(TextFormat("%s/../projects/VS2022/raylib.sln", exBasePath), exName); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			             | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Remove: raylib.com/examples/<category>/<category>_example_name.html | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Remove: raylib.com/examples/<category>/<category>_example_name.data | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -830,7 +830,7 @@ int main(int argc, char *argv[]) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                else listUpdated = true; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            UnloadTextLines(exListLines); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            UnloadTextLines(exListLines, lineCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            for (unsigned int i = 0; i < list.count; i++) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1047,8 +1047,8 @@ int main(int argc, char *argv[]) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        // Add project (.vcxproj) to raylib solution (.sln) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        if (exInfo->status & VALID_NOT_IN_VCXSOL) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            AddVSProjectToSolution(TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name),  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                                exVSProjectSolutionFile, exInfo->category); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            AddVSProjectToSolution(exVSProjectSolutionFile,  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                                TextFormat("%s/../projects/VS2022/examples/%s.vcxproj", exBasePath, exInfo->name), exInfo->category); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            exInfo->status &= ~VALID_NOT_IN_VCXSOL; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        } | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1691,7 +1691,7 @@ static rlExampleInfo *LoadExamplesData(const char *fileName, const char *categor | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        UnloadTextLines(lines); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        UnloadTextLines(lines, lineCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        UnloadFileText(text); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2049,7 +2049,7 @@ static void ClearExampleResources(char **resPaths) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			//  - "dotnet" tool (C# projects only) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			//  - "devenv" tool (no adding support, only building) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// It must be done manually editing the .sln file | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int AddVSProjectToSolution(const char *projFile, const char *slnFile, const char *category) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int AddVSProjectToSolution(const char *slnFile, const char *projFile, const char *category) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int result = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2164,11 +2164,50 @@ static int AddVSProjectToSolution(const char *projFile, const char *slnFile, con | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Remove VS project (.vcxproj) to existing VS solution (.sln) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int RemoveVSProjectFromSolution(const char *projFile, const char *slnFile, const char *category) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int RemoveVSProjectFromSolution(const char *slnFile, const char *exName) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int result = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // TODO: Remove project from solution file | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Lines to be removed from solution file: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    //Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_values", "examples\core_random_values.vcxproj", "{B332DCA8-3599-4A99-917A-82261BDC27AC}" | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    //EndProject | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // All lines starting with: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    //"\t\t{B332DCA8-3599-4A99-917A-82261BDC27AC}." | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    char *slnText = LoadFileText(slnFile); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    char *slnTextUpdated = (char *)RL_CALLOC(REXM_MAX_BUFFER_SIZE, 1); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int lineCount = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    char **lines = LoadTextLines(slnText, &lineCount); // WARNING: Max 512 lines, we need +4000! | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    char uuid[38] = { 0 }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    strcpy(uuid, "ABCDEF00-0123-4567-89AB-000000000012"); // Temp value | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int textUpdatedOfsset = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int exNameLen = strlen(exName); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    for (int i = 0, index = 0; i < lineCount; i++) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        index = TextFindIndex(lines[i], exName); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (index > 0) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Found line with project --> get UUID | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            strncpy(uuid, lines[i] + index + exNameLen*2 + 26, 36); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			             | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Skip copying line and also next one | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            i++; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        else | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (TextFindIndex(lines[i], uuid) == -1) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                textUpdatedOfsset += sprintf(slnTextUpdated + textUpdatedOfsset, "%s\n", lines[i]); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    SaveFileText(slnFile, slnTextUpdated); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    UnloadTextLines(lines, lineCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    UnloadFileText(slnText); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(slnTextUpdated); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    return result; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2303,7 +2342,7 @@ static void UpdateWebMetadata(const char *exHtmlPath, const char *exFilePath) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        char **lines = LoadTextLines(exText, &lineCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        int lineLength = (int)strlen(lines[2]); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        strncpy(exDescription, lines[2] + 4, lineLength - 4); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        UnloadTextLines(lines); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        UnloadTextLines(lines, lineCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        UnloadFileText(exText); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        // Update example.html required text | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |