{"action":"created","issue":{"url":"https://api.github.com/repos/ksundberg/CS5500/issues/46","labels_url":"https://api.github.com/repos/ksundberg/CS5500/issues/46/labels{/name}","comments_url":"https://api.github.com/repos/ksundberg/CS5500/issues/46/comments","events_url":"https://api.github.com/repos/ksundberg/CS5500/issues/46/events","html_url":"https://github.com/ksundberg/CS5500/issues/46","id":65271993,"number":46,"title":"Enhanced Physics Engine","user":{"login":"tre4got","id":10501020,"avatar_url":"https://avatars.githubusercontent.com/u/10501020?v=3","gravatar_id":"","url":"https://api.github.com/users/tre4got","html_url":"https://github.com/tre4got","followers_url":"https://api.github.com/users/tre4got/followers","following_url":"https://api.github.com/users/tre4got/following{/other_user}","gists_url":"https://api.github.com/users/tre4got/gists{/gist_id}","starred_url":"https://api.github.com/users/tre4got/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tre4got/subscriptions","organizations_url":"https://api.github.com/users/tre4got/orgs","repos_url":"https://api.github.com/users/tre4got/repos","events_url":"https://api.github.com/users/tre4got/events{/privacy}","received_events_url":"https://api.github.com/users/tre4got/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-03-30T18:28:02Z","updated_at":"2015-03-31T01:08:10Z","closed_at":null,"body":"Trevor Gotberg:\r\n\r\nThe current Physics Engine will no longer work with the updates to the Voxel Engine. A new design must be implemented requiring almost an entire re-write of the Physics Engine. This new design will include the following features:\r\n\r\n1. Dynamically create/destroy blocks in the \"physics world\" (each block in the world will be represented in the Physics Engine as an object with mass, velocity, acceleration, and position).\r\n\r\n2. Keep track of all the blocks in the world that are currently in motion and allow physics to be run ONLY on the moving objects.\r\n\r\n3. Basic collision detection and resolution.\r\n\r\n4. Exposed method to apply forces to specific blocks and set them in motion.\r\n\r\nAnalysis:\r\nThe creation and destruction of blocks can be done very much in parallel. A simple map for both of these functions is all that's required. Once all the blocks are created we'll mark the ones that are moving and add them to the active object list. The time it takes to create or destroy a new object can be considered constant.\r\nwork: 1\r\nspan: n\r\nThis is very scale-able. \r\n\r\nCollision detection will have to use a stencil to observe the blocks surrounding it to determine if it has made any contact. This stencil will look at the blocks directly around the block in question to determine collisions and if any of those blocks are moving we'll have to run the physics on those block very carefully to make sure collisions are handled appropriately. These collisions can be run in parallel, so collision detection will be a map of stencils.\r\nwork: c -> c is the number of collisions for the block in question\r\nspan: n -> n is the number of moving objects\r\nAgain this is very scale-able."},"comment":{"url":"https://api.github.com/repos/ksundberg/CS5500/issues/comments/87891445","html_url":"https://github.com/ksundberg/CS5500/issues/46#issuecomment-87891445","issue_url":"https://api.github.com/repos/ksundberg/CS5500/issues/46","id":87891445,"user":{"login":"tre4got","id":10501020,"avatar_url":"https://avatars.githubusercontent.com/u/10501020?v=3","gravatar_id":"","url":"https://api.github.com/users/tre4got","html_url":"https://github.com/tre4got","followers_url":"https://api.github.com/users/tre4got/followers","following_url":"https://api.github.com/users/tre4got/following{/other_user}","gists_url":"https://api.github.com/users/tre4got/gists{/gist_id}","starred_url":"https://api.github.com/users/tre4got/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tre4got/subscriptions","organizations_url":"https://api.github.com/users/tre4got/orgs","repos_url":"https://api.github.com/users/tre4got/repos","events_url":"https://api.github.com/users/tre4got/events{/privacy}","received_events_url":"https://api.github.com/users/tre4got/received_events","type":"User","site_admin":false},"created_at":"2015-03-31T01:08:10Z","updated_at":"2015-03-31T01:08:10Z","body":"You bring up a good point about mass. I was going to make mass variable just in case anyone had plans to elaborate on our textures. But if that's not the case we can use a constant mass. \r\n\r\nWhen I talked with other members of our team we decided to pass blocks to the Physics Engine by using the Rectangular Prism object already in the repository rather than use the Chunks. However, I'd be more than willing to code it either way if it makes the Voxel Engine's job a little easier. "}}