{"action":"closed","issue":{"url":"https://api.github.com/repos/BlackToppStudios/Mezzanine/issues/68","labels_url":"https://api.github.com/repos/BlackToppStudios/Mezzanine/issues/68/labels{/name}","comments_url":"https://api.github.com/repos/BlackToppStudios/Mezzanine/issues/68/comments","events_url":"https://api.github.com/repos/BlackToppStudios/Mezzanine/issues/68/events","html_url":"https://github.com/BlackToppStudios/Mezzanine/issues/68","id":22099906,"number":68,"title":"World Restructuring","user":{"login":"MakoEnergy","id":1058395,"avatar_url":"https://avatars.githubusercontent.com/u/1058395?v=3","gravatar_id":"","url":"https://api.github.com/users/MakoEnergy","html_url":"https://github.com/MakoEnergy","followers_url":"https://api.github.com/users/MakoEnergy/followers","following_url":"https://api.github.com/users/MakoEnergy/following{/other_user}","gists_url":"https://api.github.com/users/MakoEnergy/gists{/gist_id}","starred_url":"https://api.github.com/users/MakoEnergy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MakoEnergy/subscriptions","organizations_url":"https://api.github.com/users/MakoEnergy/orgs","repos_url":"https://api.github.com/users/MakoEnergy/repos","events_url":"https://api.github.com/users/MakoEnergy/events{/privacy}","received_events_url":"https://api.github.com/users/MakoEnergy/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/BlackToppStudios/Mezzanine/labels/Feature-Major","name":"Feature-Major","color":"11bb55"}],"state":"closed","locked":false,"assignee":{"login":"feartheducky","id":2653259,"avatar_url":"https://avatars.githubusercontent.com/u/2653259?v=3","gravatar_id":"","url":"https://api.github.com/users/feartheducky","html_url":"https://github.com/feartheducky","followers_url":"https://api.github.com/users/feartheducky/followers","following_url":"https://api.github.com/users/feartheducky/following{/other_user}","gists_url":"https://api.github.com/users/feartheducky/gists{/gist_id}","starred_url":"https://api.github.com/users/feartheducky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/feartheducky/subscriptions","organizations_url":"https://api.github.com/users/feartheducky/orgs","repos_url":"https://api.github.com/users/feartheducky/repos","events_url":"https://api.github.com/users/feartheducky/events{/privacy}","received_events_url":"https://api.github.com/users/feartheducky/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/BlackToppStudios/Mezzanine/milestones/5","html_url":"https://github.com/BlackToppStudios/Mezzanine/milestones/Mezzanine%20Initial%20Public%20Release","labels_url":"https://api.github.com/repos/BlackToppStudios/Mezzanine/milestones/5/labels","id":526738,"number":5,"title":"Mezzanine Initial Public Release","description":"This will be a release of the Mezzanine before the APIs are frozen. This will not have all the features or even systems in place. It should have enough functionality to make a variety of demos and Indie quality games. Once this is reached real attempts at external marketing will begin.","creator":{"login":"Sqeaky","id":1239092,"avatar_url":"https://avatars.githubusercontent.com/u/1239092?v=3","gravatar_id":"","url":"https://api.github.com/users/Sqeaky","html_url":"https://github.com/Sqeaky","followers_url":"https://api.github.com/users/Sqeaky/followers","following_url":"https://api.github.com/users/Sqeaky/following{/other_user}","gists_url":"https://api.github.com/users/Sqeaky/gists{/gist_id}","starred_url":"https://api.github.com/users/Sqeaky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sqeaky/subscriptions","organizations_url":"https://api.github.com/users/Sqeaky/orgs","repos_url":"https://api.github.com/users/Sqeaky/repos","events_url":"https://api.github.com/users/Sqeaky/events{/privacy}","received_events_url":"https://api.github.com/users/Sqeaky/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":13,"state":"open","created_at":"2014-01-05T06:05:54Z","updated_at":"2015-04-10T23:28:15Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2013-11-05T05:03:01Z","updated_at":"2015-04-10T23:28:15Z","closed_at":"2015-04-10T23:28:15Z","body":"Previously we had made a world class that housed all the managers and the design was intended to be setup so multiple worlds could be constructed on the fly if need be, each one being self contained.  Some engine features and subsystems didn't make sense with this approach, such as Input.  We then changed the \"World\" class to the \"Entresol\" class and singletonized all the managers, since we figured we're only making one of these in almost all use cases.  This design was too restrictive.\r\n\r\nNow we are going to do both, keeping the engine-wide facilities some managers provide as managers to be handled by the Entresol, and others that are responsible for managing the simulation state on the World.\r\n\r\nThe WorldManager base class is mostly complete, only needing a few tweaks.  The world managers need to be removed from the Entresol and moved over to the World class.  A series of methods for managing worlds also needs to be added to the Entresol.  All calls to access world managers through the Entresol need to be updated to retrieve from the world they need to access, depending on the context of the method, instead.  Other minor tweaks may be necessary.\r\n\r\nThis will add the construction and initialization of a world as a necessary step for applications trying to setup a simulation, but also give us a design that is more flexible for future advancement of the Mezzanine Engine."}}