ZzDC Component reference

struktur
  name
  desc
  see also
  properties
  
-------------------
@name=Group

Represents a logical grouping of components. It does not provide any funcionality other than helping to make your project more readable by organizing your components into folders.

@properties
Children 
Child components of this group.

-------------------
@Name=Bitmap

A representation of a bitmap image that can be used as a texture.

@See also: Material,BitmapExpression

@properties
Producers
A list of components that provide the definition of the bitmap.

Height
Bitmap height. Must be a power-of-two value such as 16,32,64 etc.

Width
Bitmap width. Must be a power-of-two value such as 16,32,64 etc.

-------------------
@Name=BitmapRect

A bitmap producer component that paints a rectangle.

This component can only be used in the Bitmap.Producers property.

@See also: Bitmap

@properties
Color
Color of the rectangle

Size
Size of the rectangle
-------------------
@Name=BitmapZoomRotate

A bitmap producer component that can scale and rotate a bitmap.

This component can only be used in the Bitmap.Producers property.

@example use
ZPong BatTexture

@properties
Zoom
Amount to zoom in on bitmap. This value can be negative, which makes the bitmap scale down.

Rotation
Amount to rotate bitmap in cycles (1.0 = 360 degrees).

-------------------
@Name=BitmapExpression

A bitmap producer component that generates a bitmap from a mathematical expression.

This component can only be used in the Bitmap.Producers property.

@example use
ZPong BallTexture

@See also: Expressions

@properties
Expression
The expression which defines the bitmap. The expression is called once for every pixel in the bitmap. A number of special properties are valid within the expression. "X" and "Y" holds the current x and y coordinate in 0 to 1 range. Assign "Pixel" color to set the current pixel. Example of a valid expression: "this.Pixel.R=abs(X-0.5)*2;"

-------------------
@Name=Mesh

A representation of geometry that are used for 3D-graphics.

@See also: MeshSphere

@example use: See "BallMesh" in ZPong sample project

@properties
Producers
A list of components that provide the definition of the mesh.

-------------------
@Name=Model

Defines a moving graphical object. Contains information on how to render and move the object. To create a instance of a model use the SpawnModel-component.

@example use: See "BallModel" in ZPong sample project

@properties
Definitions
List of private data for this model. Every instance of a model have their own copy of the components in this list. Use the DefineVariable-component to define private variables. Other components such as Mesh or Bitmap can be placed here as well. This allows creating models that have unique geometry for every instance (see MonkeyModel in TripleE-sample project).
However, the data is created during spawning, so only use very small meshes or bitmaps otherwise there will be noticable delays in your game when the models are spawned.

States
A list of ModelState-components for this model.
  
OnRender
This componentlist is called when it's time to render this model to the screen. Use render-command component such as RenderMesh to render your models.

OnUpdate
Called between every frame update. Here you should put components that update your models position.

OnSpawn
Called once when this model is spawned (created). Use components that initialize your models local variables here.

OnRemove
Called when the model is removed.

OnCollision
Called when this model has collided with another model. Collision detection must have been enabled using a DefineCollision-component. A ZExpression defined here can examine which category the model has collided with using the App.CollidedCategory property.

Animators
A list of animators for this model.

Position
The models current position in 3D-space.

Rotation
The models current rotation in 3D-space in cycles (one cycle = 360 degrees = 2PI).

Velocity
Current velocity in 3D-space. Assign a velocity using a ZExpression to make your model move.

Scale
Current scale of model. Default value is 1 for the scale in x,y,z directions. A model can be scaled up and down, for instance 0.5 is half size and 2.0 doubles the size.

Category
Use a seperate category for every kind of model for which a seperate collision detection should be used. See DefineCollision-component.

CollisionBounds
The size of this model when it is tested for collision. The first value represents the width, and the second value is the height. Currently only 2D collision detection is implemented, so models cannot be tested for collision in Z (depth) axis.

CollisionOffset
Offset-value for the models position when it is tested for collision. This can be used for moving the center point of collision from the center point of the geometry, for instance a "weak spot" on a enemy boss. First value is offset in X axis, second is Y.

Personality
This is a readonly value that is automatically assigned a random value between 0 and 1 when a model is spawned. Use this value in expressions for making every instance of a model slightly unique. For example see BoidModel in Steering sample project, it uses the Personality-value for modifying the localy defined mesh to give every boid a separate appearance.

