# `class WMShape extends WMObjBase`

Available on all platforms

A general shape composed by triangles

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

## Instance Fields

### `var flat:Bool`

(only for debugging purpose) Use flat shading or not. default is false.

### `var posstr0:Array<String>`

positions

### `var posstr1:Array<String>`

positions

### `var posstr2:Array<String>`

positions

### `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 (0.0), not used
- c0: color (0x00FF00; lime)
- c1: color, currently not used (0x00FF00, lime)
- a: alpha (1.0, opaque)
- o: offset, not used (0.0), not used.
- q: quality, higher is better (0), not used.
- ag: ambient intensity (0.4)
- d: diffuse intensity (0.5)
- sp: specular intensity (0.2)
- 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():WMShape`

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; returns number of triangles.

### `function getPositions0():Array<Point3D>`

### `function getPositions1():Array<Point3D>`

### `function getPositions2():Array<Point3D>`

### `function get_flat():Bool`

getter of `flat`

### `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 setPositions0(ar:Array<Point3D>):Void`

### `function setPositions1(ar:Array<Point3D>):Void`

### `function setPositions2(ar:Array<Point3D>):Void`

### `function set_flat(f:Bool):Bool`

setter of `flat`

### `function sumPos():Point3D`

sum of position

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

translate coordinate by `p`