{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":698399018,"defaultBranch":"master","name":"graphics-engine","ownerLogin":"Sigmarik","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-09-29T20:32:50.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/55981703?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1720621076.0","currentOid":""},"activityList":{"items":[{"before":"18b430a82c237623c8b5647f53e22260a931ea3a","after":"0add61bb7d20978cb8ca9f34312cce5a0c11a355","ref":"refs/heads/assets/scene-scripts","pushedAt":"2024-07-19T18:20:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"fix: compilation errors\nrefactor: string to GUID conversion now returns a GUID instead of a corresponding `optional`","shortMessageHtmlLink":"fix: compilation errors"}},{"before":"29f67ab18f9fbc9aeeadb50b1af397f721390719","after":"18b430a82c237623c8b5647f53e22260a931ea3a","ref":"refs/heads/assets/scene-scripts","pushedAt":"2024-07-13T20:30:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"feat: arithmetic nodes\nfeat: node templates\nrefactor: node children are now `shared_ptr`-s\nrefactor: file structure changes\nfix: correct value absence handling in operator nodes","shortMessageHtmlLink":"feat: arithmetic nodes"}},{"before":"ca266156aa07ce0e2435b780f7879cc3b76ac962","after":null,"ref":"refs/heads/docs","pushedAt":"2024-07-10T14:17:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"}},{"before":"ba140993749ea9149714fb31d3aef85573e183f2","after":"78de2a4b1ab3404b0f0abadba1ed7e8af6368ab3","ref":"refs/heads/master","pushedAt":"2024-07-10T14:17:54.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"Temporary README (#27)\n\nBad but accurate README is better than a misleading README.\r\n\r\nThus, this pull request introduces a \"proper\" readme for the project\r\nwith the description of its main features, references to useful code\r\nsnippets, build instructions and screenshots.\r\n\r\nIt also admits that there is no documentation of the framework's API,\r\nthough it gives instructions on how doxygen can be ran on the project\r\nand highlights pages with useful information, such as pull requests with\r\nfeature descriptions.","shortMessageHtmlLink":"Temporary README (#27)"}},{"before":"ba140993749ea9149714fb31d3aef85573e183f2","after":"ca266156aa07ce0e2435b780f7879cc3b76ac962","ref":"refs/heads/docs","pushedAt":"2024-07-10T13:31:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"chore: temporary readme\nnote: nothing is more eternal than something temporary","shortMessageHtmlLink":"chore: temporary readme"}},{"before":null,"after":"ba140993749ea9149714fb31d3aef85573e183f2","ref":"refs/heads/docs","pushedAt":"2024-07-10T07:27:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"Active window in input controller and bug fixes (#14)\n\nActive window was added as a field of InputController.\r\nBug with wrong delta_mouse_pos was fixed by setting zero value in\r\nInputController::poll_events()","shortMessageHtmlLink":"Active window in input controller and bug fixes (#14)"}},{"before":"10bb4ef399525a5a20907e5549b1c117fe2a45b3","after":"29f67ab18f9fbc9aeeadb50b1af397f721390719","ref":"refs/heads/assets/scene-scripts","pushedAt":"2024-07-07T16:38:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"feat: update suppression nodes (WIP)","shortMessageHtmlLink":"feat: update suppression nodes (WIP)"}},{"before":"ba140993749ea9149714fb31d3aef85573e183f2","after":"10bb4ef399525a5a20907e5549b1c117fe2a45b3","ref":"refs/heads/assets/scene-scripts","pushedAt":"2024-07-05T15:30:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"feat: script node structure (WIP)\nfeat: component IO nodes (WIP)","shortMessageHtmlLink":"feat: script node structure (WIP)"}},{"before":null,"after":"ba140993749ea9149714fb31d3aef85573e183f2","ref":"refs/heads/assets/scene-scripts","pushedAt":"2024-05-30T14:04:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"Active window in input controller and bug fixes (#14)\n\nActive window was added as a field of InputController.\r\nBug with wrong delta_mouse_pos was fixed by setting zero value in\r\nInputController::poll_events()","shortMessageHtmlLink":"Active window in input controller and bug fixes (#14)"}},{"before":"77ea739e0bae1a66d9150a49200402208d7a4761","after":null,"ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-29T14:59:40.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"}},{"before":"48de2367856bce903d01c2afc2b07d4ea2fc9c6f","after":"ba140993749ea9149714fb31d3aef85573e183f2","ref":"refs/heads/master","pushedAt":"2024-05-29T14:59:39.000Z","pushType":"pr_merge","commitsCount":24,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"Active window in input controller and bug fixes (#14)\n\nActive window was added as a field of InputController.\r\nBug with wrong delta_mouse_pos was fixed by setting zero value in\r\nInputController::poll_events()","shortMessageHtmlLink":"Active window in input controller and bug fixes (#14)"}},{"before":"6c0dd5370eba6607b0a55cd41d02a408c5e555b6","after":"77ea739e0bae1a66d9150a49200402208d7a4761","ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-29T14:59:07.000Z","pushType":"push","commitsCount":24,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"Merge branch 'master' into input/binding-Input-controller-to-window","shortMessageHtmlLink":"Merge branch 'master' into input/binding-Input-controller-to-window"}},{"before":"cc95490e63bb1bfdf82c109133fd862bc877abd9","after":null,"ref":"refs/heads/input/advanced-window-subtitles","pushedAt":"2024-05-29T14:46:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"}},{"before":"9b63bc51796cea3746ec77f087e83d8cfd801a12","after":"6c0dd5370eba6607b0a55cd41d02a408c5e555b6","ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-29T14:46:37.000Z","pushType":"pr_merge","commitsCount":8,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"Advanced window subtitles (alternative implementation) (#25)\n\nAlternative implementation of the \"advanced subtitles\" feature.\r\n\r\nIt utilizes object lifetime for updating the list of properties, which\r\nallows it to preserve the order of subtitle entries, have individual\r\nupdate frequency requirements and not rely on string keys for entry\r\nrecognition.\r\n\r\nUsage example:\r\n\r\n```C++\r\nauto fps_display = WindowManager::add_subtitle_entry(\"FPS\");\r\n\r\nloop {\r\n fps_display.set_value(int(fps));\r\n}\r\n\r\n// Remove the \"FPS\" tag from the subtitle.\r\nfps_display.hide();\r\n\r\n// fps_display destructor will also handle tag removal.\r\n```","shortMessageHtmlLink":"Advanced window subtitles (alternative implementation) (#25)"}},{"before":"2bb6cb8e328bc1979ee7374f132790665b6e8784","after":"9b63bc51796cea3746ec77f087e83d8cfd801a12","ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-29T14:46:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"DOWNGRADE: reverted to the root of the subbranch to prepare for force merging","shortMessageHtmlLink":"DOWNGRADE: reverted to the root of the subbranch to prepare for force…"}},{"before":"33329a0bd6129cb75ac87c89cc97c58ff2ef9c12","after":"cc95490e63bb1bfdf82c109133fd862bc877abd9","ref":"refs/heads/input/advanced-window-subtitles","pushedAt":"2024-05-28T16:19:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"fix: subtitle entry delta times\nrefactor: replaced frequency parameters with delta times for subtitle entries\nstyle: minor style changes","shortMessageHtmlLink":"fix: subtitle entry delta times"}},{"before":"c53e8adb4e0956a68d613a0fafcab9c569a3b80b","after":"33329a0bd6129cb75ac87c89cc97c58ff2ef9c12","ref":"refs/heads/input/advanced-window-subtitles","pushedAt":"2024-05-27T13:45:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"feat: primitive GLFW error handling\nfix: removed redundant antialiasing on the final screen (it had no effect)","shortMessageHtmlLink":"feat: primitive GLFW error handling"}},{"before":"f33884d1160363744a2233269dcc72fe5d04c4ac","after":"c53e8adb4e0956a68d613a0fafcab9c569a3b80b","ref":"refs/heads/input/advanced-window-subtitles","pushedAt":"2024-05-27T13:34:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"fix: window validity checks","shortMessageHtmlLink":"fix: window validity checks"}},{"before":"b18d2306176be4cd2e5339d7129e611f3c07662f","after":"f33884d1160363744a2233269dcc72fe5d04c4ac","ref":"refs/heads/input/advanced-window-subtitles","pushedAt":"2024-05-27T10:57:56.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"chore: documentation\nfix: `set_value` with string argument after hide","shortMessageHtmlLink":"chore: documentation"}},{"before":"cdb453609e262744383b9f344751b0e22152dde0","after":"b18d2306176be4cd2e5339d7129e611f3c07662f","ref":"refs/heads/input/advanced-window-subtitles","pushedAt":"2024-05-27T09:28:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"feat: entry hiding","shortMessageHtmlLink":"feat: entry hiding"}},{"before":null,"after":"cdb453609e262744383b9f344751b0e22152dde0","ref":"refs/heads/input/advanced-window-subtitles","pushedAt":"2024-05-26T20:34:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"feat: advanced window subtitles","shortMessageHtmlLink":"feat: advanced window subtitles"}},{"before":"8a0e8b04326d8e1ef802853906e32d934526122a","after":"2bb6cb8e328bc1979ee7374f132790665b6e8784","ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-26T18:57:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Nerfiti","name":null,"path":"/Nerfiti","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/112069471?s=80&v=4"},"commit":{"message":"refactor: full form of floating number","shortMessageHtmlLink":"refactor: full form of floating number"}},{"before":"24cae773a70bd14583d15a9d071f1d9cd207ee19","after":"8a0e8b04326d8e1ef802853906e32d934526122a","ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-26T16:12:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Nerfiti","name":null,"path":"/Nerfiti","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/112069471?s=80&v=4"},"commit":{"message":"feat: improve subtitles management","shortMessageHtmlLink":"feat: improve subtitles management"}},{"before":"8f61842202dde498a1e3811d60698f72175edea6","after":null,"ref":"refs/heads/assets/scene-blueprints","pushedAt":"2024-05-26T08:39:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"}},{"before":"742adfeba81cfe0873df0e3e0a3883b9ad9be022","after":"48de2367856bce903d01c2afc2b07d4ea2fc9c6f","ref":"refs/heads/master","pushedAt":"2024-05-26T08:39:56.000Z","pushType":"pr_merge","commitsCount":23,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"Scene blueprints (#24)\n\nIt is now possible to construct scenes in blender. The setup process is\r\na bit tricky, but after it is done scene creation becomes quite\r\npleasant.\r\n\r\n## Level assets\r\n\r\n`.level.xml` assets store scene component lists that should be present\r\non the level.\r\n\r\n```XML\r\n\r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n\r\n```\r\n\r\nLevel is a set of components, each of which is defined by the\r\ncorresponding tag in the level file.\r\n\r\nTag name should be a component's class importer signature, and `name`\r\nattribute should contain a unique (for the level) component name, which\r\nwill be used as its external identifier.\r\n\r\nComponent data format is defined only by its corresponding importer.\r\n\r\n**Level import**\r\n\r\n```C++\r\n#include \"logics/blueprints/external_level.h\"\r\n#include \"managers/asset_manager.h\"\r\n\r\nconst ExternalLevel* level = AssetManager::request(\"my_level.level.xml\");\r\n\r\nSubcomponentNameMap map = level->build(scene, /* level transform = */ glm::mat4(1.0));\r\n\r\n// At this point the scene contains all required components, which can be accessed by name\r\n// using the `map` of the build.\r\n```\r\n\r\n**Custom component importer**\r\n\r\n```C++\r\n#include \"logics/blueprints/component_importer.h\"\r\n\r\nXML_BASED_IMPORTER(Producer, \"custom_signature\") {\r\n // Mandatory parameters can be requested through the `demand` function\r\n glm::mat4 transform = demand(data, \"transform\", glm::mat4(1.0));\r\n\r\n // Optional parameters can be requested through the `request` function\r\n int optional_argument = request(data, \"optional_parameter\", 0);\r\n\r\n // Importer should return a `Producer`, which is a functor which builds the component\r\n // when the level gets built.\r\n\r\n // `parent_tform` - world space level transform\r\n\r\n // You can either write lambda definition by yourself or use the `PRODUCER` macro\r\n return new Asset([=](const glm::mat4& parent_tform) {\r\n // Build the component from parameters read in the importer base\r\n\r\n Subcomponent component(/* . . . */);\r\n component->set_transform(parent_tform * transform);\r\n \r\n // . . .\r\n\r\n return component;\r\n });\r\n}\r\n```\r\n\r\nCorresponding component tag example:\r\n\r\n```XML\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n```\r\n\r\n## Formats of library components\r\n\r\n**StaticMesh** `static_mesh`\r\nmandatory `mat4` `transform` - component transform\r\nmandatory `string` `source` - mesh source\r\noptional `bool` `collision` - import colliders from the corresponding\r\nfile\r\n\r\n**PointLightComponent** `point_light`\r\nmandatory `mat4` `transform` - light origin transform\r\nmandatory `vec3` `color` - light source color and brightness\r\noptional `float` `radius` - light source radius (0.0 meters y default)\r\noptional `float` `spread` - affected area radius (3.0 meters by default)\r\n\r\n**AmbientLightComponent** `ambient_light`\r\nmandatory `vec3` `color` - light color\r\n\r\n**StaticBoxCollider** `box_collider`\r\nmandatory `mat4` `transform` - a matrix which transforms centered one\r\nmeter box into the desired parallelogram .\r\n\r\n## Blender as level editor\r\n\r\nThe pull request contains two extensions for blender, which can help\r\ndesigners with level creation.\r\nOne extension implements scene exporter in `.level.xml` format, and the\r\nother adds an action to transform the given mesh into\r\nframework-recognizable `StaticMesh` descriptor.\r\n\r\n### Level exporter\r\n\r\nLevel exporter recognizes any object with the `type` object property as\r\na framework-viable component, and exports it with the value of the\r\n`type` parameter as signature, object name as component name, and all\r\ncustom object properties as component parameters.\r\n\r\nObject transform is written as the `transform` parameter.\r\n\r\n![custom property list of a static mesh\r\ncomponent](https://github.com/Sigmarik/graphics-engine/assets/55981703/91dc87ef-c500-4b4d-aa80-336283837f61)\r\n\r\nIt is recommended to use premade component library to avoid manually\r\ninputting object mandatory parameters.\r\n\r\n**Recognized types**\r\n\r\nPoint lights marked with the corresponding `type` attribute get their\r\n`color` parameter filled as their light color multiplied by the light\r\nsource power.\r\n\r\nThe only exporter flag specifies weather the addon should add ambient\r\nlight component to the scene. In case the ambient light is added the\r\nworld color is written as its emission color.\r\n\r\n**Static mesh workflow tip**\r\n\r\nIt is useful to have a user-level asset library with objects defined in\r\ntheir corresponding asset files.\r\n\r\nFor example, a blender file dedicated to the tree model may have a\r\nhidden tree-shaped marker set as a static mesh component, which can be\r\nplaced on a scene with a simple drag-and-drop action from the asset\r\nshelf.\r\n\r\n## Other improvements\r\n\r\n- Updated the `BouncyObject` collision response code so it would not\r\nbounce on the floor on lower tickrates,\r\n- Added optional `capture` and `restore` methods to components,\r\n- Fixed component deletion and double registration.\r\n\r\n## Restrictions\r\n\r\nComponent type signature should not be equal to `script`, as this\r\nkeyword will be used in future versions for script assignment.\r\n\r\nMore advanced scene-scope components should be defined inside the\r\ncorresponding `Scene` derivative, as there is no support for these\r\ncomponents yet.\r\n\r\nPostprocessing volume components may be added soon.\r\n\r\n## Possible applications\r\n\r\nLevel files may not only define complete levels, but parts of one.\r\n\r\nBigger worlds can be defined in a collection of dynamically unloaded\r\nlevels, and different tiles of a randomly generated maps can be defined\r\nin their own separate level descriptors.\r\n\r\n## Future work\r\n\r\nLevel action pipelining seems like a logical next step, along with a\r\nframework component library for Blender and support for object linking\r\ninside the editor.\r\n\r\n## Keywords\r\n\r\nFixes #17","shortMessageHtmlLink":"Scene blueprints (#24)"}},{"before":"a4e6fa902ef5d91833352123dff1301547b0e9f9","after":"8f61842202dde498a1e3811d60698f72175edea6","ref":"refs/heads/assets/scene-blueprints","pushedAt":"2024-05-26T06:10:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"fix: `const`s and expiration checks","shortMessageHtmlLink":"fix: consts and expiration checks"}},{"before":"16d2e36128904ffb8c3db01778d85001dac6c258","after":"24cae773a70bd14583d15a9d071f1d9cd207ee19","ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-26T05:58:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"refactor: made `WindowManager` a structure to support code consistency","shortMessageHtmlLink":"refactor: made WindowManager a structure to support code consistency"}},{"before":"d4ef91a515b7a5f2f3e64d26f9dc193be01f208d","after":"16d2e36128904ffb8c3db01778d85001dac6c258","ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-25T17:20:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"feat: advanced window titles","shortMessageHtmlLink":"feat: advanced window titles"}},{"before":"e29680f9825b6fb45e8edb6b8aa507edfb7646a3","after":"d4ef91a515b7a5f2f3e64d26f9dc193be01f208d","ref":"refs/heads/input/binding-Input-controller-to-window","pushedAt":"2024-05-25T16:12:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"fix: merge adaptation\nfeat: window validity check\nrefactor: rename initialization function","shortMessageHtmlLink":"fix: merge adaptation"}},{"before":"060de876589990f8f2191372f7a7e6cdd6d09045","after":"a4e6fa902ef5d91833352123dff1301547b0e9f9","ref":"refs/heads/assets/scene-blueprints","pushedAt":"2024-05-25T14:18:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Sigmarik","name":"Sigmarionid","path":"/Sigmarik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55981703?s=80&v=4"},"commit":{"message":"feat: static mesh collision parsing","shortMessageHtmlLink":"feat: static mesh collision parsing"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEhC4s5AA","startCursor":null,"endCursor":null}},"title":"Activity · Sigmarik/graphics-engine"}