-------------------
@Name=Material
A definition of material properties for rendered objects.

See also: [[UseMaterial]]

!!Properties
!!!!Texture
If set to a [[Bitmap]] then the material will the bitmap for texturing.

!!!!TextureScale
When texturing is used, this value controls scaling of the texture. 1.0 is the default value for normal scale. 0.5 is half scale, 2.0 is double scale.

!!!!TextureX / TextureY
When texturing is used, this values controls the texture offset in X and Y axis. Animate the values to "move" the texture over the rendered object.

!!!!Shading
One of:
*Smooth - Smooth shading
*Flat - Flat shading
*Wireframe - Wireframe.
Default is Smooth.

!!!!Color
The color of the material. See also [[RenderSetColor]] for an alternative of setting individual colors to models using the same material.

!!!!Light
If set then the material will be lit.

!!!!Blend
Controls the blending mode used.
Can have one of the following values:
*None
*Alpha/OneMinusSourceAlpha
*Alpha/One
*Color/OneMinusSourceColor
*AlphaSaturate/One
See external link: [[http://www.opengl.org/resources/faq/technical/transparency.htm | Transparency, Translucency, and Blending (OpenGL.org)]].

!!!!TexCoords
*Generated - Material will use automatically generated texture coordinates.
*ModelDefined - Texture coordinates supplied with the model will be used. Set this value when using the RenderSprite-component.
Default is Generated.

!!!!ZBuffer
Material will use Z-buffer when rendering. Default is set.

!!!!DrawBackFace
If this value is set then surfaces turned away from the camera will be rendered. Set this value when rendereing transparent surfaces. Default is off.

-------------------
@Name=SpawnModel

Creates an instance of a model.

@properties
Model
A reference to the model that will be spawned.

Position
If not set to zero then this property is the position that the model will have when it has been spawned.

SpawnStyle
Can be set to either 'Clone' or 'Reference'. If set to 'Clone' the model and all its children will be cloned for each instantiation. If set to 'Reference' it will spawn the actual model it refers to. A model spawned with 'Reference' can only be spawned once, then it has to be removed before it can be respawned.

UseSpawnerPosition
If this property is set then the spawned model will use the same position as the model that issues the SpawnModel-command. Useful when a model should emit other models, like a model firing missiles for instance.

InitialActive
Set the spawned model 'Active'. This property is set by default.

SpawnerIsParent
Sets CurrentModel as 'Parent' to the spawned model. If a model has a parent then it will automatically be removed when its parent is removed.

-------------------
@Name=RemoveModel

Removes the model that is issuing this command.

@properties

-------------------
@Name=ActivateModel

Activates the model that is issuing this command. A model can be spawned in an inactive state by setting the SpawnModel.InitialActive property to false. An inactive model is rendered and the animators are updated, but the Update-commands are not called and the position is not updated.

@properties

-------------------
@Name=MeshBox

A mesh producer that generates a equal sided box around origin with the range -1 to 1.

This component can only be used in the Mesh.Producers property.

@example use: See "BatMesh" in ZPong sample project

@properties
Scale
Modifies the scale of the generated box.

-------------------
@Name=MeshSphere

A mesh producer that generates a sphere.

This component can only be used in the Mesh.Producers property.

@example use: See "BallMesh" in ZPong sample project

@properties
Scale
Modifies the scale of the generated sphere.

ZSamples
Nr of steps that the sphere will be subdivided in the Z (depth) direction.

RadialSamples
Nr of steps that the sphere will be subdivided around the Z-axis.

-------------------
@Name=MeshNoise

A mesh producer that filters an incoming mesh with Perlin noise. Try building a mesh with a MeshSphere and then adding a MeshNoise to see its effect.

This component can only be used in the Mesh.Producers property.

@properties
NoiseSpeed
Every incoming vertex in multiplied with this amount before sent in to the noise function.

NoiseScale
The output of the noise function is scaled with this value.

SymmetryX,SymmetryY,SymmetryZ
Set to control if the noise should be applied symmetrically in each axis.

-------------------
@Name=MeshExpression

A mesh producer that filters an incoming mesh with an expression.

This component can only be used in the Mesh.Producers property.

@example use: See "BoidMesh" in Steering sample project

@properties
Expression
An expression that is called once for every vertex in the mesh. The special read/write property "V" holds the current vertex. Modify this value to change the vertex. Example of a valid expression: "this.V.X*=2;"

-------------------
@Name=RemoveAllModels

Remove all models from the screen.

-------------------
@Name=MeshImplicit

A mesh producer that generates a mesh based on implicit functions.

This component can only be used in the Mesh.Producers property.

Note: The implicit meshes components are highly experimental. Setting invalid property values may lock up the editor. Make sure you save your data often!

@properties
Function
The implicit function that will be evaluted for defining the mesh.

TriangleSize
The size of generated triangles. The lower the value, the more detailed mesh will be produced. Be careful when setting very low values (below 0.05) because it will generate many thousands of triangles and take a long time finish.

Bounds
Controls the outer bound of the area that will be evaluated. Set this value to cut-off large meshes.

-------------------
@Name=ImplicitPrimitive

An implicit function that generates a geometric primitive.

This component can only be used in the MeshImplicit.Function property.

@See also: MeshImplicit

@properties
Kind
The kind of primitive to generate: Sphere, Torus or Cube.

Param1,Param2
Paremeter to the primitive. For Torus this is inner and outer radius.

-------------------
@Name=ImplicitExpression

An implicit function defined by an expression.

This component can only be used in the MeshImplicit.Function property.

@See also: MeshImplicit

@properties
Expression
An expression that is called when the implicit surface polygonizer is sampling the surface. The special read-only properties "X","Y" and "Z" holds the current coordinates. Return a value representing the distance to the surface. Example of a valid expression that defines a sphere: "return (X*X) + (Y*Y) + (Z*Z) - 1;"

-------------------
@Name=ImplicitCombine

Combines two different implicit functions and blends the result.

This component can only be used in the MeshImplicit.Function property.

@See also: MeshImplicit

@properties
Kind
The kind of blending to use: Union, Intersect or Difference.

Blending
A value indicating the smoothness of the blending.

Children
Two implicit functions that should be combined. Try combining MeshPrimitive-components with different positions.

-------------------
@Name=ImplicitWarp

Warps the result of an implicit function.

This component can only be used in the MeshImplicit.Function property.

@See also: MeshImplicit

@properties
Kind
The kind of warp that used be performed: Twist, Bend or Taper.

Function
The implicit function that will be warped.

WarpAmount
Controls how much the warp will affect the final surface.

-------------------
@Name=ModelState

Represents a models state. States are used to separate different behaviours of a model. Examples of states for an enemy in a action game could be Attacking, Idling, TakeDamage and Dying.

This component can only be used in the Model.States property.

@example use: The states for "BoidModel" in Steering sample project

@See also: SetModelState

@properties
OnStart
Called when this state is started.

OnUpdate
Called between every frame when this state is active.

OnLeave
Called when the model leaves this state, i.e. when SetModelState sets another state.

Definitions
Local data for this state.

OnCollision
Called when the model has collided with another model. See Model.OnCollision.

-------------------
@Name=SetModelState

Switches state for the model issuing this command.

@See also: ModelState

@properties
State
The new state for the model. If it is different from the current state then OnLeave will be called for the old state, and OnStart called for the new state.

-------------------
@Name=AnimatorGroup

A group of animators.

@See also: AnimatorSimple

@properties
Duration
Length of this animatorgroup.

BeginTime
Delay before this animation starts.

AutoStart
If set then this animator will start automatically, if not set then it can be started with a StartAnimator-component.

Animators
The animators controlled by this AnimatorGroup.

OnStop
Called when the group and all its children have finished their animation.

-------------------
@Name=AnimatorSimple

Animates a floating point property of another component.

@See also: AnimatorGroup

@properties
Duration
Length of this animation.

BeginTime
Delay before this animation starts.

AutoStart
If set then this animator will start automatically, if not set then it can be started with a StartAnimator-component.

Target
The target property which the animation controls. Example: "ShipModel.Scale.X".

FromValue
Start value of animation.

ToValue
End value of animation.

Smooth
If set then a smooth transition from FromValue to ToValue will be used, othewise a linear transition will be used.

AutoReverse
If set then the animation will be played in reverse when it has finished. The reverse of a animation will start at the ToValue and end at the FromValue.

RepeatCount
Number of times to repeat animation.

-------------------
@Name=MouseModelController

This component provides a simple way to let a model be controlled by mouse without the use of scripting. Put the component in the OnUpdate property of the Model that should be controlled.

@example use: "BatModel" in ZPong sample project

@properties
ScaleX,ScaleY
Amount to scale the mouse position in the X and Y axis.

-------------------
@Name=StartAnimator

Starts or restarts an animation.

See also: [[AnimatorGroup]], [[AnimatorSimple]]

!!Properties
!!!!Animator
The animator that will be (re)started.

-------------------
@Name=UseMaterial

Use a material. The following render-commands will use this material until another UseMaterial-command is executed. 

This component can only be used in the OnRender property on Model or Application components.

See also: [[Material]]

!!Properties
!!!!Material
The material that will be used.

-------------------
@Name=RenderMesh

Render a 3d-mesh with the current material.

This component can only be used in the OnRender property on Model or Application components.

See also: [[Mesh]]

!!Properties
!!!!Mesh
The mesh that will be rendered.

----------
@Name=RenderTransform

Move, scale or rotate the graphics that is being rendered. All render-commands following a RenderTransform will be affected by the transformation.

This component can only be used in the OnRender property on Model or Application components.

See also: [[RenderTransformGroup]]

!!Properties
!!!!Scale
Scale in x, y and z axis.

!!!!Transform
Transform (move) in x, y and z axis.

!!!!Rotate
Rotate in x, y and z axis. Unit of rotation is cycles. 1 cycle=360 degrees.

----------
@Name=RenderSprite

Render a 2D-bitmap on a rectangle facing the camera. The bitmap must first be set using a [[UseMaterial]] -command. To change the size or rotation of the bitmap use a [[RenderTransform]] -command before RenderSprite.

This component can only be used in the OnRender property on Model or Application components.

@example use: "TitleScreenModel.OnRender" in TripleE sample project

----------
@Name=RenderBeams

Render "beams" using the current material. This is a special effect that can be useful for rendering explosions.

This component can only be used in the OnRender property on Model or Application components.

@example use: "BossDeadModel.OnRender" in TripleE sample project

!!Properties
!!!Count
Number of beams to render.

!!!Length
Lenght of beams.

!!!Width
Width of beams.

!!!Speed
Controls how fast beams rotates around origin.

----------
@Name=RenderTransformGroup

Move, scale or rotate the graphics that is being rendered. Only the render-commands in the Children-property will be affected by the transformation.

This component can only be used in the OnRender property on Model or Application components.

See also: [[RenderTransform]]

!!Properties
!!!!Scale
Scale in x, y and z axis.

!!!!Transform
Transform (move) in x, y and z axis.

!!!!Rotate
Rotate in x, y and z axis. Unit of rotation is cycles. 1 cycle=360 degrees.

!!!!Children
The render-commands that will be affected by the transformation.

----------
@Name=RenderText

Render text on screen using the current material.

This component can only be used in the OnRender property on Model or Application components.

!!Properties
!!!!Text
The text that will be rendered.

!!!!TextFloatRef
A reference to a floating point property that have its value rendered. The value will first be rounded to an integer, use FloatMultiply if decimals are needed.

!!!!FloatMultiply
If TextFloatRef is set, then the value will first be multiplied using FloatMultiply before render.

!!!!X
X coordinate where text will be rendered. Range is -1 to 1.

!!!!Y
Y coordinate where text will be rendered. Range is -1 to 1.

!!!!Scale
Scale of text that will be rendered.

!!!!Align
Align text: Left or Center.

!!!!RenderCharExpression
An expression that will be executed before each character is rendered. This is useful for making animations. Special properties that can be modified in the expression are: CharX, CharY, CharRotate, CharScale and CharI.

!!!!UseModelSpace
If set then the text will be rendered relative to the current position of the Model executing the RenderText-command. If not set (default) then the text will be rendered in screen coordinates.

----------
@Name=RenderSetColor

Sets the current render color. Useful when rendering several objects in different colors without using separate materials.

This component can only be used in the OnRender property on Model or Application components.

!!Properties
!!!!Color
The new color.

----------
@Name=RenderNet

Render a 2d-net with XCount*YCount nr of vertices using the current material. The vertices and texture coordinates can be modified using a expression before rendering. This can be used for animating water-like surfaces.

This component can only be used in the OnRender property on Model or Application components.

!!Properties
!!!XCount
Nr of vertices in the X-axis.

!!!YCount
Nr of vertices in the Y-axis.

!!!RenderVertexExpression
An expression that will be called once for each vertice before rendering starts. The following properties can be modified in the expression: Vertex and TexCoord. Since this expression will be called many times (XCount*YCount each frame) in realtime, be careful of using large expressions or performance will suffer.


----------
@Name=RenderParticles

Render 2D-particles using the current material.

Example usage: "CursorModel.OnRender" in "Particles" sample project.

This component can only be used in the OnRender property on Model or Application components.

!!Properties
!!!ParticlesPerSecond
Nr of particles to emit per second.

!!!Direction
The center direction that particles move, in radians.

!!!Spread
Variance in direction of particles, in radians. To fire particles in all direction set Direction=0 and Spread=3.14.

!!!ParticleWidth
Width of particles.

!!!ParticleHeight
Height of particles.

!!!Speed
Base speed of particles.

!!!SpeedRange
Variance in speed of particles.

!!!Radius
Size of radius around current render position where particles are emitted.

!!!ParticleLifetime
Lifetime in seconds of a particle.

!!!AnimateAlpha
This value is added to each particles color-alpha value every frame. Useful for making particles fade in or out over time.

!!!Duration
The duration in seconds that new particles will be created. Set to 0 for no limit.

!!!BeginTime
Delay in seconds before any particles will be created.

!!!OnEmitExpression
An expression that will be called when a new particle is created. The following properties can be modified in the expression: PColor (particle color) and PAngle (particle angle).

!!!Gravity
A gravitation speed that is added to every particles velocity each frame. 

!!!FollowModel
If set then the particles positions are relative to the current Model.

----------
@Name=Repeat

Repeat execution of a component list. 

!!Properties
!!!Count
Number of times the components in OnIteration will be executed. This value is not used if WhileExp-property is set.

!!!OnIteration
The list of components that will be executed repeatedly.

!!!WhileExp
An expression that will be executed after each loop-iteration. The special property "Iteration" contains the value of the current iteration. Return a false value to end the repeat-loop. Example expression: "return this.Iteration<5;".

----------
@Name=Condition

Execute a component list depending on the return value of an expression. 

!!Properties
The expression that will be evaluated. If a true value is returned then the "OnTrue"-component list will be executed, otherwise the "OnFalse" will be executed. Example expressions: "return 1==1;", "return CurrentModel.Position.X>5;".

!!!OnTrue
List of components that will be executed when Expression evaluates to true.

!!!OnFalse
List of components that will be executed when Expression evaluates to false.

----------
@Name=KeyPress

Test keyboard input, and executes a component list if a key is pressed. 

!!Properties
!!!Keys
A string of characters for which keypresses will be detected. To test for the "A"-key just set the value "A". If several characters are set, then the KeyIndex-property will be set to the index of which character was pressed. For instance if keys are set to "QA" then if the Q-key is pressed KeyIndex will have the value 0, and if the A-key is pressed it will have the value 1.

Special characters and their meaning:
"{" left mouse button.
"}" right mouse button.
"^" cursor up.
"_" cursor down.
"<" cursor left.
">" cursor right.
  
!!!RepeatDelay
A delay in seconds for which a keypress is repeated. 

!!!OnPressed
The list of components that is executed when a keypress is detected.

!!!KeyIndex
See the description for Keys-property.

----------
@Name=RefreshContent

Force a content-component (Mesh or Bitmap) to refresh its value. 

!!Properties
!!!Component
The component that will be refreshed.

----------
@Name=Timer

Executes a component-list on a timed interval. 

!!Properties
!!!OnTimer
The list of components that will be executed.

!!!Interval
An interval in seconds between the calls to OnTimer. If set to zero then the timer stops.

----------
@Name=Application

The application component. This component is automatically created when you start a new project.

!!Properties
!!!States
A list of [[AppState]] components that the application use.

!!!OnLoaded
This list is executed once at program start. Perform your application initialization stuff here.

!!!OnUpdate
Called once between every frame update.

!!!OnRender
A list of render commands.

!!!Content
The application content list. Put your game components here.

!!!Caption
A text string that is displayed in the window caption of your application.

!!!ClearScreenMode
If set to 0 the the screen is cleared before every frame update. If a value other than zero, then the screen is not cleared. Use this for feedback effects. See the Particles-sample project for how to use this property.

!!!ClearColor
The color that the screen will be cleared with. Default black.

!!!DeltaTime
The time in seconds that has passed since last frame was rendered. Use this value when updating model positions in expressions to make your game frame-rate independent. Read only.
Example of expression using the deltatime-property: "CurrentModel.Position.X+=1*App.DeltaTime;".

!!!Time
Time in seconds since application was started. Read only.

!!!FpsCounter
The current number of frames per second. This value can be displayed on screen using the RenderText-component and is useful for detecting performance issues. Read only.

!!!CollidedCategory
When a OnCollision-component list on a Model is executed this property contains the category that the model collided with. Read only.

!!!MousePosition
X and Y coordinates of the current mouse position, in -1 to 1 range. Read only.


----------
@Name=AppState

Represents an application state. A game does not need to use this component, but it is useful when your appliction have several distinct states such as "Title screen", "Playing" and "Game over".

Example usage: TripleE sample project.

See also: [[SetAppState]]

!!Properties
!!!OnStart
Called when this state is started.

!!!OnUpdate
Called between every frame when this state is active.

!!!OnLeave
Called when the model leaves this state, i.e. when SetAppState sets another state.

!!!Definitions
Local data for this state.

----------
@Name=AppState

Switch application state.

See also: [[AppState]]

!!Properties
!!!State
The new state for the application. If it is different from the current state then OnLeave will be called for the old state, and OnStart called for the new state.

----------
@Name=ZExpression

A script expression. The script is executed when the ZExpression component is executed in an component list such as Model.OnUpdate.

!!Properties
!!!Expression
Source code for the expression that will be executed.

----------
@Name=DefineVariable

Defines a floating point variable that can be used in expressions.

!!Properties
!!!Name
The name of the variable.

!!!Value
The value of the variable. This value is not saved, and is zero by default. A variable can be assigned from an expression in the following syntax: "MyVar.Value=42;" or "MyVar=3.5;".

----------
@Name=DefineConstant

Defines a floating point constant that can be used in expressions. A constant value is a value that cannot be changed.

!!Properties
!!!Name
The name of the constant.

!!!Value
The value of the constant. Examples of how to use a constant in an expression: "CurrentModel.Velocity.X=MyConst.Value;" or "Temp1=MyConst;".

----------
@Name=DefineCollision

Defines a collision detection test. Collision detection will occur between models with their category set to Cat1 and Cat2.

!!Properties
!!!!Action
If set to "Collision" then Model.OnCollision is called on both the models involved in the collision. If set to "Stop" then the model is moved out of intersection with the other model and movement stops.

!!!!Cat1
The first model category in this collision test.

!!!!Cat2
The second model category in this collision test.

----------
@Name=Sound

Define a sound using the real-time synthesizer. Sounds are designed in the editor using the custom sound editor that is displayed when a sound-component is selected.

The real-time synthesizer is a simple form of audio generator similar to the analogue synthesizers from the early 1980:s. It is useful for producing synthetic sounding sound effects.

External links:
Wikipedia "Modular_synthesizer" http://en.wikipedia.org/wiki/Modular_synthesizer
Wikipedia "ADSR Envelope" http://en.wikipedia.org/wiki/ADSR_envelope
Wikipedia "LFO"  http://en.wikipedia.org/wiki/Low_frequency_oscillation
Wikipedia "Audio filter"  http://en.wikipedia.org/wiki/Audio_filter

!!Properties
!!!!Length
The length of the sound, in seconds.

!!!!Volume
Volume: 0 silent, 1 max. The final volume depends on the volume of the channel that the sound is played in, see AudioMixer.

!!!!BaseNoteNr
The notenr of the sound. Middle C is 60. Add or remove 12 to change octave.

!!!!Osc1Waveform
Waveform of the first oscillator. Square, Saw or Noise.

!!!!Osc1NoteModifier
A value for detuning the oscillator from the BaseNoteNr.

!!!!UseOsc2
Set this property if the second oscillator should be used.

!!!!Osc2Waveform
Waveform of the second oscillator. Square, Saw or Noise.

!!!!Osc2NoteModifier
A value for detuning the oscillator from the BaseNoteNr.

!!!!HardSync
If this property is set, then osc2 will be restarted when osc1 restarts.

!!!!UseFilter
Set to use filter.

!!!!FilterCutoff
Cut-off value of the filter, 0 to 1 range.

!!!!FilterQ
Filter "Q", or resonance. 0 to 1 range.

!!!!Pan
Sound stereo panning. 0 full left, 1 full right, 0.5 centered (default).

!!!!Modulator properties
Each sound can have a number of modulations for varying the sound over time. 

For every modulator the following values can be set:

Active - Set if this modulator is active.

Source - The source value of this modulation. An LFO, GlobalLFO or an envelope.

Destination - The value to modulate (change).

Amount - How much the destination value will be changed from the source value.

!!!!Envelopes properties
Each sound can have a number of envelopes. 

For every envelope the following values can be set:

Active - Set if this envelope is active.

AttackTime - The duration of time that this envelope goes from zero to one.

ReleaseTime - The duration of time that this envelope returns from one to zero, after the 
AttackTime is finished.

!!!!LFO properties
Each sound can have a number of LFOs (low-frequency oscillator). An LFO is a function which slowly changes its value over time. This is used for modulating the sound.

For every LFO the following values can be set:

Active - Set if this LFO is active.

IsBipolar - Set if this LFO has the range -1 to 1, instead of 0 to 1.

Style - The function this LFO use. Sine, Random or ZeroOne.

Speed - Speed of this LFO.

----------
@Name=PlaySound

Play a sound using the real-time synthesizer.

See also: [[Sound]]

!!Properties
!!!!Sound
The sound that will be played.

!!!!NoteNr
The notenr of the sound. Middle C is 60. Add or remove 12 to change octave. When the sound is played this value is added to the sounds BaseNoteNr-property to determine the final pitch of the sound.

!!!!Channel
The number of the channel that the sound will be played in.

!!!!ReplayDelay
A delay in seconds before this PlaySound can be repeated.

----------
@Name=AudioMixer

A mixer for the real-time audio synthesizer. When a sound-component is selected in the editor, the AudioMixer custom editor is displayed as a separate page next to the audio custom editor.

The mixer is used for changing settings to different audio channels. 

NOTE: To save the mixer settings you must add a audiomixer component to your project. You can only have a single audiomixer in one project.

See also: [[Sound]]

!!Properties
!!!!Channel properties
Every channel (16 channels) have the following properties:

Active - Set if this channel should be active. Default: channels 0 and 1 are active.

Volume - A value from 0 to 1 controlling the volume of this channel.

UseDelay - Set if this channel should use a delay-filter (an echo effect).

DelayLength - Length of the delay effect.

!!!!GlobalLFOs properties
An LFO is a function which slowly changes its value over time. This is used for modulating the sound. The global LFOs are different from the LFOs on the sound component because they do not reset when sound is initiated. When a sound is modulated using a global LFO it can make the sound a bit different every time.

For every GlobalLFO the following values can be set:

Active - Set if this LFO is active.

IsBipolar - Set if this LFO has the range -1 to 1, instead of 0 to 1.

Style - The function this LFO use. Sine, Random or ZeroOne.

Speed - Speed of this LFO.

----------
@Name=SteeringController
Add a steeringcontroller to your models Update-command list to make it controlled using "steering". This is a powerful feature for making "flocking" style movement without using scripting.

See also: [[SteeringBehaviour]]

Example usage: "Steering" and "TripleE" sample projects.

External links:
[["Craig Reynolds: Steering Behaviors" -> http://www.red3d.com/cwr/steer/]], 

!!Properties
!!!!Behaviours
A list of steeringbehaviours.

!!!!Mass
The models mass. Values smaller than one makes the model change direction more quickly. A value higher than one makes it "heavy" and slow reacting.

!!!!MaxSpeed
Maximum speed (velocity) of the model.

!!!!MaxForce
Max "force" that can be applied to the model during a evaulation of the steeringbehaviours.

!!!!AdjustHeading
If this property is set then the models heading is ajdusted to match the direction it is moving.

!!!!Radius
The radius of the model, used when calculating separation using the separation steeringbehaviour.

----------
@Name=SteeringBehaviour
Represents a steering behaviour.

This component can only be used in the Behaviours property on the SteeringController component.

See also: [[SteeringController]]

!!Properties
!!!!Kind
Allowed values:

SeekModel - Seek towards the model set in TargetModel.

SeparationCategory - Keep separation from models in TargetCategory.

Noise - A smooth random movement.

FleeModel - Flee from the model set in TargetModel.

Expression - Takes a force from an expression.

WallAvoidance2D - Steer away from walls defined by the models in TargetCategory. The walls boundaries are defined with CollisionBounds of the models.

!!!!TargetModel
When kind is set to "Seek" or "Flee", this is the model to seek towards or flee from.

!!!!TargetCategory
When kind is "Separation": the category of models that the current model is being separated from.

When kind is "WallAvoidance": the category of models that are considered being "walls".

!!!!Weight
A value giving this behaviour a weight. The force of each behaviour is multiplied with this value. Use for fine-tuning the effect of each behaviour.

!!!!Expression
When kind is "Expression": a expression that calculates a steer vector. The special property "OutVector"-should be set by the expression. Example "this.OutVector.X=0.5; this.OutVector.Y=0.5;".

----------
@Name=File
Represents a file on disk. This can be used to read data into variables.

Note: Only reading from files is supported. A later version of ZGE will also support writing of data (i.e. saving game settings).

See also: [[FileAction]], [[FileMoveData]].

Example usage: "FileDemo" sample project.

!!Properties
!!!!FileName
The name of the file that will be opened, in a path relative to the current project.
Examples: "Data.txt", "levels\Level"

!!!!FileNameFloatRef
The name of a property that have its value appended to the FileName. The value is rounded to the nearest integer. For example if FileName is "LevelMap" and FileNameFloatRef is set to a variable named "LevelNr" with a value of  5 then the file opened will be "LevelMap5".

!!!!Encoding
Controls how data will be parsed when reading from the file.
*Char: One byte is read at a time. The value read is an integer between 0 and 255 (the ascii-value of the character in a text file).
*Binary: Four bytes is read at a time. This can be used to read variables with the full decimal precision.

!!!!OnRead
A list of the commands that will be executed when a read [[FileAction]] is isssued. For reading data into variables use the [[FileMoveData]] - component.

----------
@Name=FileAction
Triggers an action to a [[File]] component.

See also: [[File]], [[FileMoveData]].

Example usage: "FileDemo" sample project.

!!Properties
!!!!File
This is a reference to the [[File]] that will receive the action.

!!!!Action
This is the action to send to the file. Currently this can have only one value: Read.

----------
@Name=FileMoveData
Transfer data between a file and a variable. This component can only be used in a File.OnRead list property.

See also: [[File]], [[FileAction]].

Example usage: "FileDemo" sample project.

!!Properties
!!!!Property
A reference to the floating point property that will receive the value from a file. Examples: "TileId.Value", "EnemyModel.Position.X".


----------
@Name=BitmapFromFile
Import an external bitmap to your application.

This component can only be used in the Bitmap.Producers property.

@See also: [[Bitmap]]

!!Properties
!!!!BitmapFile
The content of the imported bitmap. Click the "..." button that is located beside the property in the editor to browse for a bitmap file. When a bitmap is selected it is imported to your application and is no longer referenced on disk.

Currently the are the following limitations:
*Only BMP-files can be imported
*The dimensions (width and height) of the bitmap must be the same as the Bitmap-component that the BitmapFromFile-component produces. For example to import a file that is 128x64, you must first set the Height and Width properties on your Bitmap component to match this.
*Alpha channel information is not imported

----------
@Name=Font
Defines a font that can be used to display text using the [[RenderText]]-component. The fonts graphics must be defined in a bitmap and imported to the project using the [[BitmapFromFile]]-component.

!!Properties
!!!!Bitmap
Set to a [[Bitmap]] that holds the font graphics.

!!!!CharPixelWidth/Height
The pixel width and height of the characters in the font.

!!!!FirstChar
The ASCII value of the first character in the font. 32 is space. 65 is 'A'. 48 is '0'.

!!!!BorderPixels
If the font has extra pixels below and to the right then set this property to the number of extra pixels.


----------
@Name=Music
Represents a imported MIDI-music file (*.mid) that can be played in your application using the [[MusicControl]]-component.

!!Properties
!!!!MusicFile
The content of the imported MIDI-file. Click the "Import..." button that is located beside the property in the editor to browse for a music (*.mid) file. When a file is selected it is imported to your application and is no longer referenced on disk.

!!!!Instruments
A list of [[Sound]]-components that are used as intruments for the music.

!!!!Volume
The volume of the music-playback. Valid values range from 0 (silent) to 1 (full volume).

----------
@Name=MusicControl
Controls when to play or stop [[Music]].

!!Properties
!!!!Music
Set to a [[Music]] component that contains the music which is being controlled.

!!!!Kind
Set to either 'Start' to start the music, or 'Stop' to stop the music.
