{"action":"created","issue":{"url":"https://api.github.com/repos/OpenMW/openmw/issues/844","labels_url":"https://api.github.com/repos/OpenMW/openmw/issues/844/labels{/name}","comments_url":"https://api.github.com/repos/OpenMW/openmw/issues/844/comments","events_url":"https://api.github.com/repos/OpenMW/openmw/issues/844/events","html_url":"https://github.com/OpenMW/openmw/pull/844","id":120603363,"number":844,"title":"First draft of serialization routines.","user":{"login":"cfcohen","id":2515512,"avatar_url":"https://avatars.githubusercontent.com/u/2515512?v=3","gravatar_id":"","url":"https://api.github.com/users/cfcohen","html_url":"https://github.com/cfcohen","followers_url":"https://api.github.com/users/cfcohen/followers","following_url":"https://api.github.com/users/cfcohen/following{/other_user}","gists_url":"https://api.github.com/users/cfcohen/gists{/gist_id}","starred_url":"https://api.github.com/users/cfcohen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cfcohen/subscriptions","organizations_url":"https://api.github.com/users/cfcohen/orgs","repos_url":"https://api.github.com/users/cfcohen/repos","events_url":"https://api.github.com/users/cfcohen/events{/privacy}","received_events_url":"https://api.github.com/users/cfcohen/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/OpenMW/openmw/labels/Discussion","name":"Discussion","color":"fbca04"},{"url":"https://api.github.com/repos/OpenMW/openmw/labels/Do%20not%20merge","name":"Do not merge","color":"f7c6c7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":13,"created_at":"2015-12-06T02:44:20Z","updated_at":"2015-12-11T21:00:56Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/OpenMW/openmw/pulls/844","html_url":"https://github.com/OpenMW/openmw/pull/844","diff_url":"https://github.com/OpenMW/openmw/pull/844.diff","patch_url":"https://github.com/OpenMW/openmw/pull/844.patch"},"body":"This isn't really a pull request, but rather a request for review and commentary (if you're willing).   My real goal here was to learn some more about OpenSceneGraph, the OSGB/OSGT file format, OpenMW, NIF, etc.  That has certainly happened. :-) As usual, I've reached the point where I'm in over my head, and could use your guidance regardless of whether you ever intend to accept this pull request.\r\n\r\nThe general idea is that there's a new command \"nifconv\" that initializes the engine just far enough to load meshes, and then invokes the OutputStream writer to serialize the object.   There are two new shared libraries that are loaded dynamically by OSG to both read and write the extended object types.   Long term, I'd like to be able to run completely off OSGB assets as a proof of concept.  I've successfully written most of the NIFs in standard distribution, but I don't claim that they're all working properly (just the writing completes without crashing).\r\n\r\nThere are known problems with this commit, including a memory corruption problem when serializing to OSGT format that doesn't appear to happen when serializing to OSGB format.   I continue to find the OSG serialization code fragile, and confusing. :-(  I'll comment in more detail on individual parts of the code where I have questions or specific requests for changes (some changes are just minor bug fixes in the current code)."},"comment":{"url":"https://api.github.com/repos/OpenMW/openmw/issues/comments/164046478","html_url":"https://github.com/OpenMW/openmw/pull/844#issuecomment-164046478","issue_url":"https://api.github.com/repos/OpenMW/openmw/issues/844","id":164046478,"user":{"login":"cfcohen","id":2515512,"avatar_url":"https://avatars.githubusercontent.com/u/2515512?v=3","gravatar_id":"","url":"https://api.github.com/users/cfcohen","html_url":"https://github.com/cfcohen","followers_url":"https://api.github.com/users/cfcohen/followers","following_url":"https://api.github.com/users/cfcohen/following{/other_user}","gists_url":"https://api.github.com/users/cfcohen/gists{/gist_id}","starred_url":"https://api.github.com/users/cfcohen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cfcohen/subscriptions","organizations_url":"https://api.github.com/users/cfcohen/orgs","repos_url":"https://api.github.com/users/cfcohen/repos","events_url":"https://api.github.com/users/cfcohen/events{/privacy}","received_events_url":"https://api.github.com/users/cfcohen/received_events","type":"User","site_admin":false},"created_at":"2015-12-11T21:00:55Z","updated_at":"2015-12-11T21:00:55Z","body":"I continue to be unhappy with the places where I've moved members from private to public (required so that they can be access by the static serializers).  My preferred alternative is to define const getters and setters so that the exposed member is at least const when it's returned to the caller.  I've done this in a few places where I had to in order to use the add serialzier macros.  I don't see much that can be done about the need for for a setter.  Perhaps a friend class?  That seems like overkill to me.\r\n\r\nThis is a code style religious issue, and right now I'm doing the thing that's easiest to merge (moving to public).  I'd like guidance on what you really want done here, or whether I should continue to keep the merge as small as possible."}}