Thursday, April 3, 2008


  • Code is under programmableCSDT directory in the repository. Instructions to set up the project for newcomers needs to documented. (this will be slightly different then the "Getting Started to Choreography" documentation)
  • Bug fixed: Variables are cleared at each run.
  • Bug fixed: All objects are reset at each run therefore we don't see previous execution's movements.
  • Bug fixed: X coordinate was not working, it's fixed.
  • Select Mode box is activated. Now, it runs only if 3D Mode is selected.
  • Object Creation panel is moved to the top.
  • Default number of frames per Human object is set to 1. If coder sets a frame that is beyond the size of animation, the in between frames are filled with copies of the last frame. When "Run" button is clicked, the animation runs from the first frame to the last frame of the longest object (longest object is the Humanoid which has the most frames)
  • Slider is added to the animation window.
  • I attempted to label the humanoid objects but put off for a later time.
  • Expression Panel is redesigned to allow more kinds of expressions.
  • All panels are deletable now. While dragging a command, only sections that can be dropped onto are highlighted.
  • Variables are also deletable. If a variable is in use, it shows the panel using that variable and prompts a dialog box stating the problem.
I thought of three ways for defining and using customized methods which are listed below. We can implement one of them once we agree on a design.

Design of Customized Methods
  1. The code space will be a tabbed panel. When a user wants to add a method to a class (e.g. Humanoid), he will choose that class to edit. The list of methods for that class will appear in a new tab.
  • A draggable "method definition" command will appear in the left panel. Number of parameters to the method, names and types of these variables will be set via a dialog box.
  • Local variables (variables valid just in the scope of the method) should be introduced. So each method will have a list of variables. For now, these variables and parameters can only be int, string, or boolean. Passing objects is not possible.
  • Only one object will be active in a custom method. So in the definition of the method, if the user wants to do a method call to a primitive method. (such as setRightKnee) In method call panel, only available object will be "this" object which corresponds to the object that customized method called on.
  • These panels and the main panel can be saved as XML and be loaded at a further time. Manually loading these custom methods each time can be cumbersome for users, so the program can look pre-specified locations for XML files to load previous implementations.
2. Custom methods can be declared in the main panel as well. As in the first design we will have a draggable "Method Creation" command. Definition of the method will be seen as . (e.g. Humanoid.go) since there may be method declarations for other classes as well. Reusability of the methods in this design is worse than the first design.

3. We can create each custom method in a new tab, but that would be too cumbersome and unmanageable if one needs to use many (more than 5) customized methods.

Lastly, we are a bit behind of the schedule we planned. We can set the following goals for the remaining month.
- Implementation of the GUI for defining and using customized methods
- Saving and Loading codes as XML
- Fixing major bugs and cosmetic improvements to the GUI
- Documentation of the project

No comments: