JavascriptGraphicsAPI

From Sirikata Wiki
Revision as of 22:13, 6 February 2010 by Danielrh (talk | contribs)
Jump to navigation Jump to search

Cross thread communication from Physics and Networking to graphics

Objects are sent across the thread barrier to alter the current scene graph being displayed


Creating a new graphics object

{
 msg:"Create"
 id:"f47ac10b-58cc-4372-a567-0e02b2c3d479"
 pos:[1,2,3],
 vel:[.25,0,0],
 orient:[.5,0,0,.5]
 rotaxis:[0,0,1]
 rotvel:.25,
 parent:"c46ac00b-58cc-4372-a567-0e02b2c3d479"//<-- optional
}

Moving a graphics object

{
  msg:"Move"
  id:"f47ac10b-58cc-4372-a567-0e02b2c3d479"
  pos:[1,2,3],
  vel:[.25,0,0],
  orient:[.5,0,0,.5]
  rotaxis:[0,0,1]
  rotvel:.25,
  parent:"c46ac00b-58cc-4372-a567-0e02b2c3d479"//<-- optional
}


Adding/changing light property for an object

{
  msg:"Light"
  id:"f47ac10b-58cc-4372-a567-0e02b2c3d479"
  diffuse_color:[.25,.5,1],
  specular_color: [.2,1,.5],
  power=1.0: //exponent on the light
  ambient_color: [0,0,0],
  light_range: 1.0e5
  constant_falloff: 0.5,
  linear_falloff: 0.2,
  quadratic_falloff: 0.1,
  cone_inner_radians: 0,
  cone_outer_radians: 0,
  cone_falloff: 0.5,
  type: "POINT",//options include "SPOTLIGHT" or "DIRECTIONAL"
  casts_shadow: true
}


//This message is from a space to an object updating its position and orientation
//If sent in response to a LocRequest, the information must be valid.
{
timestamp: new Date().getTime(), // ????? Should we only use extrapolated positions
position: [1,2,3],
orientation: [.5,0,0,.867],
velocity: [1,1,1],
rotational_axis: [0,1,0],
angular_speed: 1.0,
forced_update: false, // if we do extrapolation

}

Destroying a graphics object

{
   msg:"Destroy"
   id:"f47ac10b-58cc-4372-a567-0e02b2c3d479"
}

Attaching a graphics object