<?xml version="1.0" encoding="UTF-8"?>
<tickets type="array">
  <ticket>
    <assigned-to-id>a9CBKW0rWr3jhKabIlDkbG</assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-04-26T18:32:57+00:00</created-on>
    <description>Make it possible for users to attach custom renderer classes</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">38085</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">12808</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">36</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">1</status>
    <story-importance type="integer">0</story-importance>
    <summary>User attachable drawing classes</summary>
    <updated-at type="datetime">2008-04-26T18:32:57+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-04-27T00:39:30+00:00</created-on>
    <description>Cleaning up the comments throughout the whole project :)

- Add comments where necessary 
- Modify comments to explain better what that code is doing
- If a comment is useless and it's not possible to enhance, deleting that comment
</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">38167</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">12808</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">37</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>Comment cleanup</summary>
    <updated-at type="datetime">2008-04-27T00:39:30+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-04-27T00:43:10+00:00</created-on>
    <description>If someone wants to play around with that ;) Could increase opengl speed.</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">38169</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">12808</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">38</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>OpenGL Batch Processing</summary>
    <updated-at type="datetime">2008-04-27T00:43:10+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-04-27T19:12:42+00:00</created-on>
    <description>Implement the elasticity parameter for add.*</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">38347</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">12808</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">39</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>Elasticity</summary>
    <updated-at type="datetime">2008-04-27T19:12:42+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-05-02T09:08:35+00:00</created-on>
    <description>&lt;kne&gt; i was thinking &quot;semi-internal&quot; functions that create shapes but don't add them, so you could modify them further, then call another function to add it to the world
&lt;kne&gt; the current functions could them obviously call these &quot;semi-internal&quot; functions and the box2d createshape
&lt;crazy-chris&gt; interesting...
&lt;kne&gt; just if you wanted to mess with it further, you could get the shape def back and do with it as you please
&lt;crazy-chris&gt; but that's kinda good idea really :)
&lt;kne&gt; (body, shapedef) = _add_box(...)</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">40770</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">12808</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">40</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>Semi-adding functions (only shape, no creating)</summary>
    <updated-at type="datetime">2008-05-02T09:08:35+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-03-31T15:57:47+00:00</created-on>
    <description>py2exe setup script for demos, ...</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">23879</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">15631</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">20</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>py2exe setup script</summary>
    <updated-at type="datetime">2008-04-27T00:40:39+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-03-31T15:58:20+00:00</created-on>
    <description>similar to py2exe, a py2app setup script would be awesome

http://undefined.org/python/py2app.html</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">23880</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">15631</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">21</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>py2app setup script</summary>
    <updated-at type="datetime">2008-04-27T00:40:53+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-04-03T21:22:00+00:00</created-on>
    <description>we need nice logos. one for the project itself, and one smaller - icon like thing :)</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">25657</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">15631</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">25</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>nice logo</summary>
    <updated-at type="datetime">2008-04-27T00:43:55+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-04-03T21:55:11+00:00</created-on>
    <description>Create video demos of Elements features to create interest in project and upload to Youtube.

Would be nice if it were demoed on an XO, but for now a simple screencast would be nice.</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">25671</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">15631</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">26</number>
    <priority type="integer">3</priority>
    <reporter-id>dlPxZ--38r3jCjabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>Demo videos with narration</summary>
    <updated-at type="datetime">2008-04-27T00:43:44+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-05-02T09:11:19+00:00</created-on>
    <description>setup.py script which should be able to:
(1) Install the Elements module

pyBox2D will be separate, so installing anything related to Box2D is unnecessary.</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">40777</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">15631</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">41</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">4</status>
    <story-importance type="integer">0</story-importance>
    <summary>setup.py</summary>
    <updated-at type="datetime">2009-03-10T17:11:50+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-03-23T20:56:20+00:00</created-on>
    <description>Implement the kind of joints in the API we need for the on-screen drawing</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">20969</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">15378</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">7</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">4</status>
    <story-importance type="integer">0</story-importance>
    <summary>Joints: Basic Implementation in the API</summary>
    <updated-at type="datetime">2008-04-27T00:34:02+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-03-30T16:59:28+00:00</created-on>
    <description>If the user supplies wrong values -- eg pixels instead of meters,
box2d will just crash. Catching and a message would be a nice thing :)</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">23572</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">15378</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">18</number>
    <priority type="integer">3</priority>
    <reporter-id>a9CBKW0rWr3jhKabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">0</status>
    <story-importance type="integer">0</story-importance>
    <summary>Check for wrong parameters -- pixels vs meters</summary>
    <updated-at type="datetime">2008-04-24T19:28:30+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
  <ticket>
    <assigned-to-id nil="true"></assigned-to-id>
    <completed-date type="datetime" nil="true"></completed-date>
    <component-id type="integer" nil="true"></component-id>
    <created-on type="datetime">2008-04-13T14:00:11+00:00</created-on>
    <description>The game world is currently limited to what can be drawn on the extents of the window. For actual games, it's obvious that the screen needs to track various objects, the mouse, etc.

So, my proposal is to have a sort of camera-class that is called on every physics update (or perhaps on every event, as for mouse movement). We can have several types of classes, these few immediately came to mind:

&quot;Track an object at the center, losely track an object at the center, always look at a certain point, and tracking a certain object at an offset on the screen (so you can have your 'mario' not in the middle, but somewhere near the ground or so), and then perhaps limits to how far down it'll go (wrt the bounds of the world), ... &quot;

These could be individual classes that implement:
 to_world/to_screen - coordinate conversions
 update() - to update the current object / set new mouse coordinates
 pause() - pause the camera at the current point
 set_focus() - set the focus on a new object (as supported, not for mouse)
 set_parameter() - for losely/lazily tracking objects, set the speed at which it does that
and more as I think of it...

It might also be nice to abstract the current world's ppm into this and allow for dynamic zooming. Though perhaps the ppm could stay as it is, and we just have another scaling factor for the camera. We'll see!</description>
    <from-support type="boolean">false</from-support>
    <id type="integer">29730</id>
    <importance type="integer">0</importance>
    <is-story type="boolean">false</is-story>
    <milestone-id type="integer">15378</milestone-id>
    <notification-list nil="true"></notification-list>
    <number type="integer">31</number>
    <priority type="integer">3</priority>
    <reporter-id>aoRk8O-g4r3jarabIlDkbG</reporter-id>
    <space-id>b6Webe9e8r3lKwabIlDkbG</space-id>
    <status type="integer">4</status>
    <story-importance type="integer">0</story-importance>
    <summary>Cameras</summary>
    <updated-at type="datetime">2008-04-24T20:30:16+00:00</updated-at>
    <working-hours type="float">0.0</working-hours>
    <working-hour type="float">0.0</working-hour>
  </ticket>
</tickets>
