Tuesday, December 21, 2010

Work Progress - Dec 15 - Dec 21

Demo: here
  • Updated documentation on setting up pCSDT project here
  • Undo the pop-up windows for coordinates in SB app.
Videos/Screenshots of recent work:
  • Fix the bug that the variable name changed when moved and saved in the scriptlet window.
  • Assignment, binary statements can now drag and drop freely throughout the application. Download and load this XML for an illustration of what can be done by drag-and-drop. Below is a script that can be created with drag-and-drop now.
  • Can now control whether the skateboarder yells something during simulation (with its "Start Yelling()" and "Stop Yelling()" method codelets, and what to say by its "Change message to yell to()" method codelet)
  • Make grid the default, show # as well

Saturday, December 11, 2010

Work Progress - Dec 8 - Dec 14

Demo: here
Google doc TODO list: here

Done:
* Fix the bug that the variable name changed when moved and saved in the scriptlet window.
* Avoid invalid coordinate input by having users enter the coordinates in a pop-up window. (Try editing coordinates from the property window)
* Assignment, binary statements can now drag and drop freely throughout the application. Download and load this XML for an illustration of what can be done by drag-and-drop.
* Can now control whether the skateboarder yells something during simulation (with its "Start Yelling()" and "Stop Yelling()" method codelets, and what to say by its "Change message to yell to()" method codelet)

Mayan's suggestions
* [Done] Make grid the default, show # as well
* [Done] turn parameters to integer if possible
* [I move them to the advanced properties] hide the gravity parameters
* [Use tooltip text to explain the meaning of a negative value] name of the acceleration parameter
* [Fixed] omega in property dropdown

Wednesday, December 1, 2010

Work Progress - Dec 1 - Dec 7

Demo: here
  • Robust handling of mistyped coordinates in SB
  • Bug fix on JPnlLineProperty - no need to actually click and make selection before setting the corresponding object property
  • Modify Bill's RW code to make it compatible with the latest core.
  • Global variables are now available for drag-and-drop. Use them with care as it is still not perfect. (e.g. In [A = B + C], One can't insert a variable/an attribute to location B or C.)

Wednesday, November 24, 2010

Work Progress - Nov 24 - Nov 30

Demo: here

Done
  • Align x, y coordinate side by side.
  • Functional property assignment codelet in the template window. Drag and drop the assignment codelet (the last entry under the "Expressions" tab) to the middle window. Then you can drag and drop a property codelet to its left, and then drag and drop some constant to the right, as shown below. One can save and load such codelets.

Wednesday, November 10, 2010

Work Progress - Nov 10 - Nov 23

TODO google doc: here
Web demo: here

Bugs:
  • File->New not clear everything properly. [Fixed]
  • All event codelets show up in the same place in the scriptlet window if start with an XML file. [Apparently fixed by recreating the scene and save the XML file again]
  • Can't see subfolders in File -> Open [Fixed]
  • AutomableProperty "name" fails to show up properly if it special characters (like θ) are used. [Work around by avoiding special characters in the AutomableProperty "name" of the attribute]
  • If the project contains scripts that use binary predicate in conditionals, the saved XML file can't be loaded properly. [Fixed]
  • No horizontal scrollbar for the middle scriptlet panel. [Fixed]
Things to be improved:
  • Anti-aliasing of the line segments (Still not managed to fix that - suppose to be related to GLCapabilities and GL_LINE_SMOOTH. Ref 1, 2, 3, 4)
  • Let every landscape detect collision with the skateboarder [Achieved by offering the OnCollide event for the landscape object to sense when something collides with it. If one wants to ask the skateboarder to do something as a result, in the landscape's OnCollide event one can call the LaunchObject() method to invoke the OnBeingCalled() event of the skateboarder. In the OnBeingCalled() method of the skateboarder, one can use the if (LastCaller == xxx) conditionals to differentiate which landscape calls for actions and response appropriately.]
To think about:
  • Should methods of an object be accessible by some other object?
  • Provide drag and drop of assignment statement? Variables declared on the fly VS some predefined variables for looping/counting purpose?
  • Timer, Goal position?
  • Texturize the landscape (suggestion from Mayan)
  • Grid display
  • Ability to drag constant, object attribute and variable to the parameter field of method codelet

Monday, November 8, 2010

Work Progress - Nov 3 - Nov 9

Web demo: here

Work done:
* To adjust the visibility/editability of automatable properties, two additional annotations are introduced.
-- DesignTimeBehavior: It determines where an automatable property shows up in the property window at the bottom right. "B": show up in Basic tab of the property window, "A": show up in Advanced tab of the property window, "H": hidden. Default is "B".
-- RunTimeBehavior: It decides the editability and visibility in the Expression tab on the left. "E": editable (R+W), "R": read only, "H" - hidden. Default is "E". (Note: The Core infrastructure to differentiate "E" and "R" is yet done.)
-- Example usage:
@AutomatableProperty(name="mass", desc="mass", DesignTimeBehavior="A", RunTimeBehavior="H")
public float m_mass = 1.0f;
* Bug fix on "Detaching codelet from an event with only one child creates a java exception".
*
Lighter background, darker lines
* Thickness of lines is now an advanced property of the line.
* Use of annotation to indicate the naming convention (the default name of the newly created object) and class description (descriptive text shown in the new object creation dialog).
-- Example usage:
@AutomatableClass(name="SkateBoarder", desc="Skateboarder")
public class SkateBoarder extends PObjectJBox2d {

Wednesday, November 3, 2010

Work Progress - Oct 27 - Nov 2

Work done:

* Change SB background to a darker one, so it is not that distracting.
* Attempt to speed up simulation:
-- Increasing the step size [adjustable as an advanced property "Speedup factor" of the BoarderEngine object]: It produces less precise collision simulation.
-- Changing the gravitational constants [adjustable as basic properties "X-gravity" and "Y-gravity" of the BoarderEngine (background) object]: It affects the simulation result.
* Negative acceleration done: Try triggering Accelerate() when the skateboarder is moving downhill.
* Implement brake() which does not accelerate when the speed has been reduced to zero. (Remarks: Negative jump doesn't make much sense as now jump is now defined as providing acceleration towards the direction of the surface normal (i.e. away from the surface). Negative jump then means accelerating towards the surface, which means no effect at all after immediate collision. Also, it doesn't seem a skateboarder can exert a force that is directed towards the ground.)
* Patterned placement of line segments: try adding line segment/broadline2 objects
* Rename RocketKick() to JetpackPush()