diff options
author | Paul Oliver <contact@pauloliver.dev> | 2024-02-29 19:04:34 +0100 |
---|---|---|
committer | Paul Oliver <contact@pauloliver.dev> | 2024-02-29 19:16:14 +0100 |
commit | e6ab4a8ed100d5d5b7611c74cf3ccd556f1f1d71 (patch) | |
tree | 129cf13c2f9b3eae54402300db4570815789a02a /plugins |
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/CppnExplorer/CppnExplorer.sublime-project | 41 | ||||
-rw-r--r-- | plugins/CppnExplorer/CppnExplorer.sublime-workspace | 1199 | ||||
-rw-r--r-- | plugins/CppnExplorer/Makefile | 19 | ||||
-rw-r--r-- | plugins/CppnExplorer/include/CppnExplorer.hpp | 129 | ||||
-rw-r--r-- | plugins/CppnExplorer/lib/.keep | 0 | ||||
-rw-r--r-- | plugins/CppnExplorer/obj/.keep | 0 | ||||
-rw-r--r-- | plugins/CppnExplorer/src/CppnExplorer.cpp | 549 | ||||
-rw-r--r-- | plugins/CppnExplorer/todolist.txt | 21 |
8 files changed, 1958 insertions, 0 deletions
diff --git a/plugins/CppnExplorer/CppnExplorer.sublime-project b/plugins/CppnExplorer/CppnExplorer.sublime-project new file mode 100644 index 0000000..dee3d7f --- /dev/null +++ b/plugins/CppnExplorer/CppnExplorer.sublime-project @@ -0,0 +1,41 @@ +{ + "build_systems": + [ + { + "cmd": + [ + "make", + "-C", + "${project_path}" + ], + "name": "Build" + }, + { + "cmd": + [ + "make", + "clean", + "-C", + "${project_path}" + ], + "name": "Clean" + } + ], + "folders": + [ + { + "file_exclude_patterns": + [ + "*.sublime-project", + "*.sublime-workspace" + ], + "folder_exclude_patterns": + [ + "obj", + "lib", + "Algorithm Documentation" + ], + "path": "." + } + ] +} diff --git a/plugins/CppnExplorer/CppnExplorer.sublime-workspace b/plugins/CppnExplorer/CppnExplorer.sublime-workspace new file mode 100644 index 0000000..cf691cc --- /dev/null +++ b/plugins/CppnExplorer/CppnExplorer.sublime-workspace @@ -0,0 +1,1199 @@ +{ + "auto_complete": + { + "selected_items": + [ + [ + "fiel", + "fieldGenerator" + ], + [ + "_ne", + "_neuralNetReady" + ], + [ + "_neu", + "_neuralNetReady" + ], + [ + "_neur", + "_neuralNet" + ], + [ + "setOu", + "setOutlineColor" + ], + [ + "PIX", + "PIXEL_SIZE" + ], + [ + "Neu", + "Neuron" + ], + [ + "IN", + "INPUT" + ], + [ + "setO", + "setOrigin" + ], + [ + "Uin", + "Uint8" + ], + [ + "PI", + "PIXEL_SIZE" + ], + [ + "Neur", + "Neuron" + ], + [ + "Bl", + "BlendAdd" + ], + [ + "_wi", + "_withNeuralNet" + ], + [ + "neura", + "neuralNetGenerator" + ], + [ + "neural", + "_neuralNetGenerator" + ], + [ + "_win", + "_windowOpen" + ], + [ + "eve", + "event" + ], + [ + "joi", + "joinable" + ], + [ + "win", + "_windowThread" + ], + [ + "grid", + "gridSpacing" + ], + [ + "Rende", + "RenderTarget" + ], + [ + "Render", + "RenderWindow" + ], + [ + "sr", + "srcNeuron" + ], + [ + "colo", + "colorMult" + ], + [ + "setOutl", + "setOutlineThickness" + ], + [ + "gri", + "gridClr" + ], + [ + "_sh", + "_showGrid" + ], + [ + "res", + "resolution" + ], + [ + "fie", + "field" + ], + [ + "fi", + "_field" + ], + [ + "out", + "outputAt" + ], + [ + "cpp", + "_cppn" + ], + [ + "_bia", + "_biasTexture" + ], + [ + "in", + "inputAt" + ], + [ + "INV", + "INV_WEIGHTS" + ], + [ + "col", + "colorInt" + ], + [ + "C", + "CircleShape" + ], + [ + "Neural", + "NeuralNet" + ], + [ + "_cur", + "_cursorPos" + ], + [ + "_cu", + "_cursorPos" + ], + [ + "prin", + "printWeights" + ], + [ + "Key", + "Keyboard" + ], + [ + "Cpp", + "CppnExplorer" + ], + [ + "co", + "Color" + ], + [ + "_is", + "_isLocked" + ], + [ + "Ne", + "Neuron" + ], + [ + "_re", + "_recentReplacement" + ], + [ + "re", + "relateIO" + ], + [ + "_in", + "_inputMap" + ], + [ + "en", + "endl" + ], + [ + "_ou", + "_output" + ], + [ + "_", + "_position" + ], + [ + "_out", + "_outputMap" + ], + [ + "pu", + "previousNeurons" + ], + [ + "tem", + "tempNeurons" + ], + [ + "def", + "default" + ], + [ + "gene", + "generateNeuralNet" + ], + [ + "c", + "const" + ], + [ + "ato", + "atomic_size_t" + ], + [ + "db", + "dbgFileName" + ], + [ + "dbg", + "dbgFileName" + ], + [ + "th", + "threadID" + ], + [ + "Pop", + "PopulationDefaults" + ], + [ + "Vec", + "Vector2D" + ], + [ + "wor", + "worldFile" + ], + [ + "ste", + "onStep" + ], + [ + "pr", + "print" + ], + [ + "str", + "struct struct" + ], + [ + "SE", + "SELECT_LOAD" + ], + [ + "SELE", + "SELECT_NEW" + ], + [ + "pri", + "printCommand" + ], + [ + "com", + "command" + ], + [ + "arg", + "argv" + ], + [ + "org", + "organismIdx" + ], + [ + "spe", + "specieSize" + ], + [ + "nod", + "nodeType" + ], + [ + "loa", + "loadGenome" + ], + [ + "load", + "loadPopulationPrms" + ], + [ + "getCHa", + "getChampionIdx" + ], + [ + "cham", + "champIdx" + ], + [ + "size", + "size_t" + ], + [ + "file", + "fileName" + ], + [ + "fil", + "fileName" + ], + [ + "Po", + "Population" + ], + [ + "File", + "FileStream" + ], + [ + "Fil", + "FileStream" + ], + [ + "Inp", + "InputFile" + ], + [ + "pop", + "population" + ], + [ + "isO", + "isOrganismBeingGenerated" + ], + [ + "isA", + "isAnyOrganismBeingGenerated" + ], + [ + "organ", + "organismIsBeingGenerated" + ], + [ + "_orga", + "_organismsBeingGenerated" + ], + [ + "is", + "isBeingGenerated" + ], + [ + "_or", + "_organismsBeingGenerated" + ], + [ + "_org", + "_organismIsLocked" + ], + [ + "_isL", + "_isLocked" + ], + [ + "organi", + "_organismsBeingGenerated" + ], + [ + "_lock", + "_lockedOrganisms" + ], + [ + "isL", + "isLockedByReplacement" + ], + [ + "si", + "size_t" + ], + [ + "_pop", + "_populationLock" + ], + [ + "leve", + "levelToSegment" + ], + [ + "inc", + "include" + ], + [ + "beg", + "begin" + ], + [ + "dis", + "distance" + ], + [ + "emp", + "emplace_back" + ], + [ + "mu", + "mutex" + ], + [ + "incl", + "inclIter" + ], + [ + "siz", + "size_t" + ], + [ + "cr", + "crntInclusions" + ], + [ + "sour", + "sourceNeuron" + ], + [ + "neuro", + "_neurons" + ], + [ + "syn", + "synTot" + ], + [ + "thre", + "threadVec" + ], + [ + "_organi", + "_allOrganisms" + ], + [ + "poo", + "poorOrganism" + ], + [ + "fta", + "fatherIdx" + ], + [ + "fath", + "fatherIdx" + ], + [ + "fat", + "fatherIdx" + ], + [ + "orga", + "organismReplaced" + ], + [ + "repla", + "replaceOrganism" + ], + [ + "ran", + "randWeight" + ], + [ + "_cpp", + "_cppnInputs" + ], + [ + "_i", + "_innovationNo" + ], + [ + "gen", + "geneIdx" + ], + [ + "ra", + "randSeed" + ], + [ + "_o", + "_output" + ] + ] + }, + "buffers": + [ + { + "file": "todolist.txt", + "settings": + { + "buffer_size": 1115, + "line_ending": "Windows" + } + }, + { + "file": "include/CppnExplorer.hpp", + "settings": + { + "buffer_size": 4318, + "line_ending": "Windows" + } + }, + { + "file": "src/CppnExplorer.cpp", + "settings": + { + "buffer_size": 17141, + "line_ending": "Windows" + } + } + ], + "build_system": "Build", + "command_palette": + { + "height": 375.0, + "selected_items": + [ + [ + "tas", + "Tasks: New document" + ], + [ + "TAS", + "Tasks: New document" + ], + [ + "", + "Build: Build" + ], + [ + "ops", + "View: Toggle Open Files in Side Bar" + ] + ], + "width": 378.0 + }, + "console": + { + "height": 118.0, + "history": + [ + ] + }, + "distraction_free": + { + "menu_visible": true, + "show_minimap": false, + "show_open_files": false, + "show_tabs": false, + "side_bar_visible": false, + "status_bar_visible": false + }, + "expanded_folders": + [ + "/C/Projects/Libraries/HyperNeat/plugins/CppnExplorer" + ], + "file_history": + [ + "/C/Projects/Applications/NeuroRacers/bin/current.population", + "/C/Projects/Libraries/HyperNeat/plugins/CppnExplorer/Makefile", + "/C/Users/Paul/Downloads/ID/Adobe Indesign CS6/DLL FILE/IMPORTANT.txt", + "/C/Users/Paul/Downloads/ID/Adobe Indesign CS6/INSTALLING INSTRUCTIONS.txt", + "/C/Projects/Libraries/HyperNeat/plugins/CppnExplorer/CppnExplorer.sublime-project", + "/C/Projects/Libraries/HyperNeat/plugins/CppnExplorer/src/CppnExplorer.cpp", + "/C/Projects/Libraries/HyperNeat/plugins/CppnExplorer/include/CppnExplorer.hpp", + "/C/TBB/include/tbb/atomic.h", + "/C/Program Files (x86)/Orbiter/Modules/D3D11Shaders/Planet_Clouds.fx", + "/C/Program Files (x86)/Orbiter/Modules/D3D11Shaders/Planet.fx", + "/C/Program Files (x86)/Orbiter/Config/NGPlanetConfig/Earth_ng.cfg", + "/C/Program Files (x86)/Orbiter/Config/Jupiter.cfg", + "/C/Program Files (x86)/Orbiter/Config/NGPlanetConfig/Titan_ng.cfg", + "/C/Program Files (x86)/Orbiter/D3D11Client.cfg", + "/C/Projects/.git", + "/C/Projects/New Text Document.txt", + "/C/Users/Paul/Downloads/orbiter100830/Config/Mars.cfg", + "/C/Projects/Libraries/HyperNeat/plugins/CppnExplorer/todo", + "/C/Users/Paul/Downloads/orbiter100830/Config/Earth.cfg", + "/C/Users/Paul/Downloads/asmi-ovp-1f2ee85a8579/asmi-ovp-1f2ee85a8579/D3D11CLIENT README.txt", + "/C/Users/Paul/Downloads/orbiter100830/readme.txt", + "/C/Users/Paul/Downloads/orbiter100830/patch.txt", + "/C/Sublime Text 3/Data/Packages/User/Preferences.sublime-settings", + "/C/Users/Paul/Documents/Trabajo/Will Bourdreau/Laurieta Rose/NextStepsBoat.txt", + "/C/Projects/Libraries/HyperNeat/plugins/cppn.explorer/src/CppnExplorer.cpp", + "/C/Projects/Libraries/HyperNeat/plugins/cppn.explorer/Makefile", + "/C/Projects/Libraries/HyperNeat/plugins/cppn.explorer/include/CppnExplorer.hpp", + "/C/Projects/Libraries/HyperNeat/plugins/cppn.explorer/cppn.explorer.sublime-project", + "/C/Projects/Libraries/HyperNeat/HyperNeat.sublime-project", + "/C/Projects/Libraries/HyperNeat/src/Organism.cpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Population.hpp", + "/C/Projects/Libraries/HyperNeat/src/Population.cpp", + "/C/Projects/Libraries/HyperNeat/src/NeuralNet.cpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/NeuralNet.hpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Organism.hpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Utils/Atomic.hpp", + "/C/Projects/Libraries/HyperNeat/Makefile", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Utils/Future.hpp", + "/C/Projects/Libraries/HyperNeat/todo", + "/C/Users/Paul/Downloads/tbb42_20130725oss_win/tbb42_20130725oss/include/tbb/tbb.h", + "/C/Users/Paul/Downloads/tbb41_20130516oss_src/tbb41_20130516oss_src/tbb41_20130516oss/README.txt", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Utils/Vector.hpp", + "/C/Projects/Libraries/HyperNeat/src/Utils/Point.cpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Utils/Point.hpp", + "/C/Projects/Libraries/HyperNeat/src/QuadTree.cpp", + "/C/Projects/Libraries/HyperNeat/src/Utils/LoadFile.cpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Utils/Atom.hpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Utils/Vector2D.hpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Debugger.hpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Utils/Thread.hpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Utils/Mutex.hpp", + "/C/Projects/Libraries/HyperNeat/src/Cppn.cpp", + "/C/Projects/Libraries/HyperNeat/src/Cppn.s", + "/C/Users/Paul/Downloads/FitVids.js-master/FitVids.js-master/tests.html", + "/C/Users/Paul/Downloads/FitVids.js-master/FitVids.js-master/CONTRIBUTING.md", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/StackMacros.hpp", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/PopulationPrms.hpp", + "/C/Users/Paul/Downloads/Ida Pro v6.1/READ ME !!.txt", + "/C/Projects/Libraries/HyperNeat/src/QueryPlanePrms.cpp", + "/C/Projects/Libraries/HyperNeat/src/Utils/SaveFile.cpp", + "/C/SFML/build-debug/CMakeCache.txt", + "/C/Box2D/build-debug/CMakeCache.txt", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Genome.hpp", + "/C/Projects/Applications/NeuroRacers/bin/population", + "/C/Projects/Libraries/HyperNeat/include/HyperNeat/Cppn.hpp", + "/C/SFML/build-dynamic/CMakeCache.txt", + "/C/Box2D/build-dynamic/CMakeCache.txt", + "/C/Projects/Libraries/HyperNeat/src/Utils/TEMP_Vector.cpp", + "/C/Projects/Applications/HyperGuppies/Makefile", + "/C/Projects/Applications/Guppies SFML/SimBase_Execute.cpp", + "/C/Projects/Applications/HyperGuppies/include/Utils/String.hpp", + "/C/Projects/Applications/HyperGuppies/todo", + "/C/Programming/Applications/HyperGuppies/include/Utils/RLUtils.hpp", + "/C/Programming/Applications/HyperGuppies/include/WorldParams.hpp", + "/C/Users/Paul/Downloads/pdc25_vc_w32/README", + "/C/Programming/Applications/HyperGuppies/bin/worlds/default.world", + "/C/Programming/Applications/HyperGuppies/include/Utils/File.hpp", + "/C/Programming/Applications/HyperGuppies/Makefile", + "/C/Programming/Applications/HyperGuppies/HyperGuppies.sublime-project", + "/C/Programming/Applications/Guppies SFML/Params.hpp", + "/C/Users/Paul/Downloads/SFML/SFML-master/CMakeLists.txt", + "/C/Programming/Applications/HyperGuppies/include/Utils/Function.hpp", + "/C/Users/Paul/Downloads/RBTray-4_3/readme.txt", + "/C/Programming/Applications/HyperGuppies/src/Main.cpp", + "/C/Programming/Applications/HyperGuppies/todo", + "/C/RLUtil/RLUtil.hpp", + "/C/Users/Paul/Downloads/PlainTasks-master/PlainTasks-master/Readme.md", + "/C/Programming/Applications/HyperGuppies/include/App.hpp", + "/C/Programming/Applications/HyperGuppies/src/App.cpp", + "/C/Users/Paul/Downloads/rlutil-master/rlutil-master/rlutil.hpp", + "/C/Users/Paul/Downloads/rlutil-master/rlutil-master/example.c", + "/C/Users/Paul/Downloads/rlutil-master/rlutil-master/test.cpp", + "/C/Users/Paul/Downloads/rlutil-master/rlutil-master/rlutil.h", + "/C/Box2D/include/Common/b2Settings.h", + "/C/Users/Paul/Desktop/Box2D/Box2D/Common/b2Settings.h", + "/C/Users/Paul/Desktop/Box2D/CMakeLists.txt", + "/C/Users/Paul/Desktop/Box2D/Box2D/CMakeLists.txt", + "/C/Programming/Libraries/HyperNeat/Makefile", + "/C/Users/Paul/Downloads/neuro.3.0.3/neuro/style.css", + "/C/Users/Paul/Downloads/tapio-rlutil-c49f5ae/tapio-rlutil-c49f5ae/rlutil.h", + "/C/Programming/Libraries/HyperNeat/src/Utils/LoadFile.cpp", + "/C/Programming/Applications/NeuroRacers/bin/population", + "/C/Programming/Libraries/HyperNeat/todo", + "/C/Programming/Libraries/HyperNeat/include/Population.hpp", + "/C/Programming/Libraries/HyperNeat/include/Utils/LoadFile.hpp", + "/C/Programming/Libraries/HyperNeat/src/Utils/SaveFile.cpp", + "/C/Programming/Libraries/HyperNeat/include/Utils/SaveFile.hpp", + "/C/Programming/Libraries/HyperNeat/include/Organism.hpp", + "/C/Users/Paul/Desktop/Box2D_v2.2.1/Box2D/Common/b2Settings.h", + "/C/Users/Paul/Desktop/Box2D_v2.2.1/Building.txt", + "/C/Users/Paul/Desktop/Box2D_v2.2.1/Box2D/Box2D.h", + "/C/Users/Paul/Desktop/Box2D_v2.2.1/Readme.txt", + "/C/Programming/Libraries/HyperNeat/src/Genome.cpp", + "/C/Programming/Libraries/HyperNeat/include/Genome.hpp", + "/C/Programming/Libraries/HyperNeat/src/Cppn.cpp", + "/C/Programming/Libraries/HyperNeat/include/Cppn.hpp", + "/C/Programming/Libraries/HyperNeat/src/Organism.cpp", + "/C/Programming/Libraries/HyperNeat/src/Population.cpp", + "/C/Box2D/src/Dynamics/b2World.cpp", + "/C/Box2D/src/Dynamics/b2World.h", + "/C/Box2D/src/Dynamics/b2WorldCallbacks.h", + "/C/Programming/Libraries/HyperNeat/include/Utils/NodeTypes.hpp", + "/C/Programming/Libraries/HyperNeat/include/Utils/String.hpp", + "/C/Programming/Libraries/HyperNeat/src/LoadSaveSystem.cpp", + "/C/Programming/Libraries/HyperNeat/include/LoadSaveSystem.hpp", + "/C/Programming/Libraries/HyperNeat/include/Saver.hpp", + "/C/Programming/Libraries/HyperNeat/src/Utils/File.cpp", + "/C/Programming/Libraries/HyperNeat/include/Utils/File.hpp" + ], + "find": + { + "height": 36.0 + }, + "find_in_files": + { + "height": 92.0, + "where_history": + [ + "" + ] + }, + "find_state": + { + "case_sensitive": true, + "find_history": + [ + "BlendMode", + "fieldGenerator", + "value", + "_grid", + "223", + "refNeuron", + "0", + "PIXEL_SIZE", + "cout", + "_windowOpen", + "64", + "bias", + "pos", + "bias", + "PIXEL", + "CPPN_EX_WIDTH", + "_withNeuralNet", + "600", + "512", + "_window", + "System", + "Graphics", + "RenderWindow", + "WIN", + "sf::", + "gridClr", + "64", + "sf::", + " = nullptr", + "16", + "128", + "=", + "_resolution", + "SunDir", + "16", + "128", + "32", + "sf::Uint8", + "Alpha", + "sf::Color::White", + "{ 0, 0, 0, 0 }", + "sf::Color::Black", + "Add", + "2", + "1.0f", + "Thickness", + "setOrigin", + "0", + "_uiColor", + "0.0", + "resolution", + "Neurons", + "\\", + "{ 0, 0, 0 }", + "_uiColor", + "6", + "8", + "10", + "3", + "_uiColor", + "{ 0, 0, 0 }", + ", 128", + "PIXEL * 1.0f", + "6", + "4", + "0", + "_cppn.outputAt(0)", + "_valueImage.", + "bias", + "mage", + "val", + "*", + "{ 0, 0, 0, 128 }", + "_uiColor", + "4.", + "3.0", + "2", + "1.5", + "colorInt / 2", + "radius", + "_body", + "64", + "0", + "20", + "128", + "20.0", + "16", + "10.0", + "0.025f", + "2", + "4", + "x1", + "1", + "x", + "_weight", + "64", + "PIXEL", + "0.008f", + "0", + "_body", + "128", + "0.1", + "Scale", + "H", + ", 2, sf::Lines", + ")", + "sf::Vertex(", + "sf::Vector2f", + "Color", + "cursor", + "cVal", + "weight", + "_cppn", + "weight", + "_cppn", + "cVal", + " - cBias", + "abs(", + "cVal", + "val", + "static_cast<double>(", + "0", + "int", + "int(255)", + "sf::Uint8", + "float", + "x", + "cppn" + ], + "highlight": true, + "in_selection": false, + "preserve_case": false, + "regex": true, + "replace_history": + [ + "_" + ], + "reverse": false, + "show_context": true, + "use_buffer2": true, + "whole_word": false, + "wrap": true + }, + "groups": + [ + { + "selected": 2, + "sheets": + [ + { + "buffer": 0, + "file": "todolist.txt", + "semi_transient": false, + "settings": + { + "buffer_size": 1115, + "regions": + { + }, + "selection": + [ + [ + 363, + 363 + ] + ], + "settings": + { + "BracketHighlighterBusy": false, + "bh_regions": + [ + "bh_double_quote", + "bh_double_quote_center", + "bh_double_quote_open", + "bh_double_quote_close", + "bh_square", + "bh_square_center", + "bh_square_open", + "bh_square_close", + "bh_regex", + "bh_regex_center", + "bh_regex_open", + "bh_regex_close", + "bh_curly", + "bh_curly_center", + "bh_curly_open", + "bh_curly_close", + "bh_angle", + "bh_angle_center", + "bh_angle_open", + "bh_angle_close", + "bh_tag", + "bh_tag_center", + "bh_tag_open", + "bh_tag_close", + "bh_default", + "bh_default_center", + "bh_default_open", + "bh_default_close", + "bh_round", + "bh_round_center", + "bh_round_open", + "bh_round_close", + "bh_unmatched", + "bh_unmatched_center", + "bh_unmatched_open", + "bh_unmatched_close", + "bh_single_quote", + "bh_single_quote_center", + "bh_single_quote_open", + "bh_single_quote_close" + ], + "syntax": "Packages/PlainTasks/PlainTasks.tmLanguage", + "tab_size": 2, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 2, + "type": "text" + }, + { + "buffer": 1, + "file": "include/CppnExplorer.hpp", + "semi_transient": false, + "settings": + { + "buffer_size": 4318, + "regions": + { + }, + "selection": + [ + [ + 391, + 391 + ] + ], + "settings": + { + "BracketHighlighterBusy": false, + "bh_regions": + [ + "bh_double_quote", + "bh_double_quote_center", + "bh_double_quote_open", + "bh_double_quote_close", + "bh_square", + "bh_square_center", + "bh_square_open", + "bh_square_close", + "bh_regex", + "bh_regex_center", + "bh_regex_open", + "bh_regex_close", + "bh_curly", + "bh_curly_center", + "bh_curly_open", + "bh_curly_close", + "bh_angle", + "bh_angle_center", + "bh_angle_open", + "bh_angle_close", + "bh_tag", + "bh_tag_center", + "bh_tag_open", + "bh_tag_close", + "bh_default", + "bh_default_center", + "bh_default_open", + "bh_default_close", + "bh_round", + "bh_round_center", + "bh_round_open", + "bh_round_close", + "bh_unmatched", + "bh_unmatched_center", + "bh_unmatched_open", + "bh_unmatched_close", + "bh_single_quote", + "bh_single_quote_center", + "bh_single_quote_open", + "bh_single_quote_close" + ], + "syntax": "Packages/C++ Starting Kit/CCpp.tmLanguage", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 1, + "type": "text" + }, + { + "buffer": 2, + "file": "src/CppnExplorer.cpp", + "semi_transient": false, + "settings": + { + "buffer_size": 17141, + "regions": + { + }, + "selection": + [ + [ + 1778, + 1778 + ] + ], + "settings": + { + "BracketHighlighterBusy": false, + "bh_regions": + [ + "bh_single_quote", + "bh_single_quote_center", + "bh_single_quote_open", + "bh_single_quote_close", + "bh_unmatched", + "bh_unmatched_center", + "bh_unmatched_open", + "bh_unmatched_close", + "bh_round", + "bh_round_center", + "bh_round_open", + "bh_round_close", + "bh_default", + "bh_default_center", + "bh_default_open", + "bh_default_close", + "bh_square", + "bh_square_center", + "bh_square_open", + "bh_square_close", + "bh_regex", + "bh_regex_center", + "bh_regex_open", + "bh_regex_close", + "bh_curly", + "bh_curly_center", + "bh_curly_open", + "bh_curly_close", + "bh_angle", + "bh_angle_center", + "bh_angle_open", + "bh_angle_close", + "bh_tag", + "bh_tag_center", + "bh_tag_open", + "bh_tag_close", + "bh_double_quote", + "bh_double_quote_center", + "bh_double_quote_open", + "bh_double_quote_close" + ], + "syntax": "Packages/C++ Starting Kit/CCpp.tmLanguage", + "tab_size": 4, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 828.0, + "zoom_level": 1.0 + }, + "stack_index": 0, + "type": "text" + } + ] + } + ], + "incremental_find": + { + "height": 0.0 + }, + "input": + { + "height": 30.0 + }, + "layout": + { + "cells": + [ + [ + 0, + 0, + 1, + 1 + ] + ], + "cols": + [ + 0.0, + 1.0 + ], + "rows": + [ + 0.0, + 1.0 + ] + }, + "menu_visible": false, + "output.exec": + { + "height": 96.0 + }, + "output.find_results": + { + "height": 0.0 + }, + "project": "CppnExplorer.sublime-project", + "replace": + { + "height": 64.0 + }, + "save_all_on_build": true, + "select_file": + { + "height": 0.0, + "selected_items": + [ + ], + "width": 0.0 + }, + "select_project": + { + "height": 500.0, + "selected_items": + [ + [ + "", + "C:\\Projects\\Libraries\\HyperNeat\\HyperNeat.sublime-project" + ] + ], + "width": 805.0 + }, + "select_symbol": + { + "height": 0.0, + "selected_items": + [ + ], + "width": 0.0 + }, + "settings": + { + }, + "show_minimap": true, + "show_open_files": false, + "show_tabs": true, + "side_bar_visible": true, + "side_bar_width": 160.0, + "status_bar_visible": true, + "template_settings": + { + } +} diff --git a/plugins/CppnExplorer/Makefile b/plugins/CppnExplorer/Makefile new file mode 100644 index 0000000..0d31499 --- /dev/null +++ b/plugins/CppnExplorer/Makefile @@ -0,0 +1,19 @@ +LIBRARY := lib/libCppnExplorer.a +SOURCES := $(wildcard src/*.cpp) +OBJECTS := $(patsubst src/%.cpp,obj/%.o,$(SOURCES)) +DEPS := $(patsubst %.o,%.d,$(OBJECTS)) +CFLAGS := -c -O3 -Wall -std=c++11 -MMD -Iinclude -I../../include -IC:/SFML/include +LFLAGS := rvs + +all: $(OBJECTS) + ar $(LFLAGS) $(LIBRARY) $(OBJECTS) + +-include $(DEPS) + +$(OBJECTS): $(patsubst obj/%.o,src/%.cpp,$@) + g++ $(CFLAGS) $(patsubst obj/%.o,src/%.cpp,$@) -o $@ + +clean: + del lib\*.a + del obj\*.o + del obj\*.d diff --git a/plugins/CppnExplorer/include/CppnExplorer.hpp b/plugins/CppnExplorer/include/CppnExplorer.hpp new file mode 100644 index 0000000..5ca20c5 --- /dev/null +++ b/plugins/CppnExplorer/include/CppnExplorer.hpp @@ -0,0 +1,129 @@ +#ifndef __CPPN_EXPLORER_HPP__ +#define __CPPN_EXPLORER_HPP__ + +#include <Hyperneat/Cppn.hpp> +#include <Hyperneat/Genome.hpp> +#include <Hyperneat/NeuralNet.hpp> +#include <SFML/Graphics/Texture.hpp> +#include <HyperNeat/Utils/Atomic.hpp> +#include <HyperNeat/Utils/Thread.hpp> +#include <Hyperneat/NeuralNetPrms.hpp> +#include <SFML/Graphics/VertexArray.hpp> +#include <SFML/Graphics/CircleShape.hpp> +#include <SFML/Graphics/RenderWindow.hpp> +#include <SFML/Graphics/RectangleShape.hpp> + +namespace hyperneat +{ + class CppnExplorer + { + public: + CppnExplorer(); + ~CppnExplorer(); + + void run(const Genome& genome, const NeuralNetPrms* nnPrms = nullptr, sf::RenderTarget* target = nullptr); + void shutdown(); + void draw(); + + // void run(const Genome& genome, const NeuralNetPrms& nnPrms); + // void shutdown(); + + private: + void windowHandler(); + void eventHandler(); + void neuralNetGenerator(); + void fieldGenerator(); + + class Neuron + { + public: + Neuron(const NeuralNet::Neuron& refNeuron); + + sf::VertexArray _synapses = sf::VertexArray(sf::Lines); + sf::CircleShape _nucleus = sf::CircleShape(4.0f * PIXEL_SIZE, 12); + }; + + Cppn _cppn; + Genome _genome; + NeuralNetPrms _nnPrms; + Vector<Neuron> _neurons; + NeuralNet _neuralNet; + bool _withNeuralNet = false; + Atomic<bool> _neuralNetReady = {false}; + + sf::RenderWindow _window; + Atomic<bool> _windowOpen = {false}; + sf::RenderTarget* _target = nullptr; + const sf::Color _uiColor = {255, 255, 255, 8}; + + sf::Image _fieldImage; + sf::RectangleShape _fieldSprite; + sf::Texture _fieldTexture; + size_t _currentField = 0; + Atomic<bool> _fieldReady = {false}; + + Thread _windowHandler; + Thread _fieldGenerator; + Thread _neuralNetGenerator; + + static constexpr unsigned RESOLUTION = 512; + static constexpr float PIXEL_SIZE = 1.0f / static_cast<float>(RESOLUTION); + + // class Neuron + // { + // public: + // enum class Type { + // INPUT, + // HIDDEN, + // OUTPUT + // }; + + // Type _type; + // sf::CircleShape _body = sf::CircleShape(0.0f, 30); + // sf::CircleShape _nucleus = sf::CircleShape(0.0f, 30); + // sf::VertexArray _synapses = sf::VertexArray(sf::Lines); + // }; + + // void print(const sf::Color* field); + // void placeCursorAt(const sf::Vector2f& newPos); + // void createNeuron(Neuron& repNeuron, const NeuralNet::Neuron& srcNeuron); + + // Cppn _cppn; + // Genome _genome; + // NeuralNet _neuralNet; + // NeuralNetPrms _nnPrms; + + // const unsigned RESOLUTION = 512; + // sf::RenderWindow _window; + // Atomic<bool> _running; + // Thread _executor; + + // const sf::Color WEIGHTS = { 128, 0, 255 }; + // const sf::Color INV_WEIGHTS = { 255, 0, 128 }; + // const sf::Color BIAS = { 0, 255, 255 }; + // const sf::Color* _field = &WEIGHTS; + + // sf::Image _valueImage; + // sf::Texture _valueTexture; + // sf::RectangleShape _valueSprite; + // sf::Image _biasImage; + // sf::Texture _biasTexture; + // sf::RectangleShape _biasSprite; + // bool _showBias = false; + + // const sf::Color _uiColor = { 64, 64, 64 }; + // const float PIXEL = 1.0f / static_cast<float>(RESOLUTION); + + // sf::Vector2f _cursorPos = { 0.0f, 0.0f }; + // sf::RectangleShape _cursorH = sf::RectangleShape(sf::Vector2f(0.2f, PIXEL * 3.0f)); + // sf::RectangleShape _cursorV = sf::RectangleShape(sf::Vector2f(PIXEL * 3.0f, 0.2f)); + // sf::VertexArray _grid = sf::VertexArray(sf::Lines); + + // bool _showField = true; + // bool _showNeurons = true; + // bool _showGrid = true; + // Vector<Neuron> _neurons; + }; +} + +#endif diff --git a/plugins/CppnExplorer/lib/.keep b/plugins/CppnExplorer/lib/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/plugins/CppnExplorer/lib/.keep diff --git a/plugins/CppnExplorer/obj/.keep b/plugins/CppnExplorer/obj/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/plugins/CppnExplorer/obj/.keep diff --git a/plugins/CppnExplorer/src/CppnExplorer.cpp b/plugins/CppnExplorer/src/CppnExplorer.cpp new file mode 100644 index 0000000..555922a --- /dev/null +++ b/plugins/CppnExplorer/src/CppnExplorer.cpp @@ -0,0 +1,549 @@ +#include <CppnExplorer.hpp> +#include <SFML/Window/Event.hpp> +#include <HyperNeat/Utils/Point.hpp> + +using namespace sf; +using namespace hyperneat; + +CppnExplorer::CppnExplorer() +{ + _fieldSprite.setOrigin(1.0f, 1.0f); + _fieldSprite.setPosition(0.0f, 0.0f); + _fieldSprite.setTexture(&_fieldTexture); + _fieldSprite.setSize(Vector2f(2.0f, 2.0f)); + _fieldImage.create(RESOLUTION, RESOLUTION); +} + +CppnExplorer::~CppnExplorer() +{ + shutdown(); +} + +void +CppnExplorer::run(const Genome& genome, const NeuralNetPrms* nnPrms, RenderTarget* target) +{ + shutdown(); + _target = target; + _genome = genome; + + _cppn.clear(); + _cppn.create(_genome); + + if (nnPrms) { + _withNeuralNet = true; + _nnPrms = *nnPrms; + _neuralNetGenerator = Thread(&CppnExplorer::neuralNetGenerator, this); + } + + if (!_target) { + _windowOpen = true; + _target = &_window; + _windowHandler = Thread(&CppnExplorer::windowHandler, this); + } + + _fieldGenerator = Thread(&CppnExplorer::fieldGenerator, this); +} + +void +CppnExplorer::shutdown() +{ + if (_neuralNetGenerator.joinable()) { + _neuralNetGenerator.join(); + } + + if (_windowHandler.joinable()) { + _windowOpen = false; + _windowHandler.join(); + } + + _neurons.clear(); + _withNeuralNet = false; + _neuralNetReady = false; + _windowOpen = false; + _target = nullptr; +} + +void +CppnExplorer::draw() +{ + _target->clear({8, 8, 16}); + + if (_neuralNetReady) { + for (auto& i : _neurons) { + _target->draw(i._synapses, BlendAdd); + } + + for (auto& i : _neurons) { + _target->draw(i._nucleus, BlendAdd); + } + } + + if (_windowOpen) { + _window.display(); + } +} + +void +CppnExplorer::windowHandler() +{ + ContextSettings settings(0, 0, 8); + String title("Cppn Explorer"); + View view({-1.0f, -1.0f, 2.0f, 2.0f}); + VideoMode videoMode(RESOLUTION, RESOLUTION); + Uint32 style(Style::Titlebar | Style::Close); + + _window.create(videoMode, title, style, settings); + _window.setVerticalSyncEnabled(true); + _window.setView(view); + + while (_windowOpen) { + eventHandler(); + draw(); + } +} + +void +CppnExplorer::eventHandler() +{ + Event event; + + while (_window.pollEvent(event)) { + switch (event.type) { + case Event::Closed: + _windowOpen = false; + break; + + default:; + } + } +} + +void +CppnExplorer::neuralNetGenerator() +{ + _neuralNet.clear(); + _neuralNet.create(_cppn, _nnPrms); + + _neurons.reserve(_neuralNet.getNeurons().size()); + + for (auto& i : _neuralNet.getNeurons()) { + _neurons.emplace_back(i); + } + + _neuralNetReady = true; +} + +void +CppnExplorer::fieldGenerator() +{ + +} + +CppnExplorer::Neuron::Neuron(const NeuralNet::Neuron& refNeuron) +{ + _nucleus.setPosition(refNeuron._position._x, refNeuron._position._y); + _nucleus.setOrigin(_nucleus.getRadius(), _nucleus.getRadius()); + + Color nColor = (refNeuron._bias > 0.0 ? Color::White : Color::Red); + nColor.a = static_cast<Uint8>(fabs((refNeuron._bias / 3.0) * 112.0) + 16.0); + _nucleus.setFillColor(nColor); + + switch (refNeuron._type) { + case NeuralNet::Neuron::Type::INPUT: + _nucleus.setOutlineThickness(4.0f * PIXEL_SIZE); + _nucleus.setOutlineColor({255, 255, 255, nColor.a}); + break; + + case NeuralNet::Neuron::Type::OUTPUT: + _nucleus.setOutlineThickness(4.0f * PIXEL_SIZE); + _nucleus.setOutlineColor({255, 0, 0, nColor.a}); + break; + + default:; + } + + for (auto& i : refNeuron._synapses) { + auto iNeuron = *i._neuron; + Color sColor = (i._weight > 0.0 ? Color::White : Color::Red); + sColor.a = static_cast<Uint8>(fabs((i._weight / 3.0) * 112.0) + 16.0); + Vector2f iPos = {static_cast<float>(iNeuron._position._x), static_cast<float>(iNeuron._position._y)}; + Vector2f tPos = {static_cast<float>(refNeuron._position._x), static_cast<float>(refNeuron._position._y)}; + + _synapses.append({iPos, sColor}); + _synapses.append({tPos, sColor}); + } +} + +// void +// CppnExplorer::run(const Genome& genome, const NeuralNetPrms& nnPrms) +// { +// shutdown(); + +// _genome = genome; +// _nnPrms = nnPrms; + +// _cppn.create(_genome); +// _neuralNet.create(_cppn, _nnPrms); + +// { +// float gridStep = 2.0f / 16.0f; +// Color gridClr = _uiColor; +// gridClr.a = 64; + +// for (float i = -1.0f; i <= 1.0f; i += gridStep) { +// _grid.append({{ -1.0f, i }, gridClr }); +// _grid.append({{ 1.0f, i }, gridClr }); +// _grid.append({{ i, -1.0f }, gridClr }); +// _grid.append({{ i, 1.0f }, gridClr }); +// } +// } + +// _executor = Thread([&]() { +// _running = true; + +// { +// VideoMode videoMode(RESOLUTION, RESOLUTION); +// String title("Cppn Explorer"); +// Uint32 style(Style::Titlebar | Style::Close); +// ContextSettings settings(0, 0, 8); +// View view(FloatRect(-1.0f, -1.0f, 2.0f, 2.0f)); + +// _window.create(videoMode, title, style, settings); +// _window.setVerticalSyncEnabled(true); +// _window.setView(view); +// } + +// _cppn.inputAt(5) = 1.0; + +// _valueImage.create(RESOLUTION, RESOLUTION); +// _biasImage.create(RESOLUTION, RESOLUTION); +// print(&WEIGHTS); +// print(&BIAS); + +// _valueSprite.setTexture(&_valueTexture); +// _valueSprite.setSize(Vector2f(2.0f, 2.0f)); +// _valueSprite.setOrigin(1.0f, 1.0f); +// _valueSprite.setPosition(0.0f, 0.0f); + +// _biasSprite.setTexture(&_biasTexture); +// _biasSprite.setSize(Vector2f(2.0f, 2.0f)); +// _biasSprite.setOrigin(1.0f, 1.0f); +// _biasSprite.setPosition(0.0f, 0.0f); + +// _cursorH.setFillColor(_uiColor); +// _cursorV.setFillColor(_uiColor); +// _cursorH.setOrigin(_cursorH.getSize() / 2.0f); +// _cursorV.setOrigin(_cursorV.getSize() / 2.0f); +// _cursorH.setOutlineThickness(PIXEL); +// _cursorV.setOutlineThickness(PIXEL); +// _cursorH.setOutlineColor({ 128, 128, 128 }); +// _cursorV.setOutlineColor({ 128, 128, 128 }); + +// _neurons.reserve(_neuralNet.getNeuronsCount()); + +// for (auto& i : _neuralNet.getNeurons()) { +// _neurons.emplace_back(); +// createNeuron(_neurons.back(), i); +// } + +// while (_running) { +// Event event; + +// while (_window.pollEvent(event)) { +// switch (event.type) { +// case Event::KeyPressed: +// switch (event.key.code) { +// case Keyboard::B: +// _showBias = !_showBias; +// break; + +// case Keyboard::C: +// placeCursorAt({ 0.0f, 0.0f }); +// print(_field); +// break; + +// case Keyboard::F: +// _field == &WEIGHTS ? ++_field : --_field; +// print(_field); +// break; + +// case Keyboard::V: +// _showField = !_showField; +// break; + +// case Keyboard::N: +// _showNeurons = !_showNeurons; +// break; + +// case Keyboard::G: +// _showGrid = !_showGrid; +// break; + +// default:; +// } + +// break; + +// case Event::MouseButtonPressed: +// if (event.mouseButton.button == Mouse::Left) { +// placeCursorAt(_window.mapPixelToCoords(Mouse::getPosition(_window))); +// print(_field); +// } + +// break; + +// case Event::Closed: +// _running = false; +// break; + +// default:; +// } +// } + +// _window.clear({ 8, 8, 16 }); + +// if (_showField) { +// if (_showBias) { +// _window.draw(_biasSprite); +// } else { +// _window.draw(_valueSprite); +// } +// } + +// if (_showGrid) { +// _window.draw(_grid, { BlendMode::BlendAdd }); +// } + +// if (_showNeurons) { +// for (auto& i : _neurons) { +// _window.draw(i._synapses); +// } + +// for (auto& i : _neurons) { +// if (i._type != Neuron::Type::HIDDEN) { +// continue; +// } + +// _window.draw(i._body); +// _window.draw(i._nucleus); +// } + +// for (auto& i : _neurons) { +// if (i._type == Neuron::Type::HIDDEN) { +// continue; +// } + +// _window.draw(i._body); +// _window.draw(i._nucleus); +// } +// } + +// _window.draw(_cursorH); +// _window.draw(_cursorV); + +// _window.display(); +// } +// }); +// } + +// void +// CppnExplorer::shutdown() +// { +// if (_executor.joinable()) { +// _running = false; +// _executor.join(); +// } + +// this->~CppnExplorer(); +// new (this) CppnExplorer(); +// } + +// void +// CppnExplorer::print(const Color* field) +// { +// size_t out = 0; +// double* x1 = nullptr; +// double* y1 = nullptr; +// double* x2 = nullptr; +// double* y2 = nullptr; +// Image* image = nullptr; +// Texture* texture = nullptr; + +// if (field == &WEIGHTS) { +// x1 = &_cppn.inputAt(0); +// y1 = &_cppn.inputAt(1); +// x2 = &_cppn.inputAt(2); +// y2 = &_cppn.inputAt(3); +// } else { +// x1 = &_cppn.inputAt(2); +// y1 = &_cppn.inputAt(3); +// x2 = &_cppn.inputAt(0); +// y2 = &_cppn.inputAt(1); +// } + +// *x1 = _cursorPos.x; +// *y1 = _cursorPos.y; + +// if (field == &BIAS) { +// out = 1; +// image = &_biasImage; +// texture = &_biasTexture; +// } else { +// image = &_valueImage; +// texture = &_valueTexture; +// } + +// double half = static_cast<double>(RESOLUTION / 2); + +// for (unsigned y = 0; y < RESOLUTION; ++y) { +// for (unsigned x = 0; x < RESOLUTION; ++x) { +// *x2 = (static_cast<double>(x) - half) / half; +// *y2 = (static_cast<double>(y) - half) / half; +// _cppn.inputAt(4) = Point(*x1, *y1).distance(Point(*x2, *y2)); +// _cppn.cycle(); + +// auto multColor = [](const Color& base, double factor) { +// Color result; + +// result.r = static_cast<Uint8>(static_cast<double>(base.r) * factor); +// result.g = static_cast<Uint8>(static_cast<double>(base.g) * factor); +// result.b = static_cast<Uint8>(static_cast<double>(base.b) * factor); + +// return result; +// }; + +// if (_cppn.outputAt(out) > 0) { +// image->setPixel(x, y, multColor(Color::White, _cppn.outputAt(out))); +// } else { +// image->setPixel(x, y, multColor(*field, fabs(_cppn.outputAt(out)))); +// } +// } +// } + +// texture->loadFromImage(*image); +// } + +// void +// CppnExplorer::placeCursorAt(const Vector2f& newPos) +// { +// _cursorPos = newPos; +// _cursorH.setPosition(_cursorPos); +// _cursorV.setPosition(_cursorPos); +// } + +// void +// CppnExplorer::createNeuron(Neuron& repNeuron, const NeuralNet::Neuron& srcNeuron) +// { +// repNeuron._body.setOutlineThickness(PIXEL * 2.0f); +// repNeuron._nucleus.setOutlineThickness(PIXEL * 2.0f); + +// float radius = 0.0f; +// Color inputColor = BIAS; +// Color hiddenColor = INV_WEIGHTS; +// Color outputColor = WEIGHTS; + +// inputColor.a = 128; +// hiddenColor.a = 128; +// outputColor.a = 128; + +// switch (srcNeuron._type) { +// case NeuralNet::Neuron::Type::INPUT: +// repNeuron._type = Neuron::Type::INPUT; +// repNeuron._body.setOutlineColor(inputColor); +// repNeuron._body.setFillColor({ 0, 0, 0, 200 }); +// radius = PIXEL * 24.0f; +// break; + +// case NeuralNet::Neuron::Type::HIDDEN: +// repNeuron._type = Neuron::Type::HIDDEN; +// repNeuron._body.setOutlineColor(hiddenColor); +// repNeuron._body.setFillColor({ 0, 0, 0, 200 }); + +// { +// float level = 1.0f; +// for (; srcNeuron._position._x * level != floor(srcNeuron._position._x * level); level *= 2.0f); +// radius = 1.0f / (level * 4.0f); + +// if (radius > PIXEL * 16.0f) { +// radius = PIXEL * 16.0f; +// } +// } + +// break; + +// case NeuralNet::Neuron::Type::OUTPUT: +// repNeuron._type = Neuron::Type::OUTPUT; +// repNeuron._body.setOutlineColor(outputColor); +// repNeuron._body.setFillColor({ 0, 0, 0, 200 }); +// radius = PIXEL * 24.0f; +// break; +// } + +// repNeuron._body.setRadius(radius); +// repNeuron._body.setOrigin(radius, radius); +// repNeuron._body.setPosition(srcNeuron._position._x, srcNeuron._position._y); + +// repNeuron._nucleus.setRadius(radius / 2.0f); +// repNeuron._nucleus.setOrigin(radius / 2.0f, radius / 2.0f); +// repNeuron._nucleus.setPosition(srcNeuron._position._x, srcNeuron._position._y); +// repNeuron._nucleus.setOutlineColor(repNeuron._body.getOutlineColor()); + +// double multInt = static_cast<Uint8>(fabs(srcNeuron._bias / 3.0) * 255.0); +// Color colorMult(multInt, multInt, multInt, 128); + +// if (srcNeuron._bias > 0) { +// repNeuron._nucleus.setFillColor(Color::White * colorMult); +// } else { +// repNeuron._nucleus.setFillColor(BIAS * colorMult); +// } + +// Color synColor = WEIGHTS; + +// for (auto& i : srcNeuron._synapses) { +// for (auto& j : _neuralNet.getNeurons()) { +// if (&j._output == i._input) { +// Uint8 weight = static_cast<Uint8>(i._weight * 20.0); +// Vector2f srcPos(j._position._x, j._position._y); + +// if (i._input == &srcNeuron._output) { +// Color selfSynColor; + +// if (i._weight > 0.0) { +// selfSynColor = Color(255, 255, 255, 20 + weight); +// } else { +// selfSynColor = synColor; +// } + +// float rad2 = repNeuron._body.getRadius() * 2.0f; +// Vector2f p1 = repNeuron._body.getPosition() + Vector2f(-rad2, -rad2); +// Vector2f p2 = repNeuron._body.getPosition() + Vector2f(-rad2, rad2); +// Vector2f p3 = repNeuron._body.getPosition() + Vector2f( rad2, rad2); +// Vector2f p4 = repNeuron._body.getPosition() + Vector2f( rad2, -rad2); + +// repNeuron._synapses.append({ p1, selfSynColor }); +// repNeuron._synapses.append({ p2, selfSynColor }); + +// repNeuron._synapses.append({ p2, selfSynColor }); +// repNeuron._synapses.append({ p3, selfSynColor }); + +// repNeuron._synapses.append({ p3, selfSynColor }); +// repNeuron._synapses.append({ p4, selfSynColor }); + +// repNeuron._synapses.append({ p4, selfSynColor }); +// repNeuron._synapses.append({ p1, selfSynColor }); +// } else { +// repNeuron._synapses.append({ repNeuron._body.getPosition(), Color::Black }); + +// if (i._weight > 0.0) { +// repNeuron._synapses.append({{ srcPos }, Color(255, 255, 255, 20 + weight) }); +// } else { +// synColor.a = 20 + weight; +// repNeuron._synapses.append({{ srcPos }, synColor }); +// } +// } + +// break; +// } +// } +// } +// } diff --git a/plugins/CppnExplorer/todolist.txt b/plugins/CppnExplorer/todolist.txt new file mode 100644 index 0000000..5677680 --- /dev/null +++ b/plugins/CppnExplorer/todolist.txt @@ -0,0 +1,21 @@ +Cppn Explorer: + ☐ Render to any sf::RenderTarget + ☐ Calculate field on separate thread (keep 2 textures) + ☐ Render Neurons as crossmarks + ☐ (When Rendering to Window) Cycle fields with F key + ☐ (When Rendering to Window) Cycle between Neurons and Synapses using arrow keys + ☐ Display text data + ☐ (When Rendering to Window) Embed icon + ☐ Show Cppn Network + + +___________________ +Archive: + ✔ Display connection to same neuron as square around neuron @done (13-12-10 00:29) @project(Cppn Explorer) + ✔ Use better color and blending for neurons @done (13-11-25 00:24) @project(Cppn Explorer) + ✔ Display Synapses as blended lines with Transparency representing Weights @done (13-11-25 00:24) @project(Cppn Explorer) + ✔ Display cursor beatifully @done (13-11-23 20:31) @project(Cppn Explorer) + ✔ Display grid @done (13-11-23 01:58) @project(Cppn Explorer) + ✔ Fix cursor @done (13-11-21 02:18) @project(Cppn Explorer) + ✔ Print and switch between fields @done (13-11-06 04:35) @project(Cppn Explorer) + ✔ Display Neurons beautifully (with bias represented as a nucleus) @done (13-11-04 20:52) @project(Cppn Explorer) |