{"action":"created","issue":{"url":"https://api.github.com/repos/tgstation/-tg-station/issues/12725","labels_url":"https://api.github.com/repos/tgstation/-tg-station/issues/12725/labels{/name}","comments_url":"https://api.github.com/repos/tgstation/-tg-station/issues/12725/comments","events_url":"https://api.github.com/repos/tgstation/-tg-station/issues/12725/events","html_url":"https://github.com/tgstation/-tg-station/pull/12725","id":113991067,"number":12725,"title":"Xenobiology Control Console","user":{"login":"KorPhaeron","id":14340985,"avatar_url":"https://avatars.githubusercontent.com/u/14340985?v=3","gravatar_id":"","url":"https://api.github.com/users/KorPhaeron","html_url":"https://github.com/KorPhaeron","followers_url":"https://api.github.com/users/KorPhaeron/followers","following_url":"https://api.github.com/users/KorPhaeron/following{/other_user}","gists_url":"https://api.github.com/users/KorPhaeron/gists{/gist_id}","starred_url":"https://api.github.com/users/KorPhaeron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KorPhaeron/subscriptions","organizations_url":"https://api.github.com/users/KorPhaeron/orgs","repos_url":"https://api.github.com/users/KorPhaeron/repos","events_url":"https://api.github.com/users/KorPhaeron/events{/privacy}","received_events_url":"https://api.github.com/users/KorPhaeron/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-10-29T06:38:40Z","updated_at":"2015-10-29T09:50:35Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/tgstation/-tg-station/pulls/12725","html_url":"https://github.com/tgstation/-tg-station/pull/12725","diff_url":"https://github.com/tgstation/-tg-station/pull/12725.diff","patch_url":"https://github.com/tgstation/-tg-station/pull/12725.patch"},"body":"A free look/advanced camera console that  can pick up and place slimes remotely, as well as deploy monkeys from stored monkey cubes. One of the biggest complaints about xenobio is how tedious and clunky it is dragging all the monkeys and slimes about, so hopefully this makes it more enjoyable.\r\n\r\nSet to RD network cameras only so you can't just dump slimes all over the station (unless you go build new RD cameras I guess, but that could be a fun traitor thing).\r\n\r\nDONE:\r\n-Basically the whole machine. All the functions of it work in testing.\r\n\r\nTODO: \r\n\r\n-Icons\r\n-Changelog\r\n-Feeding monkey cubes to machine\r\n-Put it on the map(s)\r\n-Figure out why it can see all cameras despite being set to only see RD cameras (general bug with advanced camera consoles maybe? @Anturk?)\r\n-Clean up some copypaste in the CameraOff part\r\n\r\nThanks to @AnturK for making these advanced camera machines in the first place"},"comment":{"url":"https://api.github.com/repos/tgstation/-tg-station/issues/comments/152131029","html_url":"https://github.com/tgstation/-tg-station/pull/12725#issuecomment-152131029","issue_url":"https://api.github.com/repos/tgstation/-tg-station/issues/12725","id":152131029,"user":{"login":"Giacom","id":1524810,"avatar_url":"https://avatars.githubusercontent.com/u/1524810?v=3","gravatar_id":"","url":"https://api.github.com/users/Giacom","html_url":"https://github.com/Giacom","followers_url":"https://api.github.com/users/Giacom/followers","following_url":"https://api.github.com/users/Giacom/following{/other_user}","gists_url":"https://api.github.com/users/Giacom/gists{/gist_id}","starred_url":"https://api.github.com/users/Giacom/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Giacom/subscriptions","organizations_url":"https://api.github.com/users/Giacom/orgs","repos_url":"https://api.github.com/users/Giacom/repos","events_url":"https://api.github.com/users/Giacom/events{/privacy}","received_events_url":"https://api.github.com/users/Giacom/received_events","type":"User","site_admin":false},"created_at":"2015-10-29T09:50:35Z","updated_at":"2015-10-29T09:50:35Z","body":"It wouldn't be hard but maybe tedious to test, you would need to add another layer to the system.\r\n\r\n```\r\ncameranet 1 --- ∞ cameranetwork 1 --- ∞ camerachunk\r\n```\r\n\r\n* You would have to add a new datum in between the cameranet and its list of chunks representing all the camera networks.\r\n* It would then hold all the chunks and have all the information, such as class fields, it needs which cameranet is holding.\r\n* Then when you add/remove/update a chunk, you would need to loop through the list and update each network with the data you already collected, such as what the camera can and cannot see.\r\n* Finally you filter out chunks which cameras, within the network, can't see.\r\n\r\nPossible problems:\r\n* If you were wondering about duplicate chunks then you would maybe want to optimise it so that different networks are referencing the same chunk but memory size if not a big bottleneck in BYOND so having duplicate chunks in each network is not the end of the world. The optimisation would also be a huge pain in the ass to make sure it works correctly.\r\n* Filtering out the cameras, which aren't in the network, would probably involve looping through cameras and that will probably add some lag to the system already."}}