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()