# `class WMAtom extends WMObjBase`

Available on all platforms

Atom object; a sphere.

See `WMBase` and `WMObjBase` classes for inheritted parameters.

## Instance Fields

### `var opos:Point3D`

old position; currently unused, no default

### `var pos:Point3D`

position of atom; no default

### `function new(r:Float, c0:Int, c1:Int, a:Float, o:Float, q:Int, ag:Float, d:Float, sp:Float, gl:Float, sh:String):Void`

Constructor. Parameters are listed below, where values in parenthesis are default values.

- r: radius (1.0)
- c0: color (0x00FF00; lime)
- c1: color, currently not used (0x00FF00, lime)
- a: alpha (1.0, opaque)
- o: offset, not used (0.0)
- q: quality, higher is better (3)
- ag: ambient intensity (0.35)
- d: diffuse intensity (0.6)
- sp: specular intensity (0.3)
- gl: gloss (30.0)
- sh: shader type ("Phong")

### `function absmax():Point3D`

absolute max of position: max(abs(x),abs(y),abs(z))

### `function clear(def:WMDefaults):Void`

initialize values; if `def` is given, that is used as initial value.

### `function clone():WMAtom`

returns clone of `this` instance

### `function gen(c:Context3D, is_dc_active:Bool):Void`

generate polygon and set corresponding shaders; this function calls `pregen` and `gen2`.

### `function gen2(c:Context3D, is_dc_active:Bool):Void`

generate polygon and shader. Call `pregen` function before. This function should not be called explicitly unless you are using multiple Workers.

### `function getDataSize():Int`

predefined cost for drawing; return always 10.

### `function get_opos():Point3D`

getter for `opos`

### `function get_pos():Point3D`

getter for `pos`

### `function loadFromXml(x:Xml, def:WMDefaults):Void`

load from XML; if `def` is given, that is used as initial value. See also `clear` function of this class.

### `function loadFromXmlOverwrite(x:Xml):Void`

read XML while overriding default values; this function does not read WMAtom specific fields. Use `loadFromXmlWOClear` when loading WMAtom specific fields.

### `function loadFromXmlWOClear(x:Xml):Void`

load XML data; usually this function is called by loadFromXml function

### `function num():Int`

number of elements inside; return always 1.

### `function pregen():Void`

preparation for generating polygon. This function is explicitly used in non-primordial Worker, where Context3D of the primordial Worker is not available. If Worker is not used, this function should not be called explicitly.

### `function scaleCoord(scale:Float):Void`

scale position by `scale`

### `function set_opos(p:Point3D):Point3D`

setter for `opos`

### `function set_pos(p:Point3D):Point3D`

setter for `pos`

### `function sumPos():Point3D`

sum of position

### `function translate(p:Point3D):Void`

translate coordinate by `p`