diff --git a/doc/bu/files/abs.txt b/doc/bu/files/abs.txt
deleted file mode 100644
index 2e9aecd..0000000
--- a/doc/bu/files/abs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Abs [RCBasic Doc]
-#header function Abs(n)
-
-Returns the absolute value of n
diff --git a/doc/bu/files/accelname.txt b/doc/bu/files/accelname.txt
deleted file mode 100644
index 9acdb1e..0000000
--- a/doc/bu/files/accelname.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title AccelName$ [RCBasic Doc]
-#header function AccelName$(accel_num)
-
-
-Returns the name of an accelerometer
-
diff --git a/doc/bu/files/acos.txt b/doc/bu/files/acos.txt
deleted file mode 100644
index 0553ead..0000000
--- a/doc/bu/files/acos.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Acos [RCBasic Doc]
-#header function Acos(n)
-
-Returns the Arcosine of n
diff --git a/doc/bu/files/activecanvas.txt b/doc/bu/files/activecanvas.txt
deleted file mode 100644
index 11e416b..0000000
--- a/doc/bu/files/activecanvas.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#title ActiveCanvas [RCBasic Doc]
-#header function ActiveCanvas()
-
-
-Returns the canvas that drawing commands are currently applied to
-
-#code
-c1 = OpenCanvas(640, 480, 0, 0, 640, 480, 0)
-c2 = OpenCanvas(640, 480, 0, 0, 640, 480, 0)
-
-Canvas(c1)
-
-If ActiveCanvas() = c1 Then
- Print "Active canvas is c1"
-End If
-
-Canvas(c2)
-
-If ActiveCanvas() = c2 Then
- Print "Active canvas is now c2"
-End If
-#/code
diff --git a/doc/bu/files/actoranimationislooped.txt b/doc/bu/files/actoranimationislooped.txt
deleted file mode 100644
index b583e76..0000000
--- a/doc/bu/files/actoranimationislooped.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title actorAnimationIsLooped [RCBasic Doc]
-#header function actorAnimationIsLooped( actor )
-
-Returns true if an actors animation is set to looped.
-
-Note: Actor animation is set to looped with the loopActorAnimation() function.
-
-#ref loopActorAnimation
diff --git a/doc/bu/files/actorisintransition.txt b/doc/bu/files/actorisintransition.txt
deleted file mode 100644
index 6839ff7..0000000
--- a/doc/bu/files/actorisintransition.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ActorIsInTransition [RCBasic Doc]
-#header function ActorIsInTransition( actor )
-
-Returns true if actor is in a transition from its current frame to the frame set in the StartActorTransition() function
-
-#ref StartActorTransition StopActorTransition GetActorTransitionTime
diff --git a/doc/bu/files/actorissolid.txt b/doc/bu/files/actorissolid.txt
deleted file mode 100644
index 8233454..0000000
--- a/doc/bu/files/actorissolid.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-#title ActorIsSolid [RCBasic Doc]
-#header function ActorIsSolid(actor)
-
-Returns true or false depending on if physics and collision response applies to an actor.
-
-Note: Collision is still able to be checked on an actor but the actor will be like a ghost able to go through wall and other objects.
-
-#code
-SetActorSolid(actor, true)
-Print "Actor solid state: "; ActorIsSolid(actor) 'This will output 1
-SetActorSolid(actor, false)
-Print "Actor solid state: "; ActorIsSolid(actor) 'This will output 0
-#/end
-
-#ref SetActorSolid
diff --git a/doc/bu/files/actorisvisible.txt b/doc/bu/files/actorisvisible.txt
deleted file mode 100644
index 3b85c29..0000000
--- a/doc/bu/files/actorisvisible.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-#title ActorIsVisible [RCBasic Doc]
-#header function ActorIsVisible( actor )
-
-Returns true if an actor is visible
-
-#code
-SetActorVisible(actor, true)
-Print "Actor solid state: "; ActorIsVisible(actor) 'Outputs 1
-SetActorSolid(actor, false)
-Print "Actor solid state: "; ActorIsSolid(actor) 'Outputs 0
-#/code
-
-#ref SetActorVisible
diff --git a/doc/bu/files/addactorshadow.txt b/doc/bu/files/addactorshadow.txt
deleted file mode 100644
index 4680595..0000000
--- a/doc/bu/files/addactorshadow.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title AddActorShadow [RCBasic Doc]
-#header sub AddActorShadow( actor )
-
-Cast a shadow on an actor during lighting calculations
-
-Note: Also check the section on lights for more info
-
-
-#ref RemoveActorShadow
diff --git a/doc/bu/files/addmatrix.txt b/doc/bu/files/addmatrix.txt
deleted file mode 100644
index dd6365e..0000000
--- a/doc/bu/files/addmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title AddMatrix [RCBasic Doc]
-#header function AddMatrix(mA, mB, mC)
-
-Adds matrix mA to matrix mB and stores the results in mC
diff --git a/doc/bu/files/addmeshbuffer.txt b/doc/bu/files/addmeshbuffer.txt
deleted file mode 100644
index c9f8296..0000000
--- a/doc/bu/files/addmeshbuffer.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title AddMeshBuffer [RCBasic Doc]
-#header sub AddMeshBuffer( mesh, vertex_count, ByRef vertex_data, ByRef normal_data, ByRef uv_data, index_count, ByRef index_data )
-
-Sets the vertices, normals, and texture coordinates for a mesh
-
-#ref CreateMesh
diff --git a/doc/bu/files/addsceneskybox.txt b/doc/bu/files/addsceneskybox.txt
deleted file mode 100644
index dcb6afd..0000000
--- a/doc/bu/files/addsceneskybox.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title AddSceneSkyBox [RCBasic Doc]
-#header sub AddSceneSkyBox( img_top, img_bottom, img_left, img_right, img_front, img_back)
-
-Generates a skybox based on the provided images.
-
-#ref AddSceneSkyDome AddSceneSkyDomeEx
diff --git a/doc/bu/files/addsceneskydome.txt b/doc/bu/files/addsceneskydome.txt
deleted file mode 100644
index 7f29b40..0000000
--- a/doc/bu/files/addsceneskydome.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title AddSceneSkyDome [RCBasic Doc]
-#header sub AddSceneSkyDome( img )
-
-Adds a sky dome to the scene
-
-#ref AddSceneSkyDomeEx
diff --git a/doc/bu/files/addsceneskydomeex.txt b/doc/bu/files/addsceneskydomeex.txt
deleted file mode 100644
index 170e06c..0000000
--- a/doc/bu/files/addsceneskydomeex.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-#title AddSceneSkyDomeEx [RCBasic Doc]
-#header sub AddSceneSkyDomeEx( img, horiRes, vertRes, txPercentage, spherePercentage, radius)
-
-Adds a sky dome to the scene
-
-#list
-#li img - The texture for the sky dome
-#li horiRes - Number of vertices of a horizontal layer of the sphere.
-#li vertRes - Number of vertices of a vertical layer of the sphere.
-#li txPercentage - How much of the height of the texture is used. Should be between 0 and 1.
-#li spherePercentage - How much of the sphere is drawn. Value should be between 0 and 2, where 1 is an exact half-sphere and 2 is a full sphere.
-#li radius - The Radius of the sphere
-#/list
-
-#ref AddSceneSkyBox AddSceneSkyDome
diff --git a/doc/bu/files/adjointmatrix.txt b/doc/bu/files/adjointmatrix.txt
deleted file mode 100644
index 1291a51..0000000
--- a/doc/bu/files/adjointmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title AdjointMatrix [RCBasic Doc]
-#header function AdjointMatrix(mA, mB)
-
-Stores the adjoint matrix of mA in mB
diff --git a/doc/bu/files/andbit.txt b/doc/bu/files/andbit.txt
deleted file mode 100644
index bd9085d..0000000
--- a/doc/bu/files/andbit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title AndBit [RCBasic Doc]
-#header function AndBit(a,b)
-
-Returns the bitwise AND operation of 2 numbers
diff --git a/doc/bu/files/android_getexternalstoragepath.txt b/doc/bu/files/android_getexternalstoragepath.txt
deleted file mode 100644
index 7ea51de..0000000
--- a/doc/bu/files/android_getexternalstoragepath.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title Android_GetExternalStoragePath$ [RCBasic Doc]
-#header function Android_GetExternalStoragePath$()
-
-Returns the designated external storage path
-
-#ref Android_GetExternalStorageState Android_GetInternalStoragePath$
diff --git a/doc/bu/files/android_getexternalstoragestate.txt b/doc/bu/files/android_getexternalstoragestate.txt
deleted file mode 100644
index 2b31fa4..0000000
--- a/doc/bu/files/android_getexternalstoragestate.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-#title Android_GetExternalStorageState [RCBasic Doc]
-#header function Android_GetExternalStorageState()
-
-Returns a bitmask of these values:
-#list
-#li ANDROID_EXTERNAL_STORAGE_READ
-#li ANDROID_EXTERNAL_STORAGE_WRITE
-#/list
-
-#code
-If AndBit( Android_GetExternalStorageState(), ANDROID_EXTERNAL_STORAGE_READ ) Then
- Print "Can read from external storage"
-End If
-#/code
-
-#ref Android_GetExternalStoragePath$ Android_GetInternalStoragePath$
diff --git a/doc/bu/files/android_getinternalstoragepath.txt b/doc/bu/files/android_getinternalstoragepath.txt
deleted file mode 100644
index abeb531..0000000
--- a/doc/bu/files/android_getinternalstoragepath.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title Android_GetInternalStoragePath$ [RCBasic Doc]
-#header function Android_GetInternalStoragePath$()
-
-Returns the internal storage path
-
-#ref Android_GetExternalStorageState Android_GetExternalStoragePath$
diff --git a/doc/bu/files/android_jni_message.txt b/doc/bu/files/android_jni_message.txt
deleted file mode 100644
index f44ab82..0000000
--- a/doc/bu/files/android_jni_message.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title Android_JNI_Message$ [RCBasic Doc]
-#header function Android_JNI_Message$(arg$)
-
-Passes arg$ to the rcbasic_android_interface() method in the java code for your android app. The java method returns a string.
-
-#ref Runtime_Utility_Message$
diff --git a/doc/bu/files/applyactorcentralforcelocal.txt b/doc/bu/files/applyactorcentralforcelocal.txt
deleted file mode 100644
index 94abf73..0000000
--- a/doc/bu/files/applyactorcentralforcelocal.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title ApplyActorCentralForceLocal [RCBasic Doc]
-#header sub ApplyActorCentralForceLocal( actor, x, y, z)
-
-Applies a force to the center of mass of an actor in local coordinate space. This force impacts the linear velocity of the object without affecting its rotation.
-
-#list
-#li x,y,z - direction of the force
-#/list
-
-#ref ApplyActorCentralForceWorld ApplyActorCentralImpulseLocal ApplyActorCentralImpulseWorld
diff --git a/doc/bu/files/applyactorcentralforceworld.txt b/doc/bu/files/applyactorcentralforceworld.txt
deleted file mode 100644
index 30d917a..0000000
--- a/doc/bu/files/applyactorcentralforceworld.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title ApplyActorCentralForceWorld [RCBasic Doc]
-#header sub ApplyActorCentralForceWorld( actor, x, y, z)
-
-Applies a force to the center of mass of an actor in world coordinate space. This force impacts the linear velocity of the object without affecting its rotation.
-
-#list
-#li x,y,z - direction of the force
-#/list
-
-#ref ApplyActorCentralForceLocal ApplyActorCentralImpulseLocal ApplyActorCentralImpulseWorld
diff --git a/doc/bu/files/applyactorcentralimpulselocal.txt b/doc/bu/files/applyactorcentralimpulselocal.txt
deleted file mode 100644
index 8c992f1..0000000
--- a/doc/bu/files/applyactorcentralimpulselocal.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title ApplyActorCentralImpulseLocal [RCBasic Doc]
-#header sub ApplyActorCentralImpulseLocal( actor, x, y, z)
-
-Applies an impulse directly to the center of mass of an actor. An impulse differs from a continuous force in that it applies an immediate, short-duration change to the velocity of the actor. It affects the linear velocity but does not generate rotational effects (since it's applied to the center of mass).
-
-#list
-#li x,y,z - direction of the impulse
-#/list
-
-#ref ApplyActorCentralForceLocal ApplyActorCentralForceWorld ApplyActorCentralImpulseWorld
diff --git a/doc/bu/files/applyactorcentralimpulseworld.txt b/doc/bu/files/applyactorcentralimpulseworld.txt
deleted file mode 100644
index 388714d..0000000
--- a/doc/bu/files/applyactorcentralimpulseworld.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-#title ApplyActorCentralImpulseWorld [RCBasic Doc]
-#header sub ApplyActorCentralImpulseWorld( actor, x, y, z)
-
-Applies an impulse directly to the center of mass of an actor. An impulse differs from a continuous force in that it applies an immediate, short-duration change to the velocity of the actor. It affects the linear velocity but does not generate rotational effects (since it's applied to the center of mass).
-
-#list
-#li x,y,z - direction of the impulse
-#/list
-
-#ref ApplyActorCentralForceLocal ApplyActorCentralForceWorld ApplyActorCentralImpulseLocal
-
diff --git a/doc/bu/files/applyactordamping.txt b/doc/bu/files/applyactordamping.txt
deleted file mode 100644
index 525881c..0000000
--- a/doc/bu/files/applyactordamping.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#title ApplyActorDamping [RCBasic Doc]
-#header sub ApplyActorDamping( actor, timeStep)
-
-Reduces the velocity of an actor over time, simulating the effect of friction or air resistance.
-
-This function applies the linear and angular damping values set with the SetActorDamping() function.
-
-#code
-init_damping = False
-SetActorDamping(actor, 0.1, 0.5)
-ApplyActorCentralImpulse(actor, 300, 0, 0)
-
-While True
- If Not init_damping Then
- ApplyActorDamping(actor, 5.0) 'Will apply the damping effect for 5 seconds
- init_damping = True
- End If
- Update()
-Wend
-#/code
-
-#ref setActorDamping getActorLinearDamping getActorAngularDamping
diff --git a/doc/bu/files/applyactorforcelocal.txt b/doc/bu/files/applyactorforcelocal.txt
deleted file mode 100644
index a7e104f..0000000
--- a/doc/bu/files/applyactorforcelocal.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-#title ApplyActorForceLocal [RCBasic Doc]
-#header sub ApplyActorForceLocal( actor, x, y, z, rel_x, rel_y, rel_z)
-
-Applies a force to an actor at a specific point. Unlike ApplyActorCentralForce(local/world), which applies force only at the center of mass (affecting linear velocity), this can generate both linear motion and rotation (torque), depending on where the force is applied relative to the center of mass.
-
-#list
-#li x,y,z - direction of the force
-#li rel_x, rel_y, rel_z - position to apply the force to relative to the center of mass
-#/list
-
-#ref ApplyActorForceWorld ApplyActorCentralForceLocal ApplyActorCentralForceWorld
diff --git a/doc/bu/files/applyactorforceworld.txt b/doc/bu/files/applyactorforceworld.txt
deleted file mode 100644
index 65462be..0000000
--- a/doc/bu/files/applyactorforceworld.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-#title ApplyActorForceWorld [RCBasic Doc]
-#header sub ApplyActorForceWorld( actor, x, y, z, rel_x, rel_y, rel_z)
-
-Applies a force to an actor at a specific point. Unlike ApplyActorCentralForce(local/world), which applies force only at the center of mass (affecting linear velocity), this can generate both linear motion and rotation (torque), depending on where the force is applied relative to the center of mass.
-
-#list
-#li x,y,z - direction of the force
-#li rel_x, rel_y, rel_z - position to apply the force to relative to the center of mass
-#/list
-
-#ref ApplyActorForceLocal ApplyActorCentralForceLocal ApplyActorCentralForceWorld
diff --git a/doc/bu/files/applyactorimpulselocal.txt b/doc/bu/files/applyactorimpulselocal.txt
deleted file mode 100644
index 03e8898..0000000
--- a/doc/bu/files/applyactorimpulselocal.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-#title ApplyActorImpulseLocal [RCBasic Doc]
-#header sub ApplyActorImpulseLocal( actor, x, y, z, rel_x, rel_y, rel_z)
-
-Applies an impulse to an actor at a specific point. Unlike ApplyActorCentralImpulse(local/world), which applies impulse only at the center of mass (affecting linear velocity), this can generate both linear motion and rotation (torque), depending on where the force is applied relative to the center of mass.
-
-#list
-#li x,y,z - direction of the impulse
-#li rel_x, rel_y, rel_z - position to apply the force to relative to the center of mass
-#/list
-
-#ref ApplyActorImpulseWorld ApplyActorForceLocal ApplyActorForceWorld
-
diff --git a/doc/bu/files/applyactorimpulseworld.txt b/doc/bu/files/applyactorimpulseworld.txt
deleted file mode 100644
index 8ab74b3..0000000
--- a/doc/bu/files/applyactorimpulseworld.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-#title applyActorImpulseWorld [RCBasic Doc]
-#header sub applyActorImpulseWorld( actor, x, y, z, rel_x, rel_y, rel_z)
-
-Applies an impulse to an actor at a specific point. Unlike ApplyActorCentralImpulse(local/world), which applies impulse only at the center of mass (affecting linear velocity), this can generate both linear motion and rotation (torque), depending on where the force is applied relative to the center of mass.
-
-#list
-#li x,y,z - direction of the impulse
-#li rel_x, rel_y, rel_z - position to apply the force to relative to the center of mass
-#/list
-
-#ref ApplyActorImpulseLocal ApplyActorForceLocal ApplyActorForceWorld
diff --git a/doc/bu/files/applyactortorqueimpulselocal.txt b/doc/bu/files/applyactortorqueimpulselocal.txt
deleted file mode 100644
index 819c097..0000000
--- a/doc/bu/files/applyactortorqueimpulselocal.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title applyActorTorqueImpulseLocal [RCBasic Doc]
-#header sub applyActorTorqueImpulseLocal( actor, x, y, z)
-
-Applies an impulse that directly affects the angular velocity of an actor, causing it to rotate. This is similar to applying an impulse, but instead of changing the linear velocity (which applyActorCentralImpulse does), it alters the body's rotational motion (angular velocity) instantaneously.
-
-#list ul
-#li x, y, z - Direction of rotation
-#/list
-
-#ref ApplyActorTorque ApplyActorTorqueImpulseWorld
diff --git a/doc/bu/files/applyactortorqueimpulseworld.txt b/doc/bu/files/applyactortorqueimpulseworld.txt
deleted file mode 100644
index d6d4ede..0000000
--- a/doc/bu/files/applyactortorqueimpulseworld.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title applyActorTorqueImpulseWorld [RCBasic Doc]
-#header sub applyActorTorqueImpulseWorld( actor, x, y, z)
-
-Applies an impulse that directly affects the angular velocity of an actor, causing it to rotate. This is similar to applying an impulse, but instead of changing the linear velocity (which applyActorCentralImpulse does), it alters the body's rotational motion (angular velocity) instantaneously.
-
-#list ul
-#li x, y, z - Direction of rotation
-#/list
-
-#ref ApplyActorTorque ApplyActorTorqueImpulseLocal
diff --git a/doc/bu/files/applyactortorquelocal.txt b/doc/bu/files/applyactortorquelocal.txt
deleted file mode 100644
index c931a18..0000000
--- a/doc/bu/files/applyactortorquelocal.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title applyActorTorqueLocal [RCBasic Doc]
-#header sub applyActorTorqueLocal( actor, x, y, z)
-
-Applies a continuous torque to an actor, causing it to accelerate its rotational motion over time. Unlike applyActorTorqueImpulse, which causes an immediate change in angular velocity, this applies a torque force gradually, leading to a continuous rotational effect, similar to applying a force to linear motion.
-
-#list
-#li x, y, z - direction of rotation
-#/list
-
-#ref ApplyActorTorqueWorld ApplyActorTorqueImpulseLocal ApplyActorTorqueImpulseWorld
diff --git a/doc/bu/files/applyactortorqueworld.txt b/doc/bu/files/applyactortorqueworld.txt
deleted file mode 100644
index 5dd6b8c..0000000
--- a/doc/bu/files/applyactortorqueworld.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-#title applyActorTorqueWorld [RCBasic Doc]
-#header sub applyActorTorqueWorld( actor, x, y, z)
-
-Applies a continuous torque to an actor, causing it to accelerate its rotational motion over time. Unlike applyActorTorqueImpulse, which causes an immediate change in angular velocity, this applies a torque force gradually, leading to a continuous rotational effect, similar to applying a force to linear motion.
-
-#list
-#li x, y, z - direction of rotation
-#/list
-
-#ref ApplyActorTorqueLocal ApplyActorTorqueImpulseLocal ApplyActorTorqueImpulseWorld
-
diff --git a/doc/bu/files/arraycopy.txt b/doc/bu/files/arraycopy.txt
deleted file mode 100644
index 9e28c4a..0000000
--- a/doc/bu/files/arraycopy.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title ArrayCopy [RCBasic Doc]
-#header sub ArrayCopy(ByRef src, ByRef dst)
-
-Copies the contents of src array to dst array
-
-Note: This function is a special case in that it can take any type for src or dst
-
-#ref ArrayDim ArraySize ArrayFill
diff --git a/doc/bu/files/arraydim.txt b/doc/bu/files/arraydim.txt
deleted file mode 100644
index 4cba66b..0000000
--- a/doc/bu/files/arraydim.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ArrayDim [RCBasic Doc]
-#header function ArrayDim(Byref id)
-
-Returns the number of dimensions in an array
-
-#ref ArrayCopy ArrayFill ArraySize
diff --git a/doc/bu/files/arrayfill.txt b/doc/bu/files/arrayfill.txt
deleted file mode 100644
index 254fd76..0000000
--- a/doc/bu/files/arrayfill.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ArrayFill [RCBasic Doc]
-#header sub ArrayFill(ByRef src, fdata)
-
-Fills all the elements in an array with the value in fdata
-
-#ref ArrayCopy ArrayDim ArraySize
diff --git a/doc/bu/files/arraysize.txt b/doc/bu/files/arraysize.txt
deleted file mode 100644
index d4ca82d..0000000
--- a/doc/bu/files/arraysize.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ArraySize [RCBasic Doc]
-#header function ArraySize(Byref id, array_dim)
-
-Returns the number of elements in the given dimension of an array
-
-#ref ArrayDim ArrayCopy ArrayFill
diff --git a/doc/bu/files/asc.txt b/doc/bu/files/asc.txt
deleted file mode 100644
index 84a418d..0000000
--- a/doc/bu/files/asc.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Asc [RCBasic Doc]
-#header function Asc(c$)
-
-Returns the ASCII value of a character.
diff --git a/doc/bu/files/asin.txt b/doc/bu/files/asin.txt
deleted file mode 100644
index fb1fe18..0000000
--- a/doc/bu/files/asin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Asin [RCBasic Doc]
-#header function Asin(n)
-
-Returns the ArcSine of a number.
diff --git a/doc/bu/files/atan.txt b/doc/bu/files/atan.txt
deleted file mode 100644
index d1761ed..0000000
--- a/doc/bu/files/atan.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Atan [RCBasic Doc]
-#header function Atan(n)
-
-Returns the ArcTangent of a number.
diff --git a/doc/bu/files/atan2.txt b/doc/bu/files/atan2.txt
deleted file mode 100644
index fd37713..0000000
--- a/doc/bu/files/atan2.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ATan2 [RCBasic Doc]
-#header Function ATan2(y, x)
-
-Returns the ArcTangent of x and y
diff --git a/doc/bu/files/augmentmatrix.txt b/doc/bu/files/augmentmatrix.txt
deleted file mode 100644
index 2a0e4c5..0000000
--- a/doc/bu/files/augmentmatrix.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title AugmentMatrix [RCBasic Doc]
-#header function AugmentMatrix(mA, mB, mC)
-
-Appends the columns of matrix mB onto matrix mA and stores the result in mC.
-
-NOTE: Must mA and mB must be the same number of rows.
diff --git a/doc/bu/files/bin.txt b/doc/bu/files/bin.txt
deleted file mode 100644
index 7b40444..0000000
--- a/doc/bu/files/bin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Bin$ [RCBasic Doc]
-#header function Bin$(n)
-
-Returns the binary representation of a number.
diff --git a/doc/bu/files/bufferfromimage.txt b/doc/bu/files/bufferfromimage.txt
deleted file mode 100644
index 02a4cd2..0000000
--- a/doc/bu/files/bufferfromimage.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title BufferFromImage [RCBasic Doc]
-#header sub BufferFromImage(slot, byref buffer)
-
-
diff --git a/doc/bu/files/bufferfrommatrix.txt b/doc/bu/files/bufferfrommatrix.txt
deleted file mode 100644
index fbadd93..0000000
--- a/doc/bu/files/bufferfrommatrix.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title BufferFromMatrix [RCBasic Doc]
-#header sub BufferFromMatrix(ByRef buffer, mA)
-
-Saves the matrix mA in an array
-
-NOTE: buffer must have the same number of dimensions as the desired matrix for the structure to remain intact.
-
-#ref MatrixFromBuffer
diff --git a/doc/bu/files/bufferfromstring.txt b/doc/bu/files/bufferfromstring.txt
deleted file mode 100644
index f249035..0000000
--- a/doc/bu/files/bufferfromstring.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title BufferFromString [RCBasic Doc]
-#header function BufferFromString(s$, ByRef buffer)
-
-Stores the byte value of a string into a number buffer
-
-#ref StringFromBuffer$
diff --git a/doc/bu/files/canvas.txt b/doc/bu/files/canvas.txt
deleted file mode 100644
index 49cd21d..0000000
--- a/doc/bu/files/canvas.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title Canvas [RCBasic Doc]
-#header sub Canvas(c_num)
-
-Sets the active canvas for drawing commands to use
-
-#ref ActiveCanvas
diff --git a/doc/bu/files/canvasclip.txt b/doc/bu/files/canvasclip.txt
deleted file mode 100644
index 7391245..0000000
--- a/doc/bu/files/canvasclip.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CanvasClip [RCBasic Doc]
-#header function CanvasClip(x, y, w, h)
-
-Returns an image id with a selected portion of the active drawing canvas saved
-
-#ref WindowClip
diff --git a/doc/bu/files/canvasisvisible.txt b/doc/bu/files/canvasisvisible.txt
deleted file mode 100644
index 8e4c4e4..0000000
--- a/doc/bu/files/canvasisvisible.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CanvasIsVisible [RCBasic Doc]
-#header function CanvasIsVisible(c_num)
-
-Returns true if a canvas is shown in the Window
-
-#ref SetCanvasVisible
diff --git a/doc/bu/files/changedir.txt b/doc/bu/files/changedir.txt
deleted file mode 100644
index 4b894a5..0000000
--- a/doc/bu/files/changedir.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ChangeDir [RCBasic Doc]
-#header sub ChangeDir(p$)
-
-Sets the working directory that the directory commands use
diff --git a/doc/bu/files/channelispaused.txt b/doc/bu/files/channelispaused.txt
deleted file mode 100644
index 39ea742..0000000
--- a/doc/bu/files/channelispaused.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ChannelIsPaused [RCBasic Doc]
-#header function ChannelIsPaused(channel)
-
-Returns true if an audio channel is currently paused
-
-#ref PauseSound
diff --git a/doc/bu/files/channelisplaying.txt b/doc/bu/files/channelisplaying.txt
deleted file mode 100644
index 73fdfc7..0000000
--- a/doc/bu/files/channelisplaying.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ChannelIsPlaying [RCBasic Doc]
-#header function ChannelIsPlaying(channel)
-
-Returns true if an audio channel is playing
-
-#ref ChannelIsPaused PlaySound PlaySoundTimed
diff --git a/doc/bu/files/checksockets.txt b/doc/bu/files/checksockets.txt
deleted file mode 100644
index efdfd03..0000000
--- a/doc/bu/files/checksockets.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title CheckSockets [RCBasic Doc]
-#header function CheckSockets(timeout_ms)
-
-Checks all connected sockets for activity. If timeout_ms is greater than 0 than it will wait that many milliseconds. If less than 0
-it will wait for over 49 days (hint: there is no reason what so ever to set this less than 0).
-
-Returns the number of sockets that have activity (ie. a connection was made or data was sent)
diff --git a/doc/bu/files/chr.txt b/doc/bu/files/chr.txt
deleted file mode 100644
index 81ec84c..0000000
--- a/doc/bu/files/chr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Chr$ [RCBasic Doc]
-#header function Chr$(n)
-
-Returns the character with the matching ASCII value n.
diff --git a/doc/bu/files/cint32.txt b/doc/bu/files/cint32.txt
deleted file mode 100644
index f70a19b..0000000
--- a/doc/bu/files/cint32.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CInt32 [RCBasic Doc]
-#header function CInt32(i)
-
-Returns a 32-bit signed integer.
diff --git a/doc/bu/files/cint64.txt b/doc/bu/files/cint64.txt
deleted file mode 100644
index 63e5915..0000000
--- a/doc/bu/files/cint64.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CInt64 [RCBasic Doc]
-#header function CInt64(i)
-
-Returns a 64-bit signed integer.
diff --git a/doc/bu/files/circle.txt b/doc/bu/files/circle.txt
deleted file mode 100644
index 65abcfe..0000000
--- a/doc/bu/files/circle.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Circle [RCBasic Doc]
-#header sub Circle(x,y,radius)
-
-Draws a circle on the current canvas.
diff --git a/doc/bu/files/circlefill.txt b/doc/bu/files/circlefill.txt
deleted file mode 100644
index 88e6ff3..0000000
--- a/doc/bu/files/circlefill.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CircleFill [RCBasic Doc]
-#header sub CircleFill(x,y,radius)
-
-Draws a filled circle on the current canvas.
diff --git a/doc/bu/files/clearactorforces.txt b/doc/bu/files/clearactorforces.txt
deleted file mode 100644
index cbfeb71..0000000
--- a/doc/bu/files/clearactorforces.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-#title clearActorForces [RCBasic Doc]
-#header sub clearActorForces( actor)
-
-Resets or clears all the forces and torques that have been applied to a rigid body in the current simulation step. This ensures that any forces, including linear forces and torques, do not accumulate from one simulation step to the next.
-
-Notes:
-#list
-#li Resets Forces: It removes all linear forces (like those applied by applyActorForce or applyActorCentralForce) and torques (like those applied by applyActorTorque).
-#li Does Not Affect Velocity: It clears only the applied forces and torques, but the current velocity (linear and angular) of the actor remains unchanged.
-#li Typically Used in Each Simulation Step: Used to reset forces after each step, so that only new forces applied in the next step will affect the body.
-#/list
diff --git a/doc/bu/files/clearcanvas.txt b/doc/bu/files/clearcanvas.txt
deleted file mode 100644
index e952865..0000000
--- a/doc/bu/files/clearcanvas.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ClearCanvas [RCBasic Doc]
-#header sub ClearCanvas()
-
-Clears the active drawing canvas
diff --git a/doc/bu/files/clearmatrix.txt b/doc/bu/files/clearmatrix.txt
deleted file mode 100644
index 53b23d6..0000000
--- a/doc/bu/files/clearmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ClearMatrix [RCBasic Doc]
-#header sub ClearMatrix(mA)
-
-Sets all elements in a matrix to zero
diff --git a/doc/bu/files/clearmatrixcolumns.txt b/doc/bu/files/clearmatrixcolumns.txt
deleted file mode 100644
index 4cae668..0000000
--- a/doc/bu/files/clearmatrixcolumns.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ClearMatrixColumns [RCBasic Doc]
-#header function ClearMatrixColumns(mA, c, num_cols)
-
-Sets all elements in the matrix columns specified to zero.
-
-#ref ClearMatrix ClearMatrixRows
diff --git a/doc/bu/files/clearmatrixrows.txt b/doc/bu/files/clearmatrixrows.txt
deleted file mode 100644
index cc1d416..0000000
--- a/doc/bu/files/clearmatrixrows.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ClearMatrixRows [RCBasic Doc]
-#header function ClearMatrixRows(mA, r, num_rows)
-
-Sets all elements in the matrix rows specified to zero.
-
-#ref ClearMatrix ClearMatrixColumns
diff --git a/doc/bu/files/clearmousezone.txt b/doc/bu/files/clearmousezone.txt
deleted file mode 100644
index 953683a..0000000
--- a/doc/bu/files/clearmousezone.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ClearMouseZone [RCBasic Doc]
-#header sub ClearMouseZone()
-
-Removes the previously set mouse zone from the window
diff --git a/doc/bu/files/clearstack_n.txt b/doc/bu/files/clearstack_n.txt
deleted file mode 100644
index 60dc4dc..0000000
--- a/doc/bu/files/clearstack_n.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ClearStack_N [RCBasic Doc]
-#header sub ClearStack_N( num_stack )
-
-Removes all elements from the stack
-
-#ref ClearStack_S
diff --git a/doc/bu/files/clearstack_s.txt b/doc/bu/files/clearstack_s.txt
deleted file mode 100644
index 020ce91..0000000
--- a/doc/bu/files/clearstack_s.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ClearStack_S [RCBasic Doc]
-#header sub ClearStack_S( str_stack )
-
-Removes all elements from the stack
-
-#ref ClearStack_N
diff --git a/doc/bu/files/clipmatrix.txt b/doc/bu/files/clipmatrix.txt
deleted file mode 100644
index 001e5c2..0000000
--- a/doc/bu/files/clipmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ClipMatrix [RCBasic Doc]
-#header sub ClipMatrix(mA, r, c, num_rows, num_cols, mB)
-
-Copies the specified portion of matrix mA into matrix mB
diff --git a/doc/bu/files/clonecanvas.txt b/doc/bu/files/clonecanvas.txt
deleted file mode 100644
index 8910bca..0000000
--- a/doc/bu/files/clonecanvas.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title CloneCanvas [RCBasic Doc]
-#header function CloneCanvas(c_num, mode)
-
-Returns a clone of a canvas. Clone canvases are mirrors of the original canvas so when you draw to one it will also be on the other. This is useful for a splitscreen 2d game.
-
-Mode is a canvas render mode like the one passed to OpenCanvas()
-
-
-#ref OpenCanvas
diff --git a/doc/bu/files/closecanvas.txt b/doc/bu/files/closecanvas.txt
deleted file mode 100644
index c78af01..0000000
--- a/doc/bu/files/closecanvas.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CloseCanvas [RCBasic Doc]
-#header Sub CloseCanvas(c_num)
-
-Closes a canvas
-
-#ref OpenCanvas
diff --git a/doc/bu/files/closefile.txt b/doc/bu/files/closefile.txt
deleted file mode 100644
index 21efc01..0000000
--- a/doc/bu/files/closefile.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CloseFile [RCBasic Doc]
-#header sub CloseFile( stream )
-
-Closes a file
-
-#ref OpenFile
diff --git a/doc/bu/files/closewindow.txt b/doc/bu/files/closewindow.txt
deleted file mode 100644
index 05c9656..0000000
--- a/doc/bu/files/closewindow.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CloseWindow [RCBasic Doc]
-#header sub CloseWindow( )
-
-Closes the graphics window
-
-#ref OpenWindow
diff --git a/doc/bu/files/cls.txt b/doc/bu/files/cls.txt
deleted file mode 100644
index eaedc84..0000000
--- a/doc/bu/files/cls.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Cls [RCBasic Doc]
-#header sub Cls()
-
-Clears the back buffer on the window
diff --git a/doc/bu/files/cofactormatrix.txt b/doc/bu/files/cofactormatrix.txt
deleted file mode 100644
index 19a1431..0000000
--- a/doc/bu/files/cofactormatrix.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CofactorMatrix [RCBasic Doc]
-#header sub CofactorMatrix(mA, r, c)
-
-Sets matrix mA to a cofactor. This will change the original matrix so it is recommended to copy the matrix if you still need the original matrix.
-
-#ref CopyMatrix
diff --git a/doc/bu/files/colorkey.txt b/doc/bu/files/colorkey.txt
deleted file mode 100644
index 1d00863..0000000
--- a/doc/bu/files/colorkey.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ColorKey [RCBasic Doc]
-#header sub ColorKey(img_id, c)
-
-Sets the color key for an image
diff --git a/doc/bu/files/command.txt b/doc/bu/files/command.txt
deleted file mode 100644
index 9b71e89..0000000
--- a/doc/bu/files/command.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title Command$ [RCBasic Doc]
-#header function Command$(arg)
-
-Returns command line arguments passed to a program.
-
-Note: Command$(0) will always be the program being executed ( your_program.cbc )
-
-#ref NumCommands
diff --git a/doc/bu/files/computeactorangularimpulsedenominator.txt b/doc/bu/files/computeactorangularimpulsedenominator.txt
deleted file mode 100644
index 1a66853..0000000
--- a/doc/bu/files/computeactorangularimpulsedenominator.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ComputeActorAngularImpulseDenominator [RCBasic Doc]
-#header function ComputeActorAngularImpulseDenominator( actor, x, y, z)
-
-Computes a scalar value that represents how an actor will respond to an angular impulse at a given point, taking into account the actor's inertia tensor (which governs how the object resists rotation). This function is particularly useful in calculating the actor's rotational response to an impulse, typically during collision resolution or constraints involving rotation.
-
-#ref ComputeActorImpulseDenominator
diff --git a/doc/bu/files/computeactorgyroimpulselocal.txt b/doc/bu/files/computeactorgyroimpulselocal.txt
deleted file mode 100644
index 4f91f63..0000000
--- a/doc/bu/files/computeactorgyroimpulselocal.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ComputeActorGyroImpulseLocal [RCBasic Doc]
-#header sub ComputeActorGyroImpulseLocal( actor, dt, ByRef x, ByRef y, ByRef z)
-
-Computes the gyroscopic impulse for an actor in an implicit manner, based on the actor's current angular velocity and inertia. This function is used to simulate the gyroscopic effect—also known as gyroscopic precession—which occurs when a rotating object experiences a torque that causes its axis of rotation to change.
-
-#ref ComputeActorGyroImpulseWorld
diff --git a/doc/bu/files/computeactorgyroimpulseworld.txt b/doc/bu/files/computeactorgyroimpulseworld.txt
deleted file mode 100644
index cb04f05..0000000
--- a/doc/bu/files/computeactorgyroimpulseworld.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ComputeActorGyroImpulseWorld [RCBasic Doc]
-#header sub ComputeActorGyroImpulseWorld( actor, dt, ByRef x, ByRef y, ByRef z)
-
-Computes the gyroscopic impulse for an actor in an implicit manner, but in this case, it performs the calculation relative to the world frame of reference, rather than the actor’s local frame. This function is used to handle the gyroscopic effects (i.e., gyroscopic precession) of a rotating object when a torque is applied, affecting its axis of rotation.
-
-#ref ComputeActorGyroImpulseLocal
diff --git a/doc/bu/files/computeactorimpulsedenominator.txt b/doc/bu/files/computeactorimpulsedenominator.txt
deleted file mode 100644
index 53250fe..0000000
--- a/doc/bu/files/computeactorimpulsedenominator.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title ComputeActorImpulseDenominator [RCBasic Doc]
-#header function ComputeActorImpulseDenominator( actor, pos_x, pos_y, pos_z, normal_x, normal_y, normal_z)
-
-Computes a scalar value related to how a rigid body will respond to an applied impulse at a given point. It’s primarily used internally in the physics engine to calculate how an object’s mass, inertia, and shape will affect the outcome of impulses, particularly in collisions or constraints like contact points between objects.
-
-#ref ComputeActorAngularImpulseDenominator
diff --git a/doc/bu/files/copyactormaterial.txt b/doc/bu/files/copyactormaterial.txt
deleted file mode 100644
index 6fc5ce6..0000000
--- a/doc/bu/files/copyactormaterial.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title copyActorMaterial [RCBasic Doc]
-#header function copyActorMaterial( actor, material_num)
-
-Returns a material id for a copy of an actor's material
diff --git a/doc/bu/files/copyfile.txt b/doc/bu/files/copyfile.txt
deleted file mode 100644
index af5b3a4..0000000
--- a/doc/bu/files/copyfile.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CopyFile [RCBasic Doc]
-#header sub CopyFile(src$, dst$)
-
-Copies the contents of src$ file to a new dst$ file
diff --git a/doc/bu/files/copyimage.txt b/doc/bu/files/copyimage.txt
deleted file mode 100644
index 19d0008..0000000
--- a/doc/bu/files/copyimage.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CopyImage [RCBasic Doc]
-#header function CopyImage( img_id )
-
-Returns a copy of an image
diff --git a/doc/bu/files/copymaterial.txt b/doc/bu/files/copymaterial.txt
deleted file mode 100644
index ec68fbe..0000000
--- a/doc/bu/files/copymaterial.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title copyMaterial [RCBasic Doc]
-#header function copyMaterial( smaterial_id)
-
-Returns a copy of a material
diff --git a/doc/bu/files/copymatrix.txt b/doc/bu/files/copymatrix.txt
deleted file mode 100644
index ffd1295..0000000
--- a/doc/bu/files/copymatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CopyMatrix [RCBasic Doc]
-#header sub CopyMatrix(mA, mB)
-
-Copies matrix mA to matrix mB
diff --git a/doc/bu/files/copymatrixcolumns.txt b/doc/bu/files/copymatrixcolumns.txt
deleted file mode 100644
index be6d2d9..0000000
--- a/doc/bu/files/copymatrixcolumns.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CopyMatrixColumns [RCBasic Doc]
-#header function CopyMatrixColumns(mA, mB, c, num_cols)
-
-Copies the specified matrix columns from matrix mA to matrix mB.
-
-Note: Matrix mB will be redimensioned to the size of the copied columns.
diff --git a/doc/bu/files/copymatrixrows.txt b/doc/bu/files/copymatrixrows.txt
deleted file mode 100644
index b580326..0000000
--- a/doc/bu/files/copymatrixrows.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title CopyMatrixRows [RCBasic Doc]
-#header function CopyMatrixRows(mA, mB, r, num_rows)
-
-Copies the specified matrix rows from matrix mA to matrix mB.
-
-Note: Matrix mB will be redimensioned to the size of the copied rows.
-
diff --git a/doc/bu/files/cos.txt b/doc/bu/files/cos.txt
deleted file mode 100644
index 5cf7b8d..0000000
--- a/doc/bu/files/cos.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Cos [RCBasic Doc]
-#header function Cos(n)
-
-Returns the Cosine of an angle
diff --git a/doc/bu/files/createbillboardactor.txt b/doc/bu/files/createbillboardactor.txt
deleted file mode 100644
index 6966c4f..0000000
--- a/doc/bu/files/createbillboardactor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CreateBillboardActor [RCBasic Doc]
-#header function CreateBillboardActor( )
-
-Returns a billboard actor
-
-Billboard actors are flat textured planes that are always facing the camera.
diff --git a/doc/bu/files/createconeconstraint.txt b/doc/bu/files/createconeconstraint.txt
deleted file mode 100644
index 4a9c9b7..0000000
--- a/doc/bu/files/createconeconstraint.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-#title CreateConeConstraint [RCBasic Doc]
-#header function CreateConeConstraint( actorA, rbAFrame_matrix)
-
-The Cone Constraint is a type of joint constraint used to simulate realistic rotational movement between two actors (or between an actor and the world) with specific angular limits. This constraint is especially useful for simulating ball-and-socket joints with some twisting freedom but restricted cone-like movement, such as human shoulders or robotic arms.
-
-#code
-actorA = CreateCubeActor(100)
-
-rbA = DimMatrix(4, 4) 'A transform matrix should be a 4x4 matrix
-SetIdentityMatrix(rbA, 4) 'This will set rbA to a 4x4 identity matrix
-SetMatrixTranslation(rbA, 0, 40, 0) 'Set the point where the constraint connects to actorA to 1 unit above its origin
-SetMatrixRotation(rbA, 0, 0, 0) 'Sets the angle the constraint is attached at to 0 on all axes
-
-test_cone = CreateConeConstraint( actorA, rbA )
-#/code
-
-Note: It is recommended to use CreateConeConstraintEx() in most cases
-
-#ref CreateConeConstraintEx SetIdentityMatrix SetMatrixTranslation SetMatrixRotation
diff --git a/doc/bu/files/createconeconstraintex.txt b/doc/bu/files/createconeconstraintex.txt
deleted file mode 100644
index f742059..0000000
--- a/doc/bu/files/createconeconstraintex.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-#title createConeConstraintEx [RCBasic Doc]
-#header function createConeConstraintEx( actorA, actorB, rbAFrame_matrix, rbBFrame_matrix)
-
-The Cone Constraint is a type of joint constraint used to simulate realistic rotational movement between two actors (or between an actor and the world) with specific angular limits. This constraint is especially useful for simulating ball-and-socket joints with some twisting freedom but restricted cone-like movement, such as human shoulders or robotic arms.
-
-#code
-actorA = CreateCubeActor(100)
-actorB = CreateCubeActor(100)
-
-rbA = DimMatrix(4, 4) 'A transform matrix should be a 4x4 matrix
-SetIdentityMatrix(rbA, 4) 'This will set rbA to a 4x4 identity matrix
-SetMatrixTranslation(rbA, 0, 40, 0) 'Set the point where the constraint connects to actorA to 1 unit above its origin
-SetMatrixRotation(rbA, 0, 0, 0) 'Sets the angle the constraint is attached at to 0 on all axes
-
-rbB = DimMatrix(4, 4) 'A transform matrix should be a 4x4 matrix
-SetIdentityMatrix(rbB, 4) 'This will set rbA to a 4x4 identity matrix
-SetMatrixTranslation(rbB, 0, 40, 0) 'Set the point where the constraint connects to actorA to 1 unit above its origin
-SetMatrixRotation(rbB, 0, 0, 0) 'Sets the angle the constraint is attached at to 0 on all axes
-
-test_cone = CreateConeConstraint( actorA, rbA )
-#/code
-
-#ref CreateConeConstraint SetIdentityMatrix SetMatrixTranslation SetMatrixRotation
diff --git a/doc/bu/files/createcubeactor.txt b/doc/bu/files/createcubeactor.txt
deleted file mode 100644
index 921c283..0000000
--- a/doc/bu/files/createcubeactor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CreateCubeActor [RCBasic Doc]
-#header function CreateCubeActor( cube_size )
-
-Returns an actor with a cube mesh of the specified size ( cube_size x cube_size x cube_size )
-
-#ref CreateMeshActor CreateMeshOctreeActor CreateSphereActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor CreateTerrainActor
diff --git a/doc/bu/files/createhingeconstraint.txt b/doc/bu/files/createhingeconstraint.txt
deleted file mode 100644
index 0fc595e..0000000
--- a/doc/bu/files/createhingeconstraint.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-#title createHingeConstraint [RCBasic Doc]
-#header function createHingeConstraint( actorA, frameA, useReferenceFrameA )
-
-Simulates a hinge joint, which allows two actors (or an actor and the world) to rotate around a single axis while restricting movement along the other axes. This is similar to the way a door swings on its hinges or how an elbow joint functions in the human body.
-
-#code
-actorA = CreateCubeActor(100) 'Creates a cube actor
-frameA = DimMatrix(4, 4) 'A transform matrix must be a 4x4 matrix
-SetIdentityMatrix(frameA, 4) 'Sets frameB to a 4x4 identity matrix
-SetMatrixTranslation(frameA, 0, 1, 0) 'Sets the attach point of the constraint to the top of the cube
-hinge = CreateHingeConstraint(actorA, frameA, true)
-#/code
-
-Note: It is recommended to use CreateSlideConstraintEx() in most cases
-
-#ref CreateHingeConstraintEx SetIdentityMatrix SetMatrixTranslation SetMatrixRotation
-
diff --git a/doc/bu/files/createhingeconstraintex.txt b/doc/bu/files/createhingeconstraintex.txt
deleted file mode 100644
index d68b2e6..0000000
--- a/doc/bu/files/createhingeconstraintex.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-#title createHingeConstraintEx [RCBasic Doc]
-#header function createHingeConstraintEx( actorA, actorB, frameA, frameB, useReferenceFrameA)
-
-Simulates a hinge joint, which allows two actors (or an actor and the world) to rotate around a single axis while restricting movement along the other axes. This is similar to the way a door swings on its hinges or how an elbow joint functions in the human body.
-
-#code
-actorA = CreateCubeActor(100) 'Creates a cube actor
-frameA = DimMatrix(4, 4) 'A transform matrix must be a 4x4 matrix
-SetIdentityMatrix(frameA, 4) 'Sets frameB to a 4x4 identity matrix
-SetMatrixTranslation(frameA, 0, 1, 0) 'Sets the attach point of the constraint to the top of the cube
-
-actorB = CreateCubeActor(100) 'Creates a cube actor
-frameB = DimMatrix(4, 4) 'A transform matrix must be a 4x4 matrix
-SetIdentityMatrix(frameB, 4) 'Sets frameB to a 4x4 identity matrix
-SetMatrixTranslation(frameB, 0, 1, 0) 'Sets the attach point of the constraint to the top of the cube
-
-hinge = CreateHingeConstraint(actorA, actorB, frameA, frameB, true)
-#/code
-
-Note: It is recommended to use CreateHingeConstraintEx() in most cases
-
-#ref CreateHingeConstraint SetIdentityMatrix SetMatrixTranslation SetMatrixRotation
-
diff --git a/doc/bu/files/createimage.txt b/doc/bu/files/createimage.txt
deleted file mode 100644
index 116ffba..0000000
--- a/doc/bu/files/createimage.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CreateImage [RCBasic Doc]
-#header function CreateImage(w, h, byref buffer)
-
-Returns an image created from the buffer provided
-
-#ref CreateImageEx LoadImage
diff --git a/doc/bu/files/createimageex.txt b/doc/bu/files/createimageex.txt
deleted file mode 100644
index 11f34fe..0000000
--- a/doc/bu/files/createimageex.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title createImageEx [RCBasic Doc]
-#header function createImageEx(w, h, byref buffer, color)
-
-Returns an image created from the buffer provided
-
-The color parameter is a color key value to apply
-
-#ref CreateImage LoadImage
-
diff --git a/doc/bu/files/createlightactor.txt b/doc/bu/files/createlightactor.txt
deleted file mode 100644
index c0c24d4..0000000
--- a/doc/bu/files/createlightactor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CreateLightActor [RCBasic Doc]
-#header function CreateLightActor( )
-
-Returns a new light in the scene
-
-#ref CreateMeshActor CreateMeshOctreeActor CreateCubeActor CreateSphereActor CreateWaterPlaneActor CreateBillboardActor CreateTerrainActor
diff --git a/doc/bu/files/creatematerial.txt b/doc/bu/files/creatematerial.txt
deleted file mode 100644
index 4cd5875..0000000
--- a/doc/bu/files/creatematerial.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title createMaterial [RCBasic Doc]
-#header function createMaterial()
-
-Returns a new material
diff --git a/doc/bu/files/createmesh.txt b/doc/bu/files/createmesh.txt
deleted file mode 100644
index 3f258eb..0000000
--- a/doc/bu/files/createmesh.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CreateMesh [RCBasic Doc]
-#header function CreateMesh( )
-
-Returns a new mesh
diff --git a/doc/bu/files/createmeshactor.txt b/doc/bu/files/createmeshactor.txt
deleted file mode 100644
index a25428d..0000000
--- a/doc/bu/files/createmeshactor.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title CreateMeshActor [RCBasic Doc]
-#header function CreateMeshActor( mesh )
-
-Returns a new actor composed of a mesh
-
-The mesh can either be created using CreateMesh() or Loaded using LoadMesh()
-
-#ref CreateMesh LoadMesh
-
-#ref CreateMeshOctreeActor CreateCubeActor CreateSphereActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor CreateTerrainActor
diff --git a/doc/bu/files/createmeshoctreeactor.txt b/doc/bu/files/createmeshoctreeactor.txt
deleted file mode 100644
index 633ffe8..0000000
--- a/doc/bu/files/createmeshoctreeactor.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title CreateMeshOctreeActor [RCBasic Doc]
-#header function CreateMeshOctreeActor( mesh )
-
-Returns a mesh actor optimized for large objects (such as levels)
-
-#ref CreateMesh LoadMesh
-
-#ref CreateMeshActor CreateCubeActor CreateSphereActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor CreateTerrainActor
diff --git a/doc/bu/files/createpointconstraint.txt b/doc/bu/files/createpointconstraint.txt
deleted file mode 100644
index b1376a9..0000000
--- a/doc/bu/files/createpointconstraint.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title createPointConstraint [RCBasic Doc]
-#header function createPointConstraint( actorA, pxA, pyA, pzA)
-
-A type of constraint that allows two actors (or an actor and the world) to move freely relative to each other while ensuring that one point on each body remains coincident. Essentially, it ensures that the two actors stay connected at a single point, but without restricting their relative rotations. This kind of constraint is useful when you need a connection that allows full rotation in all directions, such as a pendulum, ball joint, or even some suspension systems.
-
-#ref CreatePointConstraintEx
diff --git a/doc/bu/files/createpointconstraintex.txt b/doc/bu/files/createpointconstraintex.txt
deleted file mode 100644
index f17b183..0000000
--- a/doc/bu/files/createpointconstraintex.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title createPointConstraintEx [RCBasic Doc]
-#header function createPointConstraintEx( actorA, actorB, pxA, pyA, pzA, pxB, pyB, pzB)
-
-A type of constraint that allows two actors (or an actor and the world) to move freely relative to each other while ensuring that one point on each body remains coincident. Essentially, it ensures that the two actors stay connected at a single point, but without restricting their relative rotations. This kind of constraint is useful when you need a connection that allows full rotation in all directions, such as a pendulum, ball joint, or even some suspension systems.
-
-#ref CreatePointConstraint
-
diff --git a/doc/bu/files/createslideconstraint.txt b/doc/bu/files/createslideconstraint.txt
deleted file mode 100644
index 5063718..0000000
--- a/doc/bu/files/createslideconstraint.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-#title createSlideConstraint [RCBasic Doc]
-#header function createSlideConstraint( actorA, frameInB_matrix, useLinearReferenceFrameA)
-
-A type of constraint that restricts the motion between two actors (or between an actor and the world) in such a way that they can slide along a specific axis and rotate around the same axis, while limiting or allowing movement along other axes. This constraint is similar to a prismatic joint with added rotational freedom, making it useful for simulating objects like pistons, sliding doors, or rail systems.
-
-#code
-actorA = CreateCubeActor(100) 'Creates a cube actor
-frameB = DimMatrix(4, 4) 'A transform matrix must be a 4x4 matrix
-SetIdentityMatrix(frameB, 4) 'Sets frameB to a 4x4 identity matrix
-SetMatrixTranslation(frameB, 0, 50, 0) 'Sets the attach point of the constraint to the top of the cube
-SetMatrixRotation(frameB, 0, 90, 0) 'Rotates the constraint axis by 90 degrees around y
-slide = CreateSlideConstraint(actorA, frameB, true)
-#/code
-
-Note: It is recommended to use CreateSlideConstraintEx() in most cases
-
-#ref CreateSlideConstraintEx SetIdentityMatrix SetMatrixTranslation SetMatrixRotation
diff --git a/doc/bu/files/createslideconstraintex.txt b/doc/bu/files/createslideconstraintex.txt
deleted file mode 100644
index 9aeeebe..0000000
--- a/doc/bu/files/createslideconstraintex.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-#title createSlideConstraintEx [RCBasic Doc]
-#header function createSlideConstraintEx( actorA, actorB, frameInA_matrix, frameInB_matrix, useLinearReferenceFrameA)
-
-A type of constraint that restricts the motion between two actors (or between an actor and the world) in such a way that they can slide along a specific axis and rotate around the same axis, while limiting or allowing movement along other axes. This constraint is similar to a prismatic joint with added rotational freedom, making it useful for simulating objects like pistons, sliding doors, or rail systems.
-
-#code
-actorA = CreateCubeActor(100) 'Creates a cube actor
-frameA = DimMatrix(4, 4) 'A transform matrix must be a 4x4 matrix
-SetIdentityMatrix(frameA, 4) 'Sets frameB to a 4x4 identity matrix
-SetMatrixTranslation(frameA, 0, 0, 0) 'Sets the attach point of the constraint to center of the cube
-SetMatrixRotation(frameA, 0, 90, 0) 'Rotates the constraint axis by 90 degrees around y
-
-actorB = CreateCubeActor(100) 'Creates a cube actor
-frameB = DimMatrix(4, 4) 'A transform matrix must be a 4x4 matrix
-SetIdentityMatrix(frameB, 4) 'Sets frameB to a 4x4 identity matrix
-SetMatrixTranslation(frameB, 0, 50, 0) 'Sets the attach point of the constraint to the top of the cube
-SetMatrixRotation(frameB, 0, 90, 0) 'Rotates the constraint axis by 90 degrees around y
-slide = CreateSlideConstraintEx(actorA, actorB, frameA, frameB, true)
-#/code
-
-Note: It is recommended to use CreateSlideConstraintEx() in most cases
-
-#ref CreateSlideConstraint SetIdentityMatrix SetMatrixTranslation SetMatrixRotation
-
diff --git a/doc/bu/files/createsound.txt b/doc/bu/files/createsound.txt
deleted file mode 100644
index f5fc41c..0000000
--- a/doc/bu/files/createsound.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CreateSound [RCBasic Doc]
-#header function CreateSound(byref buffer, buffer_size, vol)
-
-Returns a new sound from a buffer of raw audio data
diff --git a/doc/bu/files/createsphereactor.txt b/doc/bu/files/createsphereactor.txt
deleted file mode 100644
index 8894b23..0000000
--- a/doc/bu/files/createsphereactor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CreateSphereActor [RCBasic Doc]
-#header function CreateSphereActor( radius )
-
-Returns an actor composed of a sphere mesh
-
-#ref CreateMeshActor CreateMeshOctreeActor CreateCubeActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor CreateTerrainActor
diff --git a/doc/bu/files/createsprite.txt b/doc/bu/files/createsprite.txt
deleted file mode 100644
index bc7fbf1..0000000
--- a/doc/bu/files/createsprite.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CreateSprite [RCBasic Doc]
-#header function CreateSprite( img )
-
-Returns new sprite
diff --git a/doc/bu/files/createstack_n.txt b/doc/bu/files/createstack_n.txt
deleted file mode 100644
index 2a1f8d3..0000000
--- a/doc/bu/files/createstack_n.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-#title CreateStack_N [RCBasic Doc]
-#header function CreateStack_N( )
-
-Returns a new number stack
-
diff --git a/doc/bu/files/createstack_s.txt b/doc/bu/files/createstack_s.txt
deleted file mode 100644
index 48bbc15..0000000
--- a/doc/bu/files/createstack_s.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-#title CreateStack_S [RCBasic Doc]
-#header function CreateStack_S()
-
-Returns a new string stack
-
diff --git a/doc/bu/files/createterrainactor.txt b/doc/bu/files/createterrainactor.txt
deleted file mode 100644
index b8ba9f9..0000000
--- a/doc/bu/files/createterrainactor.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title CreateTerrainActor [RCBasic Doc]
-#header function CreateTerrainActor( hmap_file$ )
-
-Returns terrain generated from a height map
-
-Note: Height Maps can be any supported image format
-
-#ref CreateMeshActor CreateMeshOctreeActor CreateCubeActor CreateSphereActor CreateWaterPlaneActor CreateLightActor CreateBillboardActor
diff --git a/doc/bu/files/createwaterplaneactor.txt b/doc/bu/files/createwaterplaneactor.txt
deleted file mode 100644
index ed1f97f..0000000
--- a/doc/bu/files/createwaterplaneactor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title CreateWaterPlaneActor [RCBasic Doc]
-#header function CreateWaterPlaneActor( w, h )
-
-Returns a water plane actor
-
-#ref CreateMeshActor CreateMeshOctreeActor CreateCubeActor CreateSphereActor CreateLightActor CreateBillboardActor CreateTerrainActor
diff --git a/doc/bu/files/cubematrix.txt b/doc/bu/files/cubematrix.txt
deleted file mode 100644
index e949679..0000000
--- a/doc/bu/files/cubematrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title CubeMatrix [RCBasic Doc]
-#header function CubeMatrix(mA, mB)
-
-Returns matrix mA raised to the 3rd power
diff --git a/doc/bu/files/date.txt b/doc/bu/files/date.txt
deleted file mode 100644
index 672d718..0000000
--- a/doc/bu/files/date.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Date$ [RCBasic Doc]
-#header function Date$()
-
-Returns the date in "MM-DD-YYYY" format
diff --git a/doc/bu/files/degrees.txt b/doc/bu/files/degrees.txt
deleted file mode 100644
index 96d0046..0000000
--- a/doc/bu/files/degrees.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Degrees [RCBasic Doc]
-#header function Degrees(r)
-
-Returns angle converted from radians to degrees
diff --git a/doc/bu/files/deleteactor.txt b/doc/bu/files/deleteactor.txt
deleted file mode 100644
index 38b80e9..0000000
--- a/doc/bu/files/deleteactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteActor [RCBasic Doc]
-#header sub DeleteActor( actor )
-
-Removes an actor from the scene and frees its memory
diff --git a/doc/bu/files/deleteconstraint.txt b/doc/bu/files/deleteconstraint.txt
deleted file mode 100644
index fe8dd8e..0000000
--- a/doc/bu/files/deleteconstraint.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title deleteConstraint [RCBasic Doc]
-#header sub deleteConstraint( constraint_id)
-
-Removes a constraint
diff --git a/doc/bu/files/deletefont.txt b/doc/bu/files/deletefont.txt
deleted file mode 100644
index 4a5f97e..0000000
--- a/doc/bu/files/deletefont.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteFont [RCBasic Doc]
-#header sub DeleteFont(font_id)
-
-Frees a font from memory
diff --git a/doc/bu/files/deleteimage.txt b/doc/bu/files/deleteimage.txt
deleted file mode 100644
index 164f0d0..0000000
--- a/doc/bu/files/deleteimage.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteImage [RCBasic Doc]
-#header sub DeleteImage(img)
-
-Removes an image from memory
diff --git a/doc/bu/files/deletematerial.txt b/doc/bu/files/deletematerial.txt
deleted file mode 100644
index 5e4d8a5..0000000
--- a/doc/bu/files/deletematerial.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title deleteMaterial [RCBasic Doc]
-#header sub deleteMaterial( material_id)
-
-Removes a material from memory
diff --git a/doc/bu/files/deletematrix.txt b/doc/bu/files/deletematrix.txt
deleted file mode 100644
index a1774e8..0000000
--- a/doc/bu/files/deletematrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteMatrix [RCBasic Doc]
-#header Sub DeleteMatrix(mA)
-
-Frees a matrix from memory
diff --git a/doc/bu/files/deletematrixcolumns.txt b/doc/bu/files/deletematrixcolumns.txt
deleted file mode 100644
index 51427c0..0000000
--- a/doc/bu/files/deletematrixcolumns.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title DeleteMatrixColumns [RCBasic Doc]
-#header function DeleteMatrixColumns(mA, c, num_cols)
-
-Removes the specified columns from a matrix
-
-Returns false if column are outside matrix
-
-#ref DeleteMatrixRows
diff --git a/doc/bu/files/deletematrixrows.txt b/doc/bu/files/deletematrixrows.txt
deleted file mode 100644
index c6e3a4a..0000000
--- a/doc/bu/files/deletematrixrows.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title DeleteMatrixRows [RCBasic Doc]
-#header function DeleteMatrixRows(mA, r, num_rows)
-
-Removes the specified rows from a matrix
-
-Returns false if rows are outside matrix
-
-#ref DeleteMatrixColumns
diff --git a/doc/bu/files/deletemesh.txt b/doc/bu/files/deletemesh.txt
deleted file mode 100644
index fca2650..0000000
--- a/doc/bu/files/deletemesh.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteMesh [RCBasic Doc]
-#header sub DeleteMesh( mesh )
-
-Removes a mesh from memory
diff --git a/doc/bu/files/deletemusic.txt b/doc/bu/files/deletemusic.txt
deleted file mode 100644
index 617f5ab..0000000
--- a/doc/bu/files/deletemusic.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteMusic [RCBasic Doc]
-#header sub DeleteMusic()
-
-Removes the current music track from memory
diff --git a/doc/bu/files/deletesound.txt b/doc/bu/files/deletesound.txt
deleted file mode 100644
index 73852c7..0000000
--- a/doc/bu/files/deletesound.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteSound [RCBasic Doc]
-#header sub DeleteSound(snd)
-
-Removes a sound from memory
diff --git a/doc/bu/files/deletesprite.txt b/doc/bu/files/deletesprite.txt
deleted file mode 100644
index 602dfed..0000000
--- a/doc/bu/files/deletesprite.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteSprite [RCBasic Doc]
-#header Sub DeleteSprite( sprite )
-
-Removes a sprite from memory
diff --git a/doc/bu/files/deletestack_n.txt b/doc/bu/files/deletestack_n.txt
deleted file mode 100644
index 672e79c..0000000
--- a/doc/bu/files/deletestack_n.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteStack_N [RCBasic Doc]
-#header sub DeleteStack_N( num_stack )
-
-Removes a number stack from memory
diff --git a/doc/bu/files/deletestack_s.txt b/doc/bu/files/deletestack_s.txt
deleted file mode 100644
index 2969a36..0000000
--- a/doc/bu/files/deletestack_s.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteStack_S [RCBasic Doc]
-#header sub DeleteStack_S( str_stack )
-
-Removes a string stack from memory
diff --git a/doc/bu/files/deletevideo.txt b/doc/bu/files/deletevideo.txt
deleted file mode 100644
index 486f00b..0000000
--- a/doc/bu/files/deletevideo.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DeleteVideo [RCBasic Doc]
-#header sub DeleteVideo()
-
-Removes the current video track from memory
diff --git a/doc/bu/files/determinant.txt b/doc/bu/files/determinant.txt
deleted file mode 100644
index 8d255ba..0000000
--- a/doc/bu/files/determinant.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Determinant [RCBasic Doc]
-#header function Determinant(mA)
-
-Returns the determinant of matrix mA
diff --git a/doc/bu/files/dimmatrix.txt b/doc/bu/files/dimmatrix.txt
deleted file mode 100644
index c94db52..0000000
--- a/doc/bu/files/dimmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DimMatrix [RCBasic Doc]
-#header function DimMatrix(m_rows, m_cols)
-
-Returns a new matrix
diff --git a/doc/bu/files/dir.txt b/doc/bu/files/dir.txt
deleted file mode 100644
index 7c5de53..0000000
--- a/doc/bu/files/dir.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Dir$ [RCBasic Doc]
-#header function Dir$()
-
-Returns the current working directory
diff --git a/doc/bu/files/direxists.txt b/doc/bu/files/direxists.txt
deleted file mode 100644
index 05afda9..0000000
--- a/doc/bu/files/direxists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DirExists [RCBasic Doc]
-#header function DirExists(p$)
-
-Returns true if a directory exists and false if not
diff --git a/doc/bu/files/dirfirst.txt b/doc/bu/files/dirfirst.txt
deleted file mode 100644
index 2758f31..0000000
--- a/doc/bu/files/dirfirst.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DirFirst$ [RCBasic Doc]
-#header function DirFirst$()
-
-Resets the directory list poll and returns the first item in the current working directory
diff --git a/doc/bu/files/dirnext.txt b/doc/bu/files/dirnext.txt
deleted file mode 100644
index 8657887..0000000
--- a/doc/bu/files/dirnext.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title DirNext$ [RCBasic Doc]
-#header function DirNext$()
-
-Returns the next item in the directory poll
-
-#ref DirFirst$
diff --git a/doc/bu/files/distance2d.txt b/doc/bu/files/distance2d.txt
deleted file mode 100644
index ef41e31..0000000
--- a/doc/bu/files/distance2d.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Distance2D [RCBasic Doc]
-#header Function Distance2D(x1, y1, x2, y2)
-
-Returns the distance between 2 points in 2d space
diff --git a/doc/bu/files/distance3d.txt b/doc/bu/files/distance3d.txt
deleted file mode 100644
index 20cfffb..0000000
--- a/doc/bu/files/distance3d.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-#title Distance3D [RCBasic Doc]
-#header Function Distance3D(x1, y1, z1, x2, y2, z2)
-
-Returns the distance between 2 points in 3d space
-
diff --git a/doc/bu/files/drawimage.txt b/doc/bu/files/drawimage.txt
deleted file mode 100644
index 03d0504..0000000
--- a/doc/bu/files/drawimage.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DrawImage [RCBasic Doc]
-#header sub DrawImage(img, x, y)
-
-Draws an image on the active canvas
diff --git a/doc/bu/files/drawimage_blit.txt b/doc/bu/files/drawimage_blit.txt
deleted file mode 100644
index 3b49158..0000000
--- a/doc/bu/files/drawimage_blit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DrawImage_Blit [RCBasic Doc]
-#header sub DrawImage_Blit(img, x, y, src_x, src_y, src_w, src_h)
-
-Draws a portion of an image to the current canvas.
diff --git a/doc/bu/files/drawimage_blitex.txt b/doc/bu/files/drawimage_blitex.txt
deleted file mode 100644
index b0fb003..0000000
--- a/doc/bu/files/drawimage_blitex.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title DrawImage_BlitEx [RCBasic Doc]
-#header sub DrawImage_BlitEx(slot, x, y, w, h, src_x, src_y, src_w, src_h)
-
-Draws a portion of an image to the current canvas scaled to a given width and height.
-
-#ref DrawImage_Blit
diff --git a/doc/bu/files/drawimage_flip.txt b/doc/bu/files/drawimage_flip.txt
deleted file mode 100644
index 7f55e21..0000000
--- a/doc/bu/files/drawimage_flip.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title DrawImage_Flip [RCBasic Doc]
-#header sub DrawImage_Flip(slot, x, y, h, v)
-
-Draws an image flipped horizontally or vertically.
-
-Note: h and v are boolean values
-
-#ref DrawImage_FlipEx
diff --git a/doc/bu/files/drawimage_flipex.txt b/doc/bu/files/drawimage_flipex.txt
deleted file mode 100644
index 02e7b99..0000000
--- a/doc/bu/files/drawimage_flipex.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title DrawImage_FlipEx [RCBasic Doc]
-#header sub DrawImage_FlipEx(slot, x, y, src_x, src_y, src_w, src_h, h, v)
-
-Draws a portion of an image flipped horizontally or vertically.
-
-Note: h and v are boolean values
-
-#ref DrawImage_Flip
diff --git a/doc/bu/files/drawimage_rotate.txt b/doc/bu/files/drawimage_rotate.txt
deleted file mode 100644
index bcba804..0000000
--- a/doc/bu/files/drawimage_rotate.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DrawImage_Rotate [RCBasic Doc]
-#header sub DrawImage_Rotate(slot, x, y, angle)
-
-Draws an image to the current canvas rotated by a given angle.
diff --git a/doc/bu/files/drawimage_rotateex.txt b/doc/bu/files/drawimage_rotateex.txt
deleted file mode 100644
index 6473745..0000000
--- a/doc/bu/files/drawimage_rotateex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DrawImage_RotateEx [RCBasic Doc]
-#header sub DrawImage_RotateEx(slot, x, y, src_x, src_y, src_w, src_h, angle)
-
- Draws a portion of an image to the current canvas rotated by a given angle.
diff --git a/doc/bu/files/drawimage_rotozoom.txt b/doc/bu/files/drawimage_rotozoom.txt
deleted file mode 100644
index 41417e7..0000000
--- a/doc/bu/files/drawimage_rotozoom.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DrawImage_Rotozoom [RCBasic Doc]
-#header sub DrawImage_Rotozoom(slot, x, y, angle, zx, zy)
-
- Draws an image to the current canvas rotated and scaled
diff --git a/doc/bu/files/drawimage_rotozoomex.txt b/doc/bu/files/drawimage_rotozoomex.txt
deleted file mode 100644
index 6f41a86..0000000
--- a/doc/bu/files/drawimage_rotozoomex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DrawImage_RotozoomEx [RCBasic Doc]
-#header sub DrawImage_RotozoomEx(slot, x, y, src_x, src_y, src_w, src_h, angle, zx, zy)
-
- Draws a portion of an image to the current canvas rotated and scaled
diff --git a/doc/bu/files/drawimage_zoom.txt b/doc/bu/files/drawimage_zoom.txt
deleted file mode 100644
index 1e12138..0000000
--- a/doc/bu/files/drawimage_zoom.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title DrawImage_Zoom [RCBasic Doc]
-#header sub DrawImage_Zoom(slot, x, y, zx, zy)
-
- Draws an image to the current canvas scaled by a given factor
-
-#ref DrawImage_ZoomEx
diff --git a/doc/bu/files/drawimage_zoomex.txt b/doc/bu/files/drawimage_zoomex.txt
deleted file mode 100644
index 35e51bb..0000000
--- a/doc/bu/files/drawimage_zoomex.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title DrawImage_ZoomEx [RCBasic Doc]
-#header sub DrawImage_ZoomEx(slot, x, y, src_x, src_y, src_w, src_h, zx, zy)
-
-Draws a portion of an Image to the current canvas scaled by a given factor
-
-#ref DrawImage_Zoom
diff --git a/doc/bu/files/drawtext.txt b/doc/bu/files/drawtext.txt
deleted file mode 100644
index 6a6cbbe..0000000
--- a/doc/bu/files/drawtext.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title DrawText [RCBasic Doc]
-#header sub DrawText(txt$, x, y)
-
- Draws text to the current canvas
diff --git a/doc/bu/files/easter.txt b/doc/bu/files/easter.txt
deleted file mode 100644
index b5842b3..0000000
--- a/doc/bu/files/easter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Easter$ [RCBasic Doc]
-#header function Easter$(year)
-
-Returns easter of the year passed to it.
diff --git a/doc/bu/files/ellipse.txt b/doc/bu/files/ellipse.txt
deleted file mode 100644
index 5917639..0000000
--- a/doc/bu/files/ellipse.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Ellipse [RCBasic Doc]
-#header sub Ellipse(x,y,rx,ry)
-
-Draws an ellipse on the current canvas.
diff --git a/doc/bu/files/ellipsefill.txt b/doc/bu/files/ellipsefill.txt
deleted file mode 100644
index 4b195d6..0000000
--- a/doc/bu/files/ellipsefill.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title EllipseFill [RCBasic Doc]
-#header sub EllipseFill(x,y,rx,ry)
-
-Draws a filled ellipse on the current canvas.
diff --git a/doc/bu/files/env.txt b/doc/bu/files/env.txt
deleted file mode 100644
index 630b8f0..0000000
--- a/doc/bu/files/env.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title Env$ [RCBasic Doc]
-#header function Env$(v$)
-
-Returns the value of the environment variable passed to it.
-
-#ref SetEnv
diff --git a/doc/bu/files/eof.txt b/doc/bu/files/eof.txt
deleted file mode 100644
index 425a8f4..0000000
--- a/doc/bu/files/eof.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title EOF [RCBasic Doc]
-#header function EOF(stream)
-
-Returns true when end of file is reached
diff --git a/doc/bu/files/evaljs.txt b/doc/bu/files/evaljs.txt
deleted file mode 100644
index 8136032..0000000
--- a/doc/bu/files/evaljs.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title EvalJS$ [RCBasic Doc]
-#header Function EvalJS$(js_code$) 'Only useable in Emscripten
-
-Runs javascript code
-
-Returns the return value of the javascript code
-
-NOTE: ONLY WORKS IN WEB PORT
diff --git a/doc/bu/files/exp.txt b/doc/bu/files/exp.txt
deleted file mode 100644
index 054b1db..0000000
--- a/doc/bu/files/exp.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Exp [RCBasic Doc]
-#header function Exp(n)
-
-Returns the exponential function of a number.
diff --git a/doc/bu/files/fademusicin.txt b/doc/bu/files/fademusicin.txt
deleted file mode 100644
index fd48cc6..0000000
--- a/doc/bu/files/fademusicin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FadeMusicIn [RCBasic Doc]
-#header sub FadeMusicIn(fade_time, loops)
-
-Fades music in
diff --git a/doc/bu/files/fademusicout.txt b/doc/bu/files/fademusicout.txt
deleted file mode 100644
index 688c293..0000000
--- a/doc/bu/files/fademusicout.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FadeMusicOut [RCBasic Doc]
-#header sub FadeMusicOut(fade_time)
-
-Fades music out
diff --git a/doc/bu/files/fileexists.txt b/doc/bu/files/fileexists.txt
deleted file mode 100644
index 0dee4f5..0000000
--- a/doc/bu/files/fileexists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FileExists [RCBasic Doc]
-#header function FileExists(fileName$)
-
-Returns true if a file exists
diff --git a/doc/bu/files/filelength.txt b/doc/bu/files/filelength.txt
deleted file mode 100644
index 4a1fd6d..0000000
--- a/doc/bu/files/filelength.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FileLength [RCBasic Doc]
-#header function FileLength(fileName$)
-
- Returns the size of a file in bytes.
diff --git a/doc/bu/files/fillmatrix.txt b/doc/bu/files/fillmatrix.txt
deleted file mode 100644
index d86419b..0000000
--- a/doc/bu/files/fillmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FillMatrix [RCBasic Doc]
-#header sub FillMatrix(mA, v)
-
-Fills matrix with the given value
diff --git a/doc/bu/files/fillmatrixcolumns.txt b/doc/bu/files/fillmatrixcolumns.txt
deleted file mode 100644
index 45f8649..0000000
--- a/doc/bu/files/fillmatrixcolumns.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FillMatrixColumns [RCBasic Doc]
-#header function FillMatrixColumns(mA, c, num_cols, v)
-
-Fills matrix columns with the given value starting at the given column
diff --git a/doc/bu/files/fillmatrixrows.txt b/doc/bu/files/fillmatrixrows.txt
deleted file mode 100644
index 4dfdc39..0000000
--- a/doc/bu/files/fillmatrixrows.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FillMatrixRows [RCBasic Doc]
-#header function FillMatrixRows(mA, r, num_rows, v)
-
-Fills matrix rows with the given value starting at the given row
diff --git a/doc/bu/files/flashwindow.txt b/doc/bu/files/flashwindow.txt
deleted file mode 100644
index 9fd4805..0000000
--- a/doc/bu/files/flashwindow.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-#title FlashWindow [RCBasic Doc]
-#header function FlashWindow( flag )
-
-Flashes a window to specify an alert
-
-Returns 0 on success and a negative number on failure
-
-Possible flag values:
-#list ul
-#li FLASH_CANCEL
-#li FLASH_BRIEFLY
-#li FLASH_UNTIL_FOCUSED
-#/list
diff --git a/doc/bu/files/floodfill.txt b/doc/bu/files/floodfill.txt
deleted file mode 100644
index be4b414..0000000
--- a/doc/bu/files/floodfill.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FloodFill [RCBasic Doc]
-#header sub FloodFill(x,y)
-
-Fills a closed shape in with the current draw color
diff --git a/doc/bu/files/fontexists.txt b/doc/bu/files/fontexists.txt
deleted file mode 100644
index 9e2c720..0000000
--- a/doc/bu/files/fontexists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FontExists [RCBasic Doc]
-#header Function FontExists(fnt_id)
-
-Returns True if the specified font id is associated with a loaded font
diff --git a/doc/bu/files/fprint.txt b/doc/bu/files/fprint.txt
deleted file mode 100644
index 97b35de..0000000
--- a/doc/bu/files/fprint.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Fprint [RCBasic Doc]
-#header sub Fprint(txt$)
-
-Outputs text to the console
diff --git a/doc/bu/files/fps.txt b/doc/bu/files/fps.txt
deleted file mode 100644
index 6e53436..0000000
--- a/doc/bu/files/fps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title FPS [RCBasic Doc]
-#header function FPS()
-
-Returns the number of frames being rendered per second
diff --git a/doc/bu/files/frac.txt b/doc/bu/files/frac.txt
deleted file mode 100644
index 369f3b2..0000000
--- a/doc/bu/files/frac.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Frac [RCBasic Doc]
-#header function Frac(n)
-
-Returns the decimal portion of a number.
diff --git a/doc/bu/files/getaccel.txt b/doc/bu/files/getaccel.txt
deleted file mode 100644
index 8da28ae..0000000
--- a/doc/bu/files/getaccel.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetAccel [RCBasic Doc]
-#header sub GetAccel(accel_num, ByRef x, ByRef y, ByRef z)
-
-Gets the axis values for an accelerometer.
diff --git a/doc/bu/files/getactoraabb.txt b/doc/bu/files/getactoraabb.txt
deleted file mode 100644
index dda85b1..0000000
--- a/doc/bu/files/getactoraabb.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getActorAABB [RCBasic Doc]
-#header sub getActorAABB( actor, ByRef min_x, ByRef min_y, ByRef min_z, ByRef max_x, ByRef max_y, ByRef max_z)
-
-Gets the bounding box for an actor.
diff --git a/doc/bu/files/getactorangulardamping.txt b/doc/bu/files/getactorangulardamping.txt
deleted file mode 100644
index dfbe10a..0000000
--- a/doc/bu/files/getactorangulardamping.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorAngularDamping [RCBasic Doc]
-#header function GetActorAngularDamping( actor)
-
-Returns the amount of angular damping set on the actor
-
-#ref SetActorDamping ApplyActorDamping GetActorLinearDamping
diff --git a/doc/bu/files/getactorangularfactor.txt b/doc/bu/files/getactorangularfactor.txt
deleted file mode 100644
index 9edd76b..0000000
--- a/doc/bu/files/getactorangularfactor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getActorAngularFactor [RCBasic Doc]
-#header sub getActorAngularFactor( actor, ByRef x, ByRef y, ByRef z)
-
-Returns the angular factor set on an actor
-
-#ref SetActorAngularFactor GetActorLinearFactor SetActorLinearFactor
diff --git a/doc/bu/files/getactorangularsleepthreshold.txt b/doc/bu/files/getactorangularsleepthreshold.txt
deleted file mode 100644
index 3eded28..0000000
--- a/doc/bu/files/getactorangularsleepthreshold.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorAngularSleepThreshold [RCBasic Doc]
-#header function GetActorAngularSleepThreshold( actor)
-
-Returns the Angular deactivation threshold for the actor
-
-#ref SetActorSleepThresholds GetActorLinearSleepThreshold
diff --git a/doc/bu/files/getactorangularvelocitylocal.txt b/doc/bu/files/getactorangularvelocitylocal.txt
deleted file mode 100644
index 105a9d3..0000000
--- a/doc/bu/files/getactorangularvelocitylocal.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getActorAngularVelocityLocal [RCBasic Doc]
-#header sub getActorAngularVelocityLocal( actor, ByRef x, ByRef y, ByRef z)
-
-Gets an actor's Angular Velocity
-
-#ref GetActorAngularVelocityWorld SetActorAngularVelocityLocal SetActorAngularVelocityWorld
diff --git a/doc/bu/files/getactorangularvelocityworld.txt b/doc/bu/files/getactorangularvelocityworld.txt
deleted file mode 100644
index 6737f6f..0000000
--- a/doc/bu/files/getactorangularvelocityworld.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getActorAngularVelocityWorld [RCBasic Doc]
-#header sub getActorAngularVelocityWorld( actor, ByRef x, ByRef y, ByRef z)
-
-Gets an actor's Angular Velocity
-
-#ref GetActorAngularVelocityLocal SetActorAngularVelocityLocal SetActorAngularVelocityWorld
diff --git a/doc/bu/files/getactoranimationspeed.txt b/doc/bu/files/getactoranimationspeed.txt
deleted file mode 100644
index 56ab127..0000000
--- a/doc/bu/files/getactoranimationspeed.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetActorAnimationSpeed [RCBasic Doc]
-#header function GetActorAnimationSpeed( actor )
-
-Returns actors animation speed in frames per second
diff --git a/doc/bu/files/getactorautoculling.txt b/doc/bu/files/getactorautoculling.txt
deleted file mode 100644
index 725b3a1..0000000
--- a/doc/bu/files/getactorautoculling.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetActorAutoCulling [RCBasic Doc]
-#header function GetActorAutoCulling( actor )
-
-Returns True if auto culling is set on the actor
diff --git a/doc/bu/files/getactorcollision.txt b/doc/bu/files/getactorcollision.txt
deleted file mode 100644
index 4bf4654..0000000
--- a/doc/bu/files/getactorcollision.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorCollision [RCBasic Doc]
-#header function GetActorCollision(actor1, actor2)
-
-Returns true if 2 actors collide
-
-Note: This function will work with solid and non solid actors
diff --git a/doc/bu/files/getactorcollisionshape.txt b/doc/bu/files/getactorcollisionshape.txt
deleted file mode 100644
index 7df0631..0000000
--- a/doc/bu/files/getactorcollisionshape.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-#title GetActorCollisionShape [RCBasic Doc]
-#header function GetActorCollisionShape(actor)
-
-Returns the actor's collision shape
-
-Possible values:
-#list ul
-#li SHAPE_TYPE_NONE
-#li SHAPE_TYPE_BOX
-#li SHAPE_TYPE_SPHERE
-#li SHAPE_TYPE_CYLINDER
-#li SHAPE_TYPE_CAPSULE
-#li SHAPE_TYPE_CONE
-#li SHAPE_TYPE_CONVEXHULL
-#li SHAPE_TYPE_TRIMESH
-#/list
-
-#ref SetActorCollisionShape
diff --git a/doc/bu/files/getactorcomposition.txt b/doc/bu/files/getactorcomposition.txt
deleted file mode 100644
index 0dc7ed3..0000000
--- a/doc/bu/files/getactorcomposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getActorCOMPosition [RCBasic Doc]
-#header sub getActorCOMPosition( actor, ByRef x, ByRef y, ByRef z)
-
-Gets an actor's center of mass position. This is useful for setting the origin of constraints.
diff --git a/doc/bu/files/getactorcurrentframe.txt b/doc/bu/files/getactorcurrentframe.txt
deleted file mode 100644
index 91247b5..0000000
--- a/doc/bu/files/getactorcurrentframe.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetActorCurrentFrame [RCBasic Doc]
-#header function GetActorCurrentFrame( actor )
-
-Returns an actor's current frame of animation
diff --git a/doc/bu/files/getactorendframe.txt b/doc/bu/files/getactorendframe.txt
deleted file mode 100644
index d4bd288..0000000
--- a/doc/bu/files/getactorendframe.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetActorEndFrame [RCBasic Doc]
-#header function GetActorEndFrame( actor )
-
-Returns the last frame of an actor's animation
diff --git a/doc/bu/files/getactorgravity.txt b/doc/bu/files/getactorgravity.txt
deleted file mode 100644
index 56b0dd8..0000000
--- a/doc/bu/files/getactorgravity.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorGravity [RCBasic Doc]
-#header sub GetActorGravity( actor, ByRef x, ByRef y, ByRef z )
-
-Gets the gravity of an actor along each access.
-
-#ref SetActorGravity
diff --git a/doc/bu/files/getactorinverseinertiadiaglocal.txt b/doc/bu/files/getactorinverseinertiadiaglocal.txt
deleted file mode 100644
index 073f848..0000000
--- a/doc/bu/files/getactorinverseinertiadiaglocal.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getActorInverseInertiaDiagLocal [RCBasic Doc]
-#header sub getActorInverseInertiaDiagLocal( actor, ByRef x, ByRef y, ByRef z)
-
-Gets the inverse of the inertia tensor's diagonal components in the local space. This is used to compute how the actor reacts to rotational forces (torques) applied to it.
diff --git a/doc/bu/files/getactorinversemass.txt b/doc/bu/files/getactorinversemass.txt
deleted file mode 100644
index f0d430a..0000000
--- a/doc/bu/files/getactorinversemass.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getActorInverseMass [RCBasic Doc]
-#header function getActorInverseMass( actor)
-
-Returns an actor's inverse mass
-
-
diff --git a/doc/bu/files/getactorlineardamping.txt b/doc/bu/files/getactorlineardamping.txt
deleted file mode 100644
index 29d4708..0000000
--- a/doc/bu/files/getactorlineardamping.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorLinearDamping [RCBasic Doc]
-#header function GetActorLinearDamping( actor)
-
-Return's an actor's linear damping
-
-#ref SetActorDamping GetActorAngularDamping
diff --git a/doc/bu/files/getactorlinearfactor.txt b/doc/bu/files/getactorlinearfactor.txt
deleted file mode 100644
index 3967933..0000000
--- a/doc/bu/files/getactorlinearfactor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorLinearFactor [RCBasic Doc]
-#header sub GetActorLinearFactor( actor, ByRef x, ByRef y, ByRef z)
-
-Gets an actor's linear factor
-
-#ref SetActorLinearFactor GetActorAngularFactor SetActorAngularFactor
diff --git a/doc/bu/files/getactorlinearsleepthreshold.txt b/doc/bu/files/getactorlinearsleepthreshold.txt
deleted file mode 100644
index fb22817..0000000
--- a/doc/bu/files/getactorlinearsleepthreshold.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorLinearSleepThreshold [RCBasic Doc]
-#header function GetActorLinearSleepThreshold( actor)
-
-Returns the linear deactivation threshold for the actor
-
-#ref SetActorSleepThresholds GetActorAngularSleepThreshold
diff --git a/doc/bu/files/getactorlinearvelocitylocal.txt b/doc/bu/files/getactorlinearvelocitylocal.txt
deleted file mode 100644
index a7539bd..0000000
--- a/doc/bu/files/getactorlinearvelocitylocal.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorLinearVelocityLocal [RCBasic Doc]
-#header sub GetActorLinearVelocityLocal( actor, ByRef x, ByRef y, ByRef z)
-
-Gets actor's linear velocity
-
-#ref SetActorLinearVelocityLocal SetActorLinearVelocityWorld
diff --git a/doc/bu/files/getactorlinearvelocityworld.txt b/doc/bu/files/getactorlinearvelocityworld.txt
deleted file mode 100644
index 52ee7d8..0000000
--- a/doc/bu/files/getactorlinearvelocityworld.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title getActorLinearVelocityWorld [RCBasic Doc]
-#header sub getActorLinearVelocityWorld( actor, ByRef x, ByRef y, ByRef z)
-
-Gets actor's linear velocity
-
-#ref SetActorLinearVelocityLocal SetActorLinearVelocityWorld
-
diff --git a/doc/bu/files/getactorlocalinertia.txt b/doc/bu/files/getactorlocalinertia.txt
deleted file mode 100644
index 7bf348c..0000000
--- a/doc/bu/files/getactorlocalinertia.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-#title GetActorLocalInertia [RCBasic Doc]
-#header sub GetActorLocalInertia( actor, ByRef x, ByRef y, ByRef z)
-
-Gets the local inertia tensor of an actor. The inertia tensor describes how an actor resists rotational motion depending on its mass distribution relative to its center of mass.
-
diff --git a/doc/bu/files/getactormaterial.txt b/doc/bu/files/getactormaterial.txt
deleted file mode 100644
index 13d1356..0000000
--- a/doc/bu/files/getactormaterial.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getActorMaterial [RCBasic Doc]
-#header function getActorMaterial( actor, material_num)
-
-Returns an actor's material id.
-
-Actor's can have multiple materials but generally you want material 0 for most Actor's.
diff --git a/doc/bu/files/getactormaterialcount.txt b/doc/bu/files/getactormaterialcount.txt
deleted file mode 100644
index 6e1f86e..0000000
--- a/doc/bu/files/getactormaterialcount.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getActorMaterialCount [RCBasic Doc]
-#header function getActorMaterialCount( actor)
-
-Returns the number of materials for an actor.
diff --git a/doc/bu/files/getactormaterialflag.txt b/doc/bu/files/getactormaterialflag.txt
deleted file mode 100644
index 303363d..0000000
--- a/doc/bu/files/getactormaterialflag.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-#title getActorMaterialFlag [RCBasic Doc]
-#header function getActorMaterialFlag( actor, material, flag)
-
-Returns the value of the specified material flag
-
-Possible values for flag:
-#list
-#li MATERIAL_FLAG_WIREFRAME
-#li MATERIAL_FLAG_POINTCLOUD
-#li MATERIAL_FLAG_GOURAUD_SHADING
-#li MATERIAL_FLAG_LIGHTING
-#li MATERIAL_FLAG_ZBUFFER
-#li MATERIAL_FLAG_ZWRITE_ENABLE
-#li MATERIAL_FLAG_BACK_FACE_CULLING
-#li MATERIAL_FLAG_FRONT_FACE_CULLING
-#li MATERIAL_FLAG_BILINEAR_FILTER
-#li MATERIAL_FLAG_TRILINEAR_FILTER
-#li MATERIAL_FLAG_ANISOTROPIC_FILTER
-#li MATERIAL_FLAG_FOG_ENABLE
-#li MATERIAL_FLAG_NORMALIZE_NORMALS
-#li MATERIAL_FLAG_TEXTURE_WRAP
-#li MATERIAL_FLAG_ANTI_ALIASING
-#li MATERIAL_FLAG_COLOR_MASK
-#li MATERIAL_FLAG_COLOR_MATERIAL
-#li MATERIAL_FLAG_USE_MIP_MAPS
-#li MATERIAL_FLAG_BLEND_OPERATION
-#li MATERIAL_FLAG_POLYGON_OFFSET
-#/list
-
-#ref GetMaterialFlag
diff --git a/doc/bu/files/getactormaterialtype.txt b/doc/bu/files/getactormaterialtype.txt
deleted file mode 100644
index ac3b570..0000000
--- a/doc/bu/files/getactormaterialtype.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-#title GetActorMaterialType [RCBasic Doc]
-#header function GetActorMaterialType( actor, material )
-
-Returns the material type of an actor material
-
-Possible material types
-#list ul
-#li MATERIAL_TYPE_SOLID
-#li MATERIAL_TYPE_SOLID_2_LAYER
-#li MATERIAL_TYPE_LIGHTMAP
-#li MATERIAL_TYPE_LIGHTMAP_ADD
-#li MATERIAL_TYPE_LIGHTMAP_M2
-#li MATERIAL_TYPE_LIGHTMAP_M4
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING_M2
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING_M4
-#li MATERIAL_TYPE_DETAIL_MAP
-#li MATERIAL_TYPE_SPHERE_MAP
-#li MATERIAL_TYPE_REFLECTION_2_LAYER
-#li MATERIAL_TYPE_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL
-#li MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL_REF
-#li MATERIAL_TYPE_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_TRANSPARENT_REFLECTION_2_LAYER
-#li MATERIAL_TYPE_NORMAL_MAP_SOLID
-#li MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_PARALLAX_MAP_SOLID
-#li MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_ONETEXTURE_BLEND
-#li MATERIAL_TYPE_FORCE_32BIT
-#/list
-
-#ref SetActorMaterialType GetMaterialType SetMaterialType
diff --git a/doc/bu/files/getactorposition.txt b/doc/bu/files/getactorposition.txt
deleted file mode 100644
index 5e8dc69..0000000
--- a/doc/bu/files/getactorposition.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorPosition [RCBasic Doc]
-#header sub GetActorPosition( actor, ByRef x, ByRef y, ByRef z )
-
-Gets the actors position
-
-#ref SetActorPosition
diff --git a/doc/bu/files/getactorrotation.txt b/doc/bu/files/getactorrotation.txt
deleted file mode 100644
index b8c5909..0000000
--- a/doc/bu/files/getactorrotation.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorRotation [RCBasic Doc]
-#header sub GetActorRotation( actor, ByRef x, ByRef y, ByRef z )
-
-Gets the actors rotation on each axis
-
-#ref SetActorRotation
diff --git a/doc/bu/files/getactorrotationq.txt b/doc/bu/files/getactorrotationq.txt
deleted file mode 100644
index b7c0450..0000000
--- a/doc/bu/files/getactorrotationq.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title GetActorRotationQ [RCBasic Doc]
-#header sub GetActorRotationQ( actor, ByRef x, ByRef y, ByRef z, ByRef w)
-
-Gets the actors rotation as a quaternion.
-
-Note: This is useful for calculations that require quaternion but most developers should just use GetActorRotation()
-
-#ref GetActorRotation SetActorRotation
diff --git a/doc/bu/files/getactorscale.txt b/doc/bu/files/getactorscale.txt
deleted file mode 100644
index d3d1064..0000000
--- a/doc/bu/files/getactorscale.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorScale [RCBasic Doc]
-#header sub GetActorScale( actor, ByRef x, ByRef y, ByRef z )
-
-Gets an actor's scale
-
-#ref SetActorScale
diff --git a/doc/bu/files/getactorstartframe.txt b/doc/bu/files/getactorstartframe.txt
deleted file mode 100644
index a48bd45..0000000
--- a/doc/bu/files/getactorstartframe.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetActorStartFrame [RCBasic Doc]
-#header function GetActorStartFrame( actor )
-
-Returns the start frame of an actor's animation
diff --git a/doc/bu/files/getactortotalforce.txt b/doc/bu/files/getactortotalforce.txt
deleted file mode 100644
index e891630..0000000
--- a/doc/bu/files/getactortotalforce.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorTotalForce [RCBasic Doc]
-#header sub GetActorTotalForce( actor, ByRef x, ByRef y, ByRef z)
-
-Gets the total net force currently acting on an actor. This force is the sum of all external forces applied to the actor at a given point in time, including forces like gravity, applied forces, and other interactions such as contact or collision forces.
-
-#ref GetActorTotalTorque
diff --git a/doc/bu/files/getactortotaltorque.txt b/doc/bu/files/getactortotaltorque.txt
deleted file mode 100644
index 04516d8..0000000
--- a/doc/bu/files/getactortotaltorque.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetActorTotalTorque [RCBasic Doc]
-#header sub GetActorTotalTorque( actor, ByRef x, ByRef y, ByRef z)
-
-Gets the total net torque currently acting on an actor. Torque represents the rotational equivalent of force, describing how different forces applied to the actor cause it to rotate. The total torque is the sum of all external torques acting on the actor, which determine how the actor will rotate or change its angular velocity.
-
-#ref GetTotalForces
diff --git a/doc/bu/files/getactortransform.txt b/doc/bu/files/getactortransform.txt
deleted file mode 100644
index fb7ecac..0000000
--- a/doc/bu/files/getactortransform.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetActorTransform [RCBasic Doc]
-#header sub GetActorTransform( actor, matrix )
-
-Stores the actors absolute transformation in the given matrix
diff --git a/doc/bu/files/getactortransitiontime.txt b/doc/bu/files/getactortransitiontime.txt
deleted file mode 100644
index 7bb2714..0000000
--- a/doc/bu/files/getactortransitiontime.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title GetActorTransitionTime [RCBasic Doc]
-#header function GetActorTransitionTime( actor )
-
-Returns the total transition time of an actor transitioning between animations
-
-Note: Time returned is in seconds
-
-#ref StartActorTransition StopActorTransition ActorIsInTransition
diff --git a/doc/bu/files/getbilinearfilter.txt b/doc/bu/files/getbilinearfilter.txt
deleted file mode 100644
index 1cfdac2..0000000
--- a/doc/bu/files/getbilinearfilter.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetBilinearFilter [RCBasic Doc]
-#header function GetBilinearFilter()
-
-Returns true if bilinear filtering is enabled
-
-#ref SetBilinearFilter
diff --git a/doc/bu/files/getblendmode.txt b/doc/bu/files/getblendmode.txt
deleted file mode 100644
index de35dd7..0000000
--- a/doc/bu/files/getblendmode.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#title GetBlendMode [RCBasic Doc]
-#header function GetBlendMode( )
-
-Returns the current blend mode
-
-Note: Only applies to 2D image drawing commands
-
-Possible Blend Modes
-#list ul
-#li BLEND_MODE_NONE
-#li BLEND_MODE_ADD
-#li BLEND_MODE_SUBTRACT
-#li BLEND_MODE_REVSUBTRACT
-#li BLEND_MODE_MIN
-#li BLEND_MODE_MAX
-#li BLEND_MODE_MIN_FACTOR
-#li BLEND_MODE_MAX_FACTOR
-#li BLEND_MODE_MIN_ALPHA
-#li BLEND_MODE_MAX_ALPHA
-#/list
-
-#ref SetBlendMode
diff --git a/doc/bu/files/getcameraaspectratio.txt b/doc/bu/files/getcameraaspectratio.txt
deleted file mode 100644
index afd5638..0000000
--- a/doc/bu/files/getcameraaspectratio.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCameraAspectRatio [RCBasic Doc]
-#header function GetCameraAspectRatio( )
-
-Returns the camera aspect ratio for the active canvas
-
-#ref SetCameraAspectRatio
diff --git a/doc/bu/files/getcamerafarvalue.txt b/doc/bu/files/getcamerafarvalue.txt
deleted file mode 100644
index 02ad686..0000000
--- a/doc/bu/files/getcamerafarvalue.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCameraFarValue [RCBasic Doc]
-#header function GetCameraFarValue( )
-
-Returns the far plane of the camera on the active canvas
-
-#ref GetCameraNearValue
diff --git a/doc/bu/files/getcamerafov.txt b/doc/bu/files/getcamerafov.txt
deleted file mode 100644
index 847d494..0000000
--- a/doc/bu/files/getcamerafov.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetCameraFOV [RCBasic Doc]
-#header function GetCameraFOV( )
-
-Returns the field of view of the camera on the active canvas
diff --git a/doc/bu/files/getcameranearvalue.txt b/doc/bu/files/getcameranearvalue.txt
deleted file mode 100644
index cbbeeda..0000000
--- a/doc/bu/files/getcameranearvalue.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCameraNearValue [RCBasic Doc]
-#header function GetCameraNearValue( )
-
-Returns the near plane of the camera on the active canvas
-
-#ref GetCameraFarValue
diff --git a/doc/bu/files/getcameraposition.txt b/doc/bu/files/getcameraposition.txt
deleted file mode 100644
index bfbf333..0000000
--- a/doc/bu/files/getcameraposition.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCameraPosition [RCBasic Doc]
-#header sub GetCameraPosition(ByRef x, ByRef y, ByRef z)
-
-Gets the position of the camera
-
-#ref SetCameraPosition TranslateCamera
diff --git a/doc/bu/files/getcamerarotation.txt b/doc/bu/files/getcamerarotation.txt
deleted file mode 100644
index 5768652..0000000
--- a/doc/bu/files/getcamerarotation.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCameraRotation [RCBasic Doc]
-#header sub GetCameraRotation(ByRef x, ByRef y, ByRef z)
-
-Gets the rotation of the camera on each axis
-
-#ref SetCameraRotation RotateCamera
diff --git a/doc/bu/files/getcanvasalpha.txt b/doc/bu/files/getcanvasalpha.txt
deleted file mode 100644
index 10e1bf0..0000000
--- a/doc/bu/files/getcanvasalpha.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCanvasAlpha [RCBasic Doc]
-#header function GetCanvasAlpha(c_num)
-
-Returns the alpha blend value of a canvas
-
-#ref SetCanvasAlpha
diff --git a/doc/bu/files/getcanvascolormod.txt b/doc/bu/files/getcanvascolormod.txt
deleted file mode 100644
index 6842661..0000000
--- a/doc/bu/files/getcanvascolormod.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCanvasColorMod [RCBasic Doc]
-#header function GetCanvasColorMod(c_num)
-
-Returns the color modulation of a canvas
-
-#ref SetCanvasColorMod
diff --git a/doc/bu/files/getcanvasoffset.txt b/doc/bu/files/getcanvasoffset.txt
deleted file mode 100644
index c35d618..0000000
--- a/doc/bu/files/getcanvasoffset.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCanvasOffset [RCBasic Doc]
-#header sub GetCanvasOffset(c_num, byref x, byref y)
-
-Returns view offset of a canvas
-
-#ref SetCanvasOffset
diff --git a/doc/bu/files/getcanvassize.txt b/doc/bu/files/getcanvassize.txt
deleted file mode 100644
index bdb68af..0000000
--- a/doc/bu/files/getcanvassize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetCanvasSize [RCBasic Doc]
-#header sub GetCanvasSize(c_num, byref w, byref h)
-
-Gets the size of a canvas
diff --git a/doc/bu/files/getcanvasviewport.txt b/doc/bu/files/getcanvasviewport.txt
deleted file mode 100644
index 99ad32c..0000000
--- a/doc/bu/files/getcanvasviewport.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCanvasViewport [RCBasic Doc]
-#header sub GetCanvasViewport(c_num, byref x, byref y, byref w, byref h)
-
-Gets the position and size of a canvas viewport
-
-#ref OpenCanvas SetCanvasViewport
diff --git a/doc/bu/files/getcanvasz.txt b/doc/bu/files/getcanvasz.txt
deleted file mode 100644
index d82f672..0000000
--- a/doc/bu/files/getcanvasz.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title GetCanvasZ [RCBasic Doc]
-#header function GetCanvasZ(c_num)
-
-Returns the Canvas Z Order.
-
-Note: Canvases with a lower Z order are drawn first and those with higher values will be drawn on top
-
-#ref SetCanvasZ
diff --git a/doc/bu/files/getchannelvolume.txt b/doc/bu/files/getchannelvolume.txt
deleted file mode 100644
index 1101b98..0000000
--- a/doc/bu/files/getchannelvolume.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetChannelVolume [RCBasic Doc]
-#header function GetChannelVolume(channel)
-
-Returns the volume of the audio on a channel
diff --git a/doc/bu/files/getcirclelineintersection.txt b/doc/bu/files/getcirclelineintersection.txt
deleted file mode 100644
index 1026aba..0000000
--- a/doc/bu/files/getcirclelineintersection.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetCircleLineIntersection [RCBasic Doc]
-#header function GetCircleLineIntersection(circle_x, circle_y, radius, x1, y1, x2, y2, ByRef ix1, ByRef iy1, ByRef ix2, ByRef iy2)
-
-Calculates the points where a circle and line intersect and stores the intersection points in (ix1, iy1) and (ix2, iy2)
-
-NOTE: This function returns 0 if there is no intersection and 1 or 2 if there is 1 or 2 intersection points. If it only returns 1 then only (ix1, iy1) will be set.
diff --git a/doc/bu/files/getclipboardtext.txt b/doc/bu/files/getclipboardtext.txt
deleted file mode 100644
index 46fc3dc..0000000
--- a/doc/bu/files/getclipboardtext.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetClipboardText$ [RCBasic Doc]
-#header function GetClipboardText$( )
-
-Returns the clipboard text.
diff --git a/doc/bu/files/getconstraintactora.txt b/doc/bu/files/getconstraintactora.txt
deleted file mode 100644
index 2a5767f..0000000
--- a/doc/bu/files/getconstraintactora.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintActorA [RCBasic Doc]
-#header function getConstraintActorA( constraint_id)
-
-Returns the first actor in a constraint
diff --git a/doc/bu/files/getconstraintactorb.txt b/doc/bu/files/getconstraintactorb.txt
deleted file mode 100644
index b4bb449..0000000
--- a/doc/bu/files/getconstraintactorb.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintActorB [RCBasic Doc]
-#header function getConstraintActorB( constraint_id)
-
-Returns the second actor in a constraint
diff --git a/doc/bu/files/getconstraintaframe.txt b/doc/bu/files/getconstraintaframe.txt
deleted file mode 100644
index 08d4376..0000000
--- a/doc/bu/files/getconstraintaframe.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title GetConstraintAFrame [RCBasic Doc]
-#header function GetConstraintAFrame( constraint_id, mA)
-
-Stores the transform of the first actor in a constraint in mA
-
-Note: Only applies to cone and hinge constraints
-
-#ref GetConstraintBFrame
diff --git a/doc/bu/files/getconstraintanchora.txt b/doc/bu/files/getconstraintanchora.txt
deleted file mode 100644
index 9d26062..0000000
--- a/doc/bu/files/getconstraintanchora.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title GetConstraintAnchorA [RCBasic Doc]
-#header sub GetConstraintAnchorA( constraint_id, ByRef x, ByRef y, ByRef z)
-
-Gets the anchor point of the first actor in world space, where the slider constraint is acting on the actor. This point represents the location of the slider's reference frame on body A in the global coordinate system.
-
-Note: Only applies to Slider constraints
-
-#ref GetConstraintAnchorB
diff --git a/doc/bu/files/getconstraintanchorb.txt b/doc/bu/files/getconstraintanchorb.txt
deleted file mode 100644
index 63500ff..0000000
--- a/doc/bu/files/getconstraintanchorb.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title GetConstraintAnchorB [RCBasic Doc]
-#header sub GetConstraintAnchorB( constraint_id, ByRef x, ByRef y, ByRef z)
-
-Gets the anchor point of the first actor in world space, where the slider constraint is acting on the actor. This point represents the location of the slider's reference frame on body B in the global coordinate system.
-
-Note: Only applies to Slider constraints
-
-#ref GetConstraintAnchorA
diff --git a/doc/bu/files/getconstraintangdepth.txt b/doc/bu/files/getconstraintangdepth.txt
deleted file mode 100644
index c8e294b..0000000
--- a/doc/bu/files/getconstraintangdepth.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title GetConstraintAngDepth [RCBasic Doc]
-#header function GetConstraintAngDepth( constraint_id)
-
-Gets the angular depth or the angular deviation from the expected orientation of the two actors (or one actor and the world) constrained by the slider. This "angular depth" refers to how much the actors are misaligned rotationally relative to the constraint’s expected or allowed configuration.
-
-
-Note: Only applies to Slider constraints
diff --git a/doc/bu/files/getconstraintanglepoint.txt b/doc/bu/files/getconstraintanglepoint.txt
deleted file mode 100644
index 0b6cfed..0000000
--- a/doc/bu/files/getconstraintanglepoint.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getConstraintAnglePoint [RCBasic Doc]
-#header sub getConstraintAnglePoint( constraint_id, angle, c_len, ByRef x, ByRef y, ByRef z)
-
-Computes or retrieves a point based on a given angle relative to the constraint’s twist axis.
-
-Note: Only applies to cone constraint
diff --git a/doc/bu/files/getconstraintangularonly.txt b/doc/bu/files/getconstraintangularonly.txt
deleted file mode 100644
index 3e57409..0000000
--- a/doc/bu/files/getconstraintangularonly.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintAngularOnly [RCBasic Doc]
-#header function getConstraintAngularOnly( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintangularpos.txt b/doc/bu/files/getconstraintangularpos.txt
deleted file mode 100644
index 660b04a..0000000
--- a/doc/bu/files/getconstraintangularpos.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintAngularPos [RCBasic Doc]
-#header function getConstraintAngularPos( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintappliedimpulse.txt b/doc/bu/files/getconstraintappliedimpulse.txt
deleted file mode 100644
index 180117a..0000000
--- a/doc/bu/files/getconstraintappliedimpulse.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintAppliedImpulse [RCBasic Doc]
-#header function getConstraintAppliedImpulse( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintbframe.txt b/doc/bu/files/getconstraintbframe.txt
deleted file mode 100644
index 1419f08..0000000
--- a/doc/bu/files/getconstraintbframe.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title GetConstraintBFrame [RCBasic Doc]
-#header function GetConstraintBFrame( constraint_id, mA)
-
-Stores the transform of the second actor in a constraint in mA
-
-Note: Only applies to cone and hinge constraints
-
-#ref GetConstraintAFrame
diff --git a/doc/bu/files/getconstraintbiasfactor.txt b/doc/bu/files/getconstraintbiasfactor.txt
deleted file mode 100644
index c03fb4e..0000000
--- a/doc/bu/files/getconstraintbiasfactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintBiasFactor [RCBasic Doc]
-#header function getConstraintBiasFactor( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintbreakingimpulsethreshold.txt b/doc/bu/files/getconstraintbreakingimpulsethreshold.txt
deleted file mode 100644
index 48f058a..0000000
--- a/doc/bu/files/getconstraintbreakingimpulsethreshold.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintBreakingImpulseThreshold [RCBasic Doc]
-#header function getConstraintBreakingImpulseThreshold( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintdamping.txt b/doc/bu/files/getconstraintdamping.txt
deleted file mode 100644
index 5bcacaf..0000000
--- a/doc/bu/files/getconstraintdamping.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintDamping [RCBasic Doc]
-#header function getConstraintDamping( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintdampingdirang.txt b/doc/bu/files/getconstraintdampingdirang.txt
deleted file mode 100644
index ec7455d..0000000
--- a/doc/bu/files/getconstraintdampingdirang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintDampingDirAng [RCBasic Doc]
-#header function getConstraintDampingDirAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintdampingdirlin.txt b/doc/bu/files/getconstraintdampingdirlin.txt
deleted file mode 100644
index 3be12ab..0000000
--- a/doc/bu/files/getconstraintdampingdirlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintDampingDirLin [RCBasic Doc]
-#header function getConstraintDampingDirLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintdampinglimang.txt b/doc/bu/files/getconstraintdampinglimang.txt
deleted file mode 100644
index 26e8479..0000000
--- a/doc/bu/files/getconstraintdampinglimang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintDampingLimAng [RCBasic Doc]
-#header function getConstraintDampingLimAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintdampinglimlin.txt b/doc/bu/files/getconstraintdampinglimlin.txt
deleted file mode 100644
index be91d76..0000000
--- a/doc/bu/files/getconstraintdampinglimlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintDampingLimLin [RCBasic Doc]
-#header function getConstraintDampingLimLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintdampingorthoang.txt b/doc/bu/files/getconstraintdampingorthoang.txt
deleted file mode 100644
index bfd17bb..0000000
--- a/doc/bu/files/getconstraintdampingorthoang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintDampingOrthoAng [RCBasic Doc]
-#header function getConstraintDampingOrthoAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintdampingortholin.txt b/doc/bu/files/getconstraintdampingortholin.txt
deleted file mode 100644
index 30a043d..0000000
--- a/doc/bu/files/getconstraintdampingortholin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintDampingOrthoLin [RCBasic Doc]
-#header function getConstraintDampingOrthoLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintfixedactor.txt b/doc/bu/files/getconstraintfixedactor.txt
deleted file mode 100644
index 57e4599..0000000
--- a/doc/bu/files/getconstraintfixedactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintFixedActor [RCBasic Doc]
-#header function getConstraintFixedActor( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintfixthresh.txt b/doc/bu/files/getconstraintfixthresh.txt
deleted file mode 100644
index bbd8049..0000000
--- a/doc/bu/files/getconstraintfixthresh.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintFixThresh [RCBasic Doc]
-#header function getConstraintFixThresh( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintframeoffseta.txt b/doc/bu/files/getconstraintframeoffseta.txt
deleted file mode 100644
index c6fea6a..0000000
--- a/doc/bu/files/getconstraintframeoffseta.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintFrameOffsetA [RCBasic Doc]
-#header sub getConstraintFrameOffsetA( constraint_id, ByRef x, ByRef y, ByRef z, ByRef rx, ByRef ry, ByRef rz)
-
-
diff --git a/doc/bu/files/getconstraintframeoffsetb.txt b/doc/bu/files/getconstraintframeoffsetb.txt
deleted file mode 100644
index 01130ad..0000000
--- a/doc/bu/files/getconstraintframeoffsetb.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintFrameOffsetB [RCBasic Doc]
-#header sub getConstraintFrameOffsetB( constraint_id, ByRef x, ByRef y, ByRef z, ByRef rx, ByRef ry, ByRef rz)
-
-
diff --git a/doc/bu/files/getconstraintlimit.txt b/doc/bu/files/getconstraintlimit.txt
deleted file mode 100644
index 608577e..0000000
--- a/doc/bu/files/getconstraintlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintLimit [RCBasic Doc]
-#header function getConstraintLimit( constraint_id, limit_index)
-
-
diff --git a/doc/bu/files/getconstraintlimitbiasfactor.txt b/doc/bu/files/getconstraintlimitbiasfactor.txt
deleted file mode 100644
index 8abe447..0000000
--- a/doc/bu/files/getconstraintlimitbiasfactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintLimitBiasFactor [RCBasic Doc]
-#header function getConstraintLimitBiasFactor( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintlimitsign.txt b/doc/bu/files/getconstraintlimitsign.txt
deleted file mode 100644
index d96d0fd..0000000
--- a/doc/bu/files/getconstraintlimitsign.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintLimitSign [RCBasic Doc]
-#header function getConstraintLimitSign( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintlimitsoftness.txt b/doc/bu/files/getconstraintlimitsoftness.txt
deleted file mode 100644
index 4a653d5..0000000
--- a/doc/bu/files/getconstraintlimitsoftness.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintLimitSoftness [RCBasic Doc]
-#header function getConstraintLimitSoftness( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintlindepth.txt b/doc/bu/files/getconstraintlindepth.txt
deleted file mode 100644
index 7adf880..0000000
--- a/doc/bu/files/getconstraintlindepth.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintLinDepth [RCBasic Doc]
-#header function getConstraintLinDepth( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintlinearpos.txt b/doc/bu/files/getconstraintlinearpos.txt
deleted file mode 100644
index 0af783a..0000000
--- a/doc/bu/files/getconstraintlinearpos.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintLinearPos [RCBasic Doc]
-#header function getConstraintLinearPos( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintloweranglimit.txt b/doc/bu/files/getconstraintloweranglimit.txt
deleted file mode 100644
index 394bf21..0000000
--- a/doc/bu/files/getconstraintloweranglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintLowerAngLimit [RCBasic Doc]
-#header function getConstraintLowerAngLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintlowerlinlimit.txt b/doc/bu/files/getconstraintlowerlinlimit.txt
deleted file mode 100644
index e35a996..0000000
--- a/doc/bu/files/getconstraintlowerlinlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintLowerLinLimit [RCBasic Doc]
-#header function getConstraintLowerLinLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintpivota.txt b/doc/bu/files/getconstraintpivota.txt
deleted file mode 100644
index 7f3f56f..0000000
--- a/doc/bu/files/getconstraintpivota.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintPivotA [RCBasic Doc]
-#header sub getConstraintPivotA( constraint_id, ByRef x, ByRef y, ByRef z)
-
-
diff --git a/doc/bu/files/getconstraintpivotb.txt b/doc/bu/files/getconstraintpivotb.txt
deleted file mode 100644
index 7426ede..0000000
--- a/doc/bu/files/getconstraintpivotb.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintPivotB [RCBasic Doc]
-#header sub getConstraintPivotB( constraint_id, ByRef x, ByRef y, ByRef z)
-
-
diff --git a/doc/bu/files/getconstraintrestitutiondirang.txt b/doc/bu/files/getconstraintrestitutiondirang.txt
deleted file mode 100644
index 07920a4..0000000
--- a/doc/bu/files/getconstraintrestitutiondirang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintRestitutionDirAng [RCBasic Doc]
-#header function getConstraintRestitutionDirAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintrestitutiondirlin.txt b/doc/bu/files/getconstraintrestitutiondirlin.txt
deleted file mode 100644
index c8e4226..0000000
--- a/doc/bu/files/getconstraintrestitutiondirlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintRestitutionDirLin [RCBasic Doc]
-#header function getConstraintRestitutionDirLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintrestitutionlimang.txt b/doc/bu/files/getconstraintrestitutionlimang.txt
deleted file mode 100644
index 3f3a8c5..0000000
--- a/doc/bu/files/getconstraintrestitutionlimang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintRestitutionLimAng [RCBasic Doc]
-#header function getConstraintRestitutionLimAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintrestitutionlimlin.txt b/doc/bu/files/getconstraintrestitutionlimlin.txt
deleted file mode 100644
index 33e665c..0000000
--- a/doc/bu/files/getconstraintrestitutionlimlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintRestitutionLimLin [RCBasic Doc]
-#header function getConstraintRestitutionLimLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintrestitutionorthoang.txt b/doc/bu/files/getconstraintrestitutionorthoang.txt
deleted file mode 100644
index 48e7777..0000000
--- a/doc/bu/files/getconstraintrestitutionorthoang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintRestitutionOrthoAng [RCBasic Doc]
-#header function getConstraintRestitutionOrthoAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintrestitutionortholin.txt b/doc/bu/files/getconstraintrestitutionortholin.txt
deleted file mode 100644
index 30f11aa..0000000
--- a/doc/bu/files/getconstraintrestitutionortholin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintRestitutionOrthoLin [RCBasic Doc]
-#header function getConstraintRestitutionOrthoLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsoftnessdirang.txt b/doc/bu/files/getconstraintsoftnessdirang.txt
deleted file mode 100644
index 53f473c..0000000
--- a/doc/bu/files/getconstraintsoftnessdirang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSoftnessDirAng [RCBasic Doc]
-#header function getConstraintSoftnessDirAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsoftnessdirlin.txt b/doc/bu/files/getconstraintsoftnessdirlin.txt
deleted file mode 100644
index 62f30bb..0000000
--- a/doc/bu/files/getconstraintsoftnessdirlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSoftnessDirLin [RCBasic Doc]
-#header function getConstraintSoftnessDirLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsoftnesslimang.txt b/doc/bu/files/getconstraintsoftnesslimang.txt
deleted file mode 100644
index 1640733..0000000
--- a/doc/bu/files/getconstraintsoftnesslimang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSoftnessLimAng [RCBasic Doc]
-#header function getConstraintSoftnessLimAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsoftnesslimlin.txt b/doc/bu/files/getconstraintsoftnesslimlin.txt
deleted file mode 100644
index dc2b3b6..0000000
--- a/doc/bu/files/getconstraintsoftnesslimlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSoftnessLimLin [RCBasic Doc]
-#header function getConstraintSoftnessLimLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsoftnessorthoang.txt b/doc/bu/files/getconstraintsoftnessorthoang.txt
deleted file mode 100644
index 504afb8..0000000
--- a/doc/bu/files/getconstraintsoftnessorthoang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSoftnessOrthoAng [RCBasic Doc]
-#header function getConstraintSoftnessOrthoAng( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsoftnessortholin.txt b/doc/bu/files/getconstraintsoftnessortholin.txt
deleted file mode 100644
index eceda39..0000000
--- a/doc/bu/files/getconstraintsoftnessortholin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSoftnessOrthoLin [RCBasic Doc]
-#header function getConstraintSoftnessOrthoLin( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsolveanglimit.txt b/doc/bu/files/getconstraintsolveanglimit.txt
deleted file mode 100644
index 648e66d..0000000
--- a/doc/bu/files/getconstraintsolveanglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSolveAngLimit [RCBasic Doc]
-#header function getConstraintSolveAngLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsolvelimit.txt b/doc/bu/files/getconstraintsolvelimit.txt
deleted file mode 100644
index ab40279..0000000
--- a/doc/bu/files/getconstraintsolvelimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSolveLimit [RCBasic Doc]
-#header function getConstraintSolveLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsolvelinlimit.txt b/doc/bu/files/getconstraintsolvelinlimit.txt
deleted file mode 100644
index 8770ab5..0000000
--- a/doc/bu/files/getconstraintsolvelinlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSolveLinLimit [RCBasic Doc]
-#header function getConstraintSolveLinLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsolveriterations.txt b/doc/bu/files/getconstraintsolveriterations.txt
deleted file mode 100644
index 951060c..0000000
--- a/doc/bu/files/getconstraintsolveriterations.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSolverIterations [RCBasic Doc]
-#header function getConstraintSolverIterations( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsolveswinglimit.txt b/doc/bu/files/getconstraintsolveswinglimit.txt
deleted file mode 100644
index 54941f1..0000000
--- a/doc/bu/files/getconstraintsolveswinglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSolveSwingLimit [RCBasic Doc]
-#header function getConstraintSolveSwingLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintsolvetwistlimit.txt b/doc/bu/files/getconstraintsolvetwistlimit.txt
deleted file mode 100644
index e1bda1c..0000000
--- a/doc/bu/files/getconstraintsolvetwistlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSolveTwistLimit [RCBasic Doc]
-#header function getConstraintSolveTwistLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintswingspan1.txt b/doc/bu/files/getconstraintswingspan1.txt
deleted file mode 100644
index 7d18cd2..0000000
--- a/doc/bu/files/getconstraintswingspan1.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSwingSpan1 [RCBasic Doc]
-#header function getConstraintSwingSpan1( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintswingspan2.txt b/doc/bu/files/getconstraintswingspan2.txt
deleted file mode 100644
index 92e49e5..0000000
--- a/doc/bu/files/getconstraintswingspan2.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintSwingSpan2 [RCBasic Doc]
-#header function getConstraintSwingSpan2( constraint_id)
-
-
diff --git a/doc/bu/files/getconstrainttwistangle.txt b/doc/bu/files/getconstrainttwistangle.txt
deleted file mode 100644
index 6098a36..0000000
--- a/doc/bu/files/getconstrainttwistangle.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintTwistAngle [RCBasic Doc]
-#header function getConstraintTwistAngle( constraint_id)
-
-
diff --git a/doc/bu/files/getconstrainttwistlimitsign.txt b/doc/bu/files/getconstrainttwistlimitsign.txt
deleted file mode 100644
index 139ffe8..0000000
--- a/doc/bu/files/getconstrainttwistlimitsign.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintTwistLimitSign [RCBasic Doc]
-#header function getConstraintTwistLimitSign( constraint_id)
-
-
diff --git a/doc/bu/files/getconstrainttwistspan.txt b/doc/bu/files/getconstrainttwistspan.txt
deleted file mode 100644
index b9f9a23..0000000
--- a/doc/bu/files/getconstrainttwistspan.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintTwistSpan [RCBasic Doc]
-#header function getConstraintTwistSpan( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintupperanglimit.txt b/doc/bu/files/getconstraintupperanglimit.txt
deleted file mode 100644
index 3d891f4..0000000
--- a/doc/bu/files/getconstraintupperanglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintUpperAngLimit [RCBasic Doc]
-#header function getConstraintUpperAngLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintupperlinlimit.txt b/doc/bu/files/getconstraintupperlinlimit.txt
deleted file mode 100644
index e3df5b9..0000000
--- a/doc/bu/files/getconstraintupperlinlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintUpperLinLimit [RCBasic Doc]
-#header function getConstraintUpperLinLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getconstraintuseframeoffset.txt b/doc/bu/files/getconstraintuseframeoffset.txt
deleted file mode 100644
index abae60a..0000000
--- a/doc/bu/files/getconstraintuseframeoffset.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getConstraintUseFrameOffset [RCBasic Doc]
-#header function getConstraintUseFrameOffset( constraint_id)
-
-
diff --git a/doc/bu/files/getdesktopdisplaymode.txt b/doc/bu/files/getdesktopdisplaymode.txt
deleted file mode 100644
index 65150ed..0000000
--- a/doc/bu/files/getdesktopdisplaymode.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title GetDesktopDisplayMode [RCBasic Doc]
-#header Sub GetDesktopDisplayMode(index, ByRef w, ByRef h, ByRef freq)
-
-Gets the resolution and refresh rate of a display
-
-#list
-#li index - The display index (ie. if you have 3 displays then index could be 0, 1, or 2)
-#li w, h - The width and height of the display will be stored in these variables
-#li freq - The refresh rate will be stored in this variable
-#/list
diff --git a/doc/bu/files/getglobalmouse.txt b/doc/bu/files/getglobalmouse.txt
deleted file mode 100644
index 7267e36..0000000
--- a/doc/bu/files/getglobalmouse.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetGlobalMouse [RCBasic Doc]
-#header sub GetGlobalMouse(ByRef x, ByRef y, ByRef mb1, ByRef mb2, ByRef mb3)
-
-Gets the global mouse position and button state
diff --git a/doc/bu/files/getgravity3d.txt b/doc/bu/files/getgravity3d.txt
deleted file mode 100644
index ffb2a6a..0000000
--- a/doc/bu/files/getgravity3d.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetGravity3D [RCBasic Doc]
-#header sub GetGravity3D(ByRef x, ByRef y, ByRef z)
-
-Gets the world gravity
-
-#ref SetGravity3D
diff --git a/doc/bu/files/getgyro.txt b/doc/bu/files/getgyro.txt
deleted file mode 100644
index b622e77..0000000
--- a/doc/bu/files/getgyro.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetGyro [RCBasic Doc]
-#header sub GetGyro(gyro_num, ByRef x, ByRef y, ByRef z)
-
-Gets the values of a Gyro sensor
diff --git a/doc/bu/files/gethingeangle.txt b/doc/bu/files/gethingeangle.txt
deleted file mode 100644
index 341c02c..0000000
--- a/doc/bu/files/gethingeangle.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getHingeAngle [RCBasic Doc]
-#header function getHingeAngle( constraint_id)
-
-Returns the angle of a hinge constraint
diff --git a/doc/bu/files/gethingeangleex.txt b/doc/bu/files/gethingeangleex.txt
deleted file mode 100644
index c89928a..0000000
--- a/doc/bu/files/gethingeangleex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getHingeAngleEx [RCBasic Doc]
-#header function getHingeAngleEx( constraint_id, t_matrixA, t_matrixB)
-
-Returns the transforms of the 2 actors in a hinge constraint
diff --git a/doc/bu/files/gethingesolvelimit.txt b/doc/bu/files/gethingesolvelimit.txt
deleted file mode 100644
index 39368ae..0000000
--- a/doc/bu/files/gethingesolvelimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getHingeSolveLimit [RCBasic Doc]
-#header function getHingeSolveLimit( constraint_id)
-
-
diff --git a/doc/bu/files/getimagealpha.txt b/doc/bu/files/getimagealpha.txt
deleted file mode 100644
index 7b25488..0000000
--- a/doc/bu/files/getimagealpha.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetImageAlpha [RCBasic Doc]
-#header function GetImageAlpha( img_id )
-
-Returns the alpha blend value of an image
diff --git a/doc/bu/files/getimagecolormod.txt b/doc/bu/files/getimagecolormod.txt
deleted file mode 100644
index c6b6c95..0000000
--- a/doc/bu/files/getimagecolormod.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetImageColorMod [RCBasic Doc]
-#header function GetImageColorMod(img)
-
-Returns the color modulation of an image
diff --git a/doc/bu/files/getimagesize.txt b/doc/bu/files/getimagesize.txt
deleted file mode 100644
index b58abc4..0000000
--- a/doc/bu/files/getimagesize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetImageSize [RCBasic Doc]
-#header sub GetImageSize(slot, byref w, byref h)
-
-Gets the Size of an image
diff --git a/doc/bu/files/getjoytrackball.txt b/doc/bu/files/getjoytrackball.txt
deleted file mode 100644
index 943a43e..0000000
--- a/doc/bu/files/getjoytrackball.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetJoyTrackBall [RCBasic Doc]
-#header sub GetJoyTrackBall(joy_num, ball, byref dx, byref dy)
-
-Gets the axis values of a track ball
diff --git a/doc/bu/files/getlightambientcolor.txt b/doc/bu/files/getlightambientcolor.txt
deleted file mode 100644
index ea6f936..0000000
--- a/doc/bu/files/getlightambientcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetLightAmbientColor [RCBasic Doc]
-#header function GetLightAmbientColor( actor )
-
-Returns the ambient color of a light
diff --git a/doc/bu/files/getlightattenuation.txt b/doc/bu/files/getlightattenuation.txt
deleted file mode 100644
index b671d9e..0000000
--- a/doc/bu/files/getlightattenuation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetLightAttenuation [RCBasic Doc]
-#header sub GetLightAttenuation( actor, ByRef constant, ByRef linear, ByRef quadratic)
-
-Gets the strength of the light
diff --git a/doc/bu/files/getlightdiffusecolor.txt b/doc/bu/files/getlightdiffusecolor.txt
deleted file mode 100644
index 643d85d..0000000
--- a/doc/bu/files/getlightdiffusecolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetLightDiffuseColor [RCBasic Doc]
-#header function GetLightDiffuseColor( actor )
-
-Returns the diffuse color of the light
diff --git a/doc/bu/files/getlightfalloff.txt b/doc/bu/files/getlightfalloff.txt
deleted file mode 100644
index 0a2f291..0000000
--- a/doc/bu/files/getlightfalloff.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetLightFalloff [RCBasic Doc]
-#header function GetLightFalloff( actor )
-
-Returns the strength decrease between the inner and outer cone of a light
diff --git a/doc/bu/files/getlightinnercone.txt b/doc/bu/files/getlightinnercone.txt
deleted file mode 100644
index cbf606b..0000000
--- a/doc/bu/files/getlightinnercone.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetLightInnerCone [RCBasic Doc]
-#header function GetLightInnerCone( actor )
-
-Returns the inner cone of a spot light
diff --git a/doc/bu/files/getlightoutercone.txt b/doc/bu/files/getlightoutercone.txt
deleted file mode 100644
index fd6355b..0000000
--- a/doc/bu/files/getlightoutercone.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetLightOuterCone [RCBasic Doc]
-#header function GetLightOuterCone( actor )
-
-Returns the outer cone of a spot light
diff --git a/doc/bu/files/getlightradius.txt b/doc/bu/files/getlightradius.txt
deleted file mode 100644
index 97c1d9d..0000000
--- a/doc/bu/files/getlightradius.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getLightRadius [RCBasic Doc]
-#header function getLightRadius( actor )
-
-Returns the radius of the light
diff --git a/doc/bu/files/getlightspecularcolor.txt b/doc/bu/files/getlightspecularcolor.txt
deleted file mode 100644
index 85fcc57..0000000
--- a/doc/bu/files/getlightspecularcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetLightSpecularColor [RCBasic Doc]
-#header function GetLightSpecularColor( actor )
-
-Returns the specular color of a light
diff --git a/doc/bu/files/getlighttype.txt b/doc/bu/files/getlighttype.txt
deleted file mode 100644
index 42a4e51..0000000
--- a/doc/bu/files/getlighttype.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-#title GetLightType [RCBasic Doc]
-#header function GetLightType( actor )
-
-Returns the type of light
-
-Returns -1 if it does not have a type (ie. its not a light)
-
-Possible Light Types
-#list ul
-#li LIGHT_TYPE_POINT
-#li LIGHT_TYPE_POINT
-#li LIGHT_TYPE_POINT
-#/light
-
-#ref SetLightType
diff --git a/doc/bu/files/getlimitrelaxationfactor.txt b/doc/bu/files/getlimitrelaxationfactor.txt
deleted file mode 100644
index 31c6ef9..0000000
--- a/doc/bu/files/getlimitrelaxationfactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getLimitRelaxationFactor [RCBasic Doc]
-#header function getLimitRelaxationFactor( constraint_id)
-
-
diff --git a/doc/bu/files/getlineintersection.txt b/doc/bu/files/getlineintersection.txt
deleted file mode 100644
index 2de427b..0000000
--- a/doc/bu/files/getlineintersection.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetLineIntersection [RCBasic Doc]
-#header Function GetLineIntersection(p0_x, p0_y, p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, ByRef i_x, ByRef i_y)
-
-Sets (i_x, i_y) to the intersection of lines p0-p1 and p2-p3
-
-Returns true if there is a collision and false if not
diff --git a/doc/bu/files/getlineplaneintersection.txt b/doc/bu/files/getlineplaneintersection.txt
deleted file mode 100644
index d929740..0000000
--- a/doc/bu/files/getlineplaneintersection.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-#title GetLinePlaneIntersection [RCBasic Doc]
-#header function GetLinePlaneIntersection(ByRef line_point, ByRef line_direction, ByRef plane_point_1, ByRef plane_point_2, ByRef plane_point_3, ByRef intersection)
-
-This function calculates the intersection between a line and a plane in 3D space and stores the result in intersection
-
-Parameters:
-#list ul
-#li line_point - An array with an (x,y,z) point representing the start of a line
-#li line_direction - An array with an (x,y,z) point representing another point on the line in the direction its moving
-#li plane_point_1 - An array with an (x,y,z) point representing a point on a plane in 3D space
-#li plane_point_2 - An array with an (x,y,z) point representing a point on a plane in 3D space
-#li plane_point_3 - An array with an (x,y,z) point representing a point on a plane in 3D space
-#/list
-
-Returns true if intersection point is on the plane
diff --git a/doc/bu/files/getmaterialambientcolor.txt b/doc/bu/files/getmaterialambientcolor.txt
deleted file mode 100644
index 2de78a6..0000000
--- a/doc/bu/files/getmaterialambientcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetMaterialAmbientColor [RCBasic Doc]
-#header function GetMaterialAmbientColor( material_id)
-
-Returns the ambient color of a material
diff --git a/doc/bu/files/getmaterialantialiasing.txt b/doc/bu/files/getmaterialantialiasing.txt
deleted file mode 100644
index b847cd7..0000000
--- a/doc/bu/files/getmaterialantialiasing.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-#title GetMaterialAntiAliasing [RCBasic Doc]
-#header function GetMaterialAntiAliasing( material_id)
-
-Returns the anti-aliasing mode for the material
-
-Possible modes returned
-#list
-#li AA_MODE_OFF=0,
-#li AA_MODE_SIMPLE=1,
-#li AA_MODE_QUALITY=3,
-#li AA_MODE_LINE_SMOOTH=4,
-#li AA_MODE_POINT_SMOOTH=8,
-#li AA_MODE_FULL_BASIC=15,
-#li AA_MODE_ALPHA_TO_COVERAGE=16
-#/list
-
-#ref SetMaterialAntiAliasing
diff --git a/doc/bu/files/getmaterialbackfaceculling.txt b/doc/bu/files/getmaterialbackfaceculling.txt
deleted file mode 100644
index ac49cc4..0000000
--- a/doc/bu/files/getmaterialbackfaceculling.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getMaterialBackfaceCulling [RCBasic Doc]
-#header function getMaterialBackfaceCulling( material_id)
-
-Returns true if backface culling is enabled for a material
-
-#ref SetMaterialBackfaceCulling
diff --git a/doc/bu/files/getmaterialblendfactor.txt b/doc/bu/files/getmaterialblendfactor.txt
deleted file mode 100644
index 11e4ee6..0000000
--- a/doc/bu/files/getmaterialblendfactor.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title getMaterialBlendFactor [RCBasic Doc]
-#header function getMaterialBlendFactor( material_id)
-
-Returns a materials blend factor
-
-
-
diff --git a/doc/bu/files/getmaterialblendmode.txt b/doc/bu/files/getmaterialblendmode.txt
deleted file mode 100644
index 88bf52b..0000000
--- a/doc/bu/files/getmaterialblendmode.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-#title getMaterialBlendMode [RCBasic Doc]
-#header function getMaterialBlendMode( material_id)
-
-Returns a materials blend mode
-
-Possible Blend Modes
-#list ul
-#li BLEND_MODE_NONE
-#li BLEND_MODE_ADD
-#li BLEND_MODE_SUBTRACT
-#li BLEND_MODE_REVSUBTRACT
-#li BLEND_MODE_MIN
-#li BLEND_MODE_MAX
-#li BLEND_MODE_MIN_FACTOR
-#li BLEND_MODE_MAX_FACTOR
-#li BLEND_MODE_MIN_ALPHA
-#li BLEND_MODE_MAX_ALPHA
-#/list
-
-#ref SetMaterialBlendMode
diff --git a/doc/bu/files/getmaterialcolormask.txt b/doc/bu/files/getmaterialcolormask.txt
deleted file mode 100644
index b0eddc2..0000000
--- a/doc/bu/files/getmaterialcolormask.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetMaterialColorMask [RCBasic Doc]
-#header function GetMaterialColorMask( material_id)
-
-Returns the color mask for a material
diff --git a/doc/bu/files/getmaterialcolormode.txt b/doc/bu/files/getmaterialcolormode.txt
deleted file mode 100644
index 0f51fe2..0000000
--- a/doc/bu/files/getmaterialcolormode.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-#title getMaterialColorMode [RCBasic Doc]
-#header function getMaterialColorMode( material_id)
-
-Returns the color mode of a material
-
-Possible modes
-#list ul
-#li COLOR_MODE_NONE
-#li COLOR_MODE_DIFFUSE
-#li COLOR_MODE_AMBIENT
-#li COLOR_MODE_EMISSIVE
-#li COLOR_MODE_SPECULAR
-#li COLOR_MODE_DIFFUSE_AND_AMBIENT
-#/list
-
-#ref SetMaterialColorMode
diff --git a/doc/bu/files/getmaterialdiffusecolor.txt b/doc/bu/files/getmaterialdiffusecolor.txt
deleted file mode 100644
index 7fb645d..0000000
--- a/doc/bu/files/getmaterialdiffusecolor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getMaterialDiffuseColor [RCBasic Doc]
-#header function getMaterialDiffuseColor( material_id)
-
-Returns a material's diffuse color
-
-#ref SetMaterialDiffuseColor
diff --git a/doc/bu/files/getmaterialemissivecolor.txt b/doc/bu/files/getmaterialemissivecolor.txt
deleted file mode 100644
index 38cda17..0000000
--- a/doc/bu/files/getmaterialemissivecolor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getMaterialEmissiveColor [RCBasic Doc]
-#header function getMaterialEmissiveColor( material_id)
-
-Returns a material's emissive color
-
-#ref SetMaterialEmissiveColor
diff --git a/doc/bu/files/getmaterialflag.txt b/doc/bu/files/getmaterialflag.txt
deleted file mode 100644
index 9760883..0000000
--- a/doc/bu/files/getmaterialflag.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-#title getMaterialFlag [RCBasic Doc]
-#header function getMaterialFlag( material_id, material_flag)
-
-Returns the value of the specified material flag
-
-Possible values for flag:
-#list
-#li MATERIAL_FLAG_WIREFRAME
-#li MATERIAL_FLAG_POINTCLOUD
-#li MATERIAL_FLAG_GOURAUD_SHADING
-#li MATERIAL_FLAG_LIGHTING
-#li MATERIAL_FLAG_ZBUFFER
-#li MATERIAL_FLAG_ZWRITE_ENABLE
-#li MATERIAL_FLAG_BACK_FACE_CULLING
-#li MATERIAL_FLAG_FRONT_FACE_CULLING
-#li MATERIAL_FLAG_BILINEAR_FILTER
-#li MATERIAL_FLAG_TRILINEAR_FILTER
-#li MATERIAL_FLAG_ANISOTROPIC_FILTER
-#li MATERIAL_FLAG_FOG_ENABLE
-#li MATERIAL_FLAG_NORMALIZE_NORMALS
-#li MATERIAL_FLAG_TEXTURE_WRAP
-#li MATERIAL_FLAG_ANTI_ALIASING
-#li MATERIAL_FLAG_COLOR_MASK
-#li MATERIAL_FLAG_COLOR_MATERIAL
-#li MATERIAL_FLAG_USE_MIP_MAPS
-#li MATERIAL_FLAG_BLEND_OPERATION
-#li MATERIAL_FLAG_POLYGON_OFFSET
-#/list
-
-#ref GetActorMaterialFlag
diff --git a/doc/bu/files/getmaterialfog.txt b/doc/bu/files/getmaterialfog.txt
deleted file mode 100644
index 0e7de18..0000000
--- a/doc/bu/files/getmaterialfog.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getMaterialFog [RCBasic Doc]
-#header function getMaterialFog( material_id)
-
-Returns true if fog is enabled for a material
-
-#ref SetMaterialFog
diff --git a/doc/bu/files/getmaterialfrontfaceculling.txt b/doc/bu/files/getmaterialfrontfaceculling.txt
deleted file mode 100644
index 5efcf81..0000000
--- a/doc/bu/files/getmaterialfrontfaceculling.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getMaterialFrontfaceCulling [RCBasic Doc]
-#header function getMaterialFrontfaceCulling( material_id)
-
-Returns true if front face culling is enabled for a material
-
-#ref SetMaterialFrontfaceCulling
diff --git a/doc/bu/files/getmaterialshininess.txt b/doc/bu/files/getmaterialshininess.txt
deleted file mode 100644
index 976155a..0000000
--- a/doc/bu/files/getmaterialshininess.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getMaterialShininess [RCBasic Doc]
-#header function getMaterialShininess( material_id)
-
-Returns the shininess value for a material
-
-#ref SetMaterialShininess
diff --git a/doc/bu/files/getmaterialspecularcolor.txt b/doc/bu/files/getmaterialspecularcolor.txt
deleted file mode 100644
index 4b85db8..0000000
--- a/doc/bu/files/getmaterialspecularcolor.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getMaterialSpecularColor [RCBasic Doc]
-#header function getMaterialSpecularColor( material_id)
-
-Returns the specular color for a material
-
-#ref SetMaterialSpecularColor
diff --git a/doc/bu/files/getmaterialthickness.txt b/doc/bu/files/getmaterialthickness.txt
deleted file mode 100644
index 1725ccd..0000000
--- a/doc/bu/files/getmaterialthickness.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title getMaterialThickness [RCBasic Doc]
-#header function getMaterialThickness( material_id)
-
-Returns a material's thickness value
-
-Thickness value is mainly for primitives such as lines
-
-#ref SetMaterialThickness
diff --git a/doc/bu/files/getmaterialtype.txt b/doc/bu/files/getmaterialtype.txt
deleted file mode 100644
index 53ee577..0000000
--- a/doc/bu/files/getmaterialtype.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-#title getMaterialType [RCBasic Doc]
-#header function getMaterialType( material_id)
-
-Returns a material's type
-
-Possible types
-#list ul
-#li MATERIAL_TYPE_SOLID
-#li MATERIAL_TYPE_SOLID_2_LAYER
-#li MATERIAL_TYPE_LIGHTMAP
-#li MATERIAL_TYPE_LIGHTMAP_ADD
-#li MATERIAL_TYPE_LIGHTMAP_M2
-#li MATERIAL_TYPE_LIGHTMAP_M4
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING_M2
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING_M4
-#li MATERIAL_TYPE_DETAIL_MAP
-#li MATERIAL_TYPE_SPHERE_MAP
-#li MATERIAL_TYPE_REFLECTION_2_LAYER
-#li MATERIAL_TYPE_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL
-#li MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL_REF
-#li MATERIAL_TYPE_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_TRANSPARENT_REFLECTION_2_LAYER
-#li MATERIAL_TYPE_NORMAL_MAP_SOLID
-#li MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_PARALLAX_MAP_SOLID
-#li MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_ONETEXTURE_BLEND
-#li MATERIAL_TYPE_FORCE_32BIT
-#/list
-
-#ref SetMaterialType GetActorMaterialType SetActorMaterialType
diff --git a/doc/bu/files/getmatrixrotation.txt b/doc/bu/files/getmatrixrotation.txt
deleted file mode 100644
index d8ad74a..0000000
--- a/doc/bu/files/getmatrixrotation.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title GetMatrixRotation [RCBasic Doc]
-#header sub GetMatrixRotation( mA, ByRef x, ByRef y, ByRef z)
-
-Gets the rotation vector of a matrix
-
-#ref SetMatrixRotation
-
diff --git a/doc/bu/files/getmatrixscale.txt b/doc/bu/files/getmatrixscale.txt
deleted file mode 100644
index f0125cc..0000000
--- a/doc/bu/files/getmatrixscale.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetMatrixScale [RCBasic Doc]
-#header sub GetMatrixScale( mA, ByRef x, ByRef y, ByRef z)
-
-Gets the scale vector of a matrix
-
-#ref SetMatrixScale
diff --git a/doc/bu/files/getmatrixsize.txt b/doc/bu/files/getmatrixsize.txt
deleted file mode 100644
index 2f4ad2e..0000000
--- a/doc/bu/files/getmatrixsize.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetMatrixSize [RCBasic Doc]
-#header sub GetMatrixSize(mA, ByRef r, ByRef c)
-
-Gets the number of rows and columns in a matrix
-
-#ref DimMatrix
diff --git a/doc/bu/files/getmatrixtranslation.txt b/doc/bu/files/getmatrixtranslation.txt
deleted file mode 100644
index 66dbc20..0000000
--- a/doc/bu/files/getmatrixtranslation.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetMatrixTranslation [RCBasic Doc]
-#header sub GetMatrixTranslation( mA, ByRef x, ByRef y, ByRef z)
-
-Get the position vector of a matrix
-
-#ref SetMatrixTranslation
diff --git a/doc/bu/files/getmouse.txt b/doc/bu/files/getmouse.txt
deleted file mode 100644
index c0361f5..0000000
--- a/doc/bu/files/getmouse.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetMouse [RCBasic Doc]
-#header sub GetMouse(byref x, byref y, byref mb1, byref mb2, byref mb3)
-
-Gets the mouse position and button state local to the graphics window
-
-#ref GetGlobalMouse MouseX MouseY MouseButton
diff --git a/doc/bu/files/getmousewheel.txt b/doc/bu/files/getmousewheel.txt
deleted file mode 100644
index 5845da7..0000000
--- a/doc/bu/files/getmousewheel.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetMouseWheel [RCBasic Doc]
-#header sub GetMouseWheel(byref x_axis, byref y_axis)
-
-Gets the axis positions of the mouse wheel
-
-#ref GetMouse GetGlobalMouse
diff --git a/doc/bu/files/getmultitouch.txt b/doc/bu/files/getmultitouch.txt
deleted file mode 100644
index 5347b6a..0000000
--- a/doc/bu/files/getmultitouch.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetMultiTouch [RCBasic Doc]
-#header sub GetMultiTouch(byref status, byref x, byref y, byref fingers, byref dist, byref theta)
-
-Gets the status, position, number of fingers, distance between the fingers and rotation of a multi-finger gesture
diff --git a/doc/bu/files/getmusicposition.txt b/doc/bu/files/getmusicposition.txt
deleted file mode 100644
index 38c7b7b..0000000
--- a/doc/bu/files/getmusicposition.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title GetMusicPosition [RCBasic Doc]
-#header function GetMusicPosition()
-
-Returns the position of the music track
-
-#ref SetMusicPosition
diff --git a/doc/bu/files/getmusicvolume.txt b/doc/bu/files/getmusicvolume.txt
deleted file mode 100644
index ec82d6e..0000000
--- a/doc/bu/files/getmusicvolume.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetMusicVolume [RCBasic Doc]
-#header function GetMusicVolume()
-
-Returns the music track's volume
diff --git a/doc/bu/files/getparticlebox.txt b/doc/bu/files/getparticlebox.txt
deleted file mode 100644
index 35214ce..0000000
--- a/doc/bu/files/getparticlebox.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleBox [RCBasic Doc]
-#header sub getParticleBox( actor, ByRef min_x, ByRef min_y, ByRef min_z, ByRef max_x, ByRef max_y, ByRef max_z)
-
-
diff --git a/doc/bu/files/getparticlecenter.txt b/doc/bu/files/getparticlecenter.txt
deleted file mode 100644
index 760052f..0000000
--- a/doc/bu/files/getparticlecenter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleCenter [RCBasic Doc]
-#header sub getParticleCenter( actor, ByRef x, ByRef y, ByRef z)
-
-
diff --git a/doc/bu/files/getparticledirection.txt b/doc/bu/files/getparticledirection.txt
deleted file mode 100644
index 0d6bc11..0000000
--- a/doc/bu/files/getparticledirection.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleDirection [RCBasic Doc]
-#header sub getParticleDirection( actor, ByRef x, ByRef y, ByRef z)
-
-
diff --git a/doc/bu/files/getparticlelength.txt b/doc/bu/files/getparticlelength.txt
deleted file mode 100644
index da50454..0000000
--- a/doc/bu/files/getparticlelength.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleLength [RCBasic Doc]
-#header function getParticleLength( actor)
-
-
diff --git a/doc/bu/files/getparticlemaxangle.txt b/doc/bu/files/getparticlemaxangle.txt
deleted file mode 100644
index 6ef2483..0000000
--- a/doc/bu/files/getparticlemaxangle.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMaxAngle [RCBasic Doc]
-#header function getParticleMaxAngle( actor)
-
-
diff --git a/doc/bu/files/getparticlemaxlife.txt b/doc/bu/files/getparticlemaxlife.txt
deleted file mode 100644
index 9d8e33a..0000000
--- a/doc/bu/files/getparticlemaxlife.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMaxLife [RCBasic Doc]
-#header function getParticleMaxLife( actor)
-
-
diff --git a/doc/bu/files/getparticlemaxparticlespersecond.txt b/doc/bu/files/getparticlemaxparticlespersecond.txt
deleted file mode 100644
index e28dc7b..0000000
--- a/doc/bu/files/getparticlemaxparticlespersecond.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMaxParticlesPerSecond [RCBasic Doc]
-#header function getParticleMaxParticlesPerSecond( actor)
-
-
diff --git a/doc/bu/files/getparticlemaxstartcolor.txt b/doc/bu/files/getparticlemaxstartcolor.txt
deleted file mode 100644
index 7a98047..0000000
--- a/doc/bu/files/getparticlemaxstartcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMaxStartColor [RCBasic Doc]
-#header function getParticleMaxStartColor( actor)
-
-
diff --git a/doc/bu/files/getparticlemaxstartsize.txt b/doc/bu/files/getparticlemaxstartsize.txt
deleted file mode 100644
index 7ec819f..0000000
--- a/doc/bu/files/getparticlemaxstartsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMaxStartSize [RCBasic Doc]
-#header sub getParticleMaxStartSize( actor, ByRef w, ByRef h)
-
-
diff --git a/doc/bu/files/getparticleminlife.txt b/doc/bu/files/getparticleminlife.txt
deleted file mode 100644
index 2e218bc..0000000
--- a/doc/bu/files/getparticleminlife.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMinLife [RCBasic Doc]
-#header function getParticleMinLife( actor)
-
-
diff --git a/doc/bu/files/getparticleminparticlespersecond.txt b/doc/bu/files/getparticleminparticlespersecond.txt
deleted file mode 100644
index da946d5..0000000
--- a/doc/bu/files/getparticleminparticlespersecond.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMinParticlesPerSecond [RCBasic Doc]
-#header function getParticleMinParticlesPerSecond( actor)
-
-
diff --git a/doc/bu/files/getparticleminstartcolor.txt b/doc/bu/files/getparticleminstartcolor.txt
deleted file mode 100644
index d6d58f9..0000000
--- a/doc/bu/files/getparticleminstartcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMinStartColor [RCBasic Doc]
-#header function getParticleMinStartColor( actor)
-
-
diff --git a/doc/bu/files/getparticleminstartsize.txt b/doc/bu/files/getparticleminstartsize.txt
deleted file mode 100644
index e04b978..0000000
--- a/doc/bu/files/getparticleminstartsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleMinStartSize [RCBasic Doc]
-#header sub getParticleMinStartSize( actor, ByRef w, ByRef h)
-
-
diff --git a/doc/bu/files/getparticlenormal.txt b/doc/bu/files/getparticlenormal.txt
deleted file mode 100644
index 67a106b..0000000
--- a/doc/bu/files/getparticlenormal.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleNormal [RCBasic Doc]
-#header sub getParticleNormal( actor, ByRef x, ByRef y, ByRef z)
-
-
diff --git a/doc/bu/files/getparticlenormaldirectionmod.txt b/doc/bu/files/getparticlenormaldirectionmod.txt
deleted file mode 100644
index 994e71b..0000000
--- a/doc/bu/files/getparticlenormaldirectionmod.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleNormalDirectionMod [RCBasic Doc]
-#header function getParticleNormalDirectionMod( actor)
-
-
diff --git a/doc/bu/files/getparticleradius.txt b/doc/bu/files/getparticleradius.txt
deleted file mode 100644
index fa21818..0000000
--- a/doc/bu/files/getparticleradius.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleRadius [RCBasic Doc]
-#header function getParticleRadius( actor)
-
-
diff --git a/doc/bu/files/getparticleringthickness.txt b/doc/bu/files/getparticleringthickness.txt
deleted file mode 100644
index 7741e4e..0000000
--- a/doc/bu/files/getparticleringthickness.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getParticleRingThickness [RCBasic Doc]
-#header function getParticleRingThickness( actor)
-
-
diff --git a/doc/bu/files/getpixel.txt b/doc/bu/files/getpixel.txt
deleted file mode 100644
index 2d7eb2c..0000000
--- a/doc/bu/files/getpixel.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetPixel [RCBasic Doc]
-#header function GetPixel(x,y)
-
-
diff --git a/doc/bu/files/getpowerinfo.txt b/doc/bu/files/getpowerinfo.txt
deleted file mode 100644
index 54e7ccc..0000000
--- a/doc/bu/files/getpowerinfo.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetPowerInfo [RCBasic Doc]
-#header Sub GetPowerInfo(ByRef status, ByRef secs, ByRef pct)
-
-
diff --git a/doc/bu/files/getsoundvolume.txt b/doc/bu/files/getsoundvolume.txt
deleted file mode 100644
index b847ae1..0000000
--- a/doc/bu/files/getsoundvolume.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetSoundVolume [RCBasic Doc]
-#header function GetSoundVolume(slot)
-
-
diff --git a/doc/bu/files/getterraincenter.txt b/doc/bu/files/getterraincenter.txt
deleted file mode 100644
index 40d1607..0000000
--- a/doc/bu/files/getterraincenter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTerrainCenter [RCBasic Doc]
-#header sub GetTerrainCenter( actor, ByRef x, ByRef y, ByRef z )
-
-
diff --git a/doc/bu/files/getterrainheight.txt b/doc/bu/files/getterrainheight.txt
deleted file mode 100644
index 682b7a0..0000000
--- a/doc/bu/files/getterrainheight.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTerrainHeight [RCBasic Doc]
-#header function GetTerrainHeight( actor, patchX, patchZ )
-
-
diff --git a/doc/bu/files/getterrainpatchaabb.txt b/doc/bu/files/getterrainpatchaabb.txt
deleted file mode 100644
index fd00cb6..0000000
--- a/doc/bu/files/getterrainpatchaabb.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTerrainPatchAABB [RCBasic Doc]
-#header sub GetTerrainPatchAABB( actor, patchX, patchZ, ByRef minX, ByRef minY, ByRef minZ, ByRef maxX, ByRef maxY, ByRef maxZ )
-
-
diff --git a/doc/bu/files/getterrainpatchlod.txt b/doc/bu/files/getterrainpatchlod.txt
deleted file mode 100644
index a48d218..0000000
--- a/doc/bu/files/getterrainpatchlod.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTerrainPatchLOD [RCBasic Doc]
-#header function GetTerrainPatchLOD( actor, patchX, patchZ )
-
-
diff --git a/doc/bu/files/gettextheight.txt b/doc/bu/files/gettextheight.txt
deleted file mode 100644
index d3e5d73..0000000
--- a/doc/bu/files/gettextheight.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTextHeight [RCBasic Doc]
-#header function GetTextHeight(txt$)
-
-
diff --git a/doc/bu/files/gettextsize.txt b/doc/bu/files/gettextsize.txt
deleted file mode 100644
index 06e0a8e..0000000
--- a/doc/bu/files/gettextsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTextSize [RCBasic Doc]
-#header sub GetTextSize(txt$, byref w, byref h)
-
-
diff --git a/doc/bu/files/gettextwidth.txt b/doc/bu/files/gettextwidth.txt
deleted file mode 100644
index 3091a72..0000000
--- a/doc/bu/files/gettextwidth.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTextWidth [RCBasic Doc]
-#header function GetTextWidth(txt$)
-
-
diff --git a/doc/bu/files/gettouch.txt b/doc/bu/files/gettouch.txt
deleted file mode 100644
index 5f83a70..0000000
--- a/doc/bu/files/gettouch.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTouch [RCBasic Doc]
-#header sub GetTouch(byref status, byref x, byref y, byref dx, byref dy)
-
-
diff --git a/doc/bu/files/gettouchfinger.txt b/doc/bu/files/gettouchfinger.txt
deleted file mode 100644
index e7f9d7a..0000000
--- a/doc/bu/files/gettouchfinger.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetTouchFinger [RCBasic Doc]
-#header sub GetTouchFinger(finger, byref x, byref y, byref pressure)
-
-
diff --git a/doc/bu/files/getvideodrawrect.txt b/doc/bu/files/getvideodrawrect.txt
deleted file mode 100644
index 5d99c12..0000000
--- a/doc/bu/files/getvideodrawrect.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetVideoDrawRect [RCBasic Doc]
-#header sub GetVideoDrawRect(byref x, byref y, byref w, byref h)
-
-
diff --git a/doc/bu/files/getvideoposition.txt b/doc/bu/files/getvideoposition.txt
deleted file mode 100644
index 50284e3..0000000
--- a/doc/bu/files/getvideoposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetVideoPosition [RCBasic Doc]
-#header function GetVideoPosition()
-
-
diff --git a/doc/bu/files/getvideosize.txt b/doc/bu/files/getvideosize.txt
deleted file mode 100644
index 1b737b3..0000000
--- a/doc/bu/files/getvideosize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetVideoSize [RCBasic Doc]
-#header sub GetVideoSize(byref w, byref h)
-
-
diff --git a/doc/bu/files/getvideostats.txt b/doc/bu/files/getvideostats.txt
deleted file mode 100644
index 4087b96..0000000
--- a/doc/bu/files/getvideostats.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetVideoStats [RCBasic Doc]
-#header sub GetVideoStats(vFile$, byref vLen, byref vfps, byref frame_w, byref frame_h)
-
-
diff --git a/doc/bu/files/getvideovolume.txt b/doc/bu/files/getvideovolume.txt
deleted file mode 100644
index 3ae5dce..0000000
--- a/doc/bu/files/getvideovolume.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetVideoVolume [RCBasic Doc]
-#header function GetVideoVolume( )
-
-
diff --git a/doc/bu/files/getwatercolor.txt b/doc/bu/files/getwatercolor.txt
deleted file mode 100644
index d228770..0000000
--- a/doc/bu/files/getwatercolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getWaterColor [RCBasic Doc]
-#header function getWaterColor( actor)
-
-
diff --git a/doc/bu/files/getwatercolorblendfactor.txt b/doc/bu/files/getwatercolorblendfactor.txt
deleted file mode 100644
index 95cf8bd..0000000
--- a/doc/bu/files/getwatercolorblendfactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getWaterColorBlendFactor [RCBasic Doc]
-#header function getWaterColorBlendFactor( actor)
-
-
diff --git a/doc/bu/files/getwaterwaveheight.txt b/doc/bu/files/getwaterwaveheight.txt
deleted file mode 100644
index cfa0909..0000000
--- a/doc/bu/files/getwaterwaveheight.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getWaterWaveHeight [RCBasic Doc]
-#header function getWaterWaveHeight( actor)
-
-
diff --git a/doc/bu/files/getwaterwinddirection.txt b/doc/bu/files/getwaterwinddirection.txt
deleted file mode 100644
index e2f6112..0000000
--- a/doc/bu/files/getwaterwinddirection.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getWaterWindDirection [RCBasic Doc]
-#header sub getWaterWindDirection( actor, ByRef x, ByRef z)
-
-
diff --git a/doc/bu/files/getwaterwindforce.txt b/doc/bu/files/getwaterwindforce.txt
deleted file mode 100644
index 4216525..0000000
--- a/doc/bu/files/getwaterwindforce.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getWaterWindForce [RCBasic Doc]
-#header function getWaterWindForce( actor)
-
-
diff --git a/doc/bu/files/getwindowmaxsize.txt b/doc/bu/files/getwindowmaxsize.txt
deleted file mode 100644
index 1481133..0000000
--- a/doc/bu/files/getwindowmaxsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetWindowMaxSize [RCBasic Doc]
-#header sub GetWindowMaxSize( byref w, byref h)
-
-
diff --git a/doc/bu/files/getwindowminsize.txt b/doc/bu/files/getwindowminsize.txt
deleted file mode 100644
index 80dfeec..0000000
--- a/doc/bu/files/getwindowminsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetWindowMinSize [RCBasic Doc]
-#header sub GetWindowMinSize( byref w, byref h)
-
-
diff --git a/doc/bu/files/getwindowmode.txt b/doc/bu/files/getwindowmode.txt
deleted file mode 100644
index 5c9596c..0000000
--- a/doc/bu/files/getwindowmode.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getWindowMode [RCBasic Doc]
-#header function getWindowMode( )
-
-
diff --git a/doc/bu/files/getwindowposition.txt b/doc/bu/files/getwindowposition.txt
deleted file mode 100644
index 2c6c473..0000000
--- a/doc/bu/files/getwindowposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetWindowPosition [RCBasic Doc]
-#header sub GetWindowPosition( byref x, byref y )
-
-
diff --git a/doc/bu/files/getwindowsize.txt b/doc/bu/files/getwindowsize.txt
deleted file mode 100644
index 9a85901..0000000
--- a/doc/bu/files/getwindowsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GetWindowSize [RCBasic Doc]
-#header sub GetWindowSize( byref w, byref h )
-
-
diff --git a/doc/bu/files/globalmousex.txt b/doc/bu/files/globalmousex.txt
deleted file mode 100644
index 6b384f8..0000000
--- a/doc/bu/files/globalmousex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GlobalMouseX [RCBasic Doc]
-#header function GlobalMouseX()
-
-
diff --git a/doc/bu/files/globalmousey.txt b/doc/bu/files/globalmousey.txt
deleted file mode 100644
index 64ea0b3..0000000
--- a/doc/bu/files/globalmousey.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GlobalMouseY [RCBasic Doc]
-#header function GlobalMouseY()
-
-
diff --git a/doc/bu/files/grabinput.txt b/doc/bu/files/grabinput.txt
deleted file mode 100644
index a149e9f..0000000
--- a/doc/bu/files/grabinput.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GrabInput [RCBasic Doc]
-#header sub GrabInput(flag)
-
-
diff --git a/doc/bu/files/gyroname.txt b/doc/bu/files/gyroname.txt
deleted file mode 100644
index 0308818..0000000
--- a/doc/bu/files/gyroname.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title GyroName$ [RCBasic Doc]
-#header function GyroName$(gyro_num)
-
-
diff --git a/doc/bu/files/hasclipboardtext.txt b/doc/bu/files/hasclipboardtext.txt
deleted file mode 100644
index bd68430..0000000
--- a/doc/bu/files/hasclipboardtext.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title HasClipboardText [RCBasic Doc]
-#header function HasClipboardText()
-
-
diff --git a/doc/bu/files/hex.txt b/doc/bu/files/hex.txt
deleted file mode 100644
index 3829236..0000000
--- a/doc/bu/files/hex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Hex$ [RCBasic Doc]
-#header function Hex$(n)
-
-
diff --git a/doc/bu/files/hexval.txt b/doc/bu/files/hexval.txt
deleted file mode 100644
index 3479219..0000000
--- a/doc/bu/files/hexval.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title HexVal [RCBasic Doc]
-#header function HexVal(n$)
-
-
diff --git a/doc/bu/files/hidemouse.txt b/doc/bu/files/hidemouse.txt
deleted file mode 100644
index 1f56680..0000000
--- a/doc/bu/files/hidemouse.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title HideMouse [RCBasic Doc]
-#header sub HideMouse()
-
-
diff --git a/doc/bu/files/hidewindow.txt b/doc/bu/files/hidewindow.txt
deleted file mode 100644
index 9f663c9..0000000
--- a/doc/bu/files/hidewindow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title HideWindow [RCBasic Doc]
-#header sub HideWindow( )
-
-
diff --git a/doc/bu/files/imageexists.txt b/doc/bu/files/imageexists.txt
deleted file mode 100644
index c493f60..0000000
--- a/doc/bu/files/imageexists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ImageExists [RCBasic Doc]
-#header function ImageExists(slot)
-
-
diff --git a/doc/bu/files/incrementmatrixcolumns.txt b/doc/bu/files/incrementmatrixcolumns.txt
deleted file mode 100644
index 33dfea4..0000000
--- a/doc/bu/files/incrementmatrixcolumns.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title IncrementMatrixColumns [RCBasic Doc]
-#header sub IncrementMatrixColumns(mA, mB, c, num_cols, value)
-
-
diff --git a/doc/bu/files/incrementmatrixrows.txt b/doc/bu/files/incrementmatrixrows.txt
deleted file mode 100644
index fa257a1..0000000
--- a/doc/bu/files/incrementmatrixrows.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title IncrementMatrixRows [RCBasic Doc]
-#header sub IncrementMatrixRows(mA, mB, r, num_rows, value)
-
-
diff --git a/doc/bu/files/inkey.txt b/doc/bu/files/inkey.txt
deleted file mode 100644
index ef48103..0000000
--- a/doc/bu/files/inkey.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title InKey [RCBasic Doc]
-#header function InKey()
-
-
diff --git a/doc/bu/files/input.txt b/doc/bu/files/input.txt
deleted file mode 100644
index b63ca4b..0000000
--- a/doc/bu/files/input.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Input$ [RCBasic Doc]
-#header function Input$(prompt$)
-
-
diff --git a/doc/bu/files/insert.txt b/doc/bu/files/insert.txt
deleted file mode 100644
index a38fa5b..0000000
--- a/doc/bu/files/insert.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Insert$ [RCBasic Doc]
-#header function Insert$(src$, tgt$, pos)
-
-
diff --git a/doc/bu/files/insertmatrixcolumns.txt b/doc/bu/files/insertmatrixcolumns.txt
deleted file mode 100644
index d4a3abc..0000000
--- a/doc/bu/files/insertmatrixcolumns.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title InsertMatrixColumns [RCBasic Doc]
-#header function InsertMatrixColumns(mA, c, num_cols)
-
-
diff --git a/doc/bu/files/insertmatrixrows.txt b/doc/bu/files/insertmatrixrows.txt
deleted file mode 100644
index 1727f83..0000000
--- a/doc/bu/files/insertmatrixrows.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title InsertMatrixRows [RCBasic Doc]
-#header function InsertMatrixRows(mA, r, num_rows)
-
-
diff --git a/doc/bu/files/instr.txt b/doc/bu/files/instr.txt
deleted file mode 100644
index 4d85ebc..0000000
--- a/doc/bu/files/instr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title InStr [RCBasic Doc]
-#header function InStr(src$, substr$)
-
-
diff --git a/doc/bu/files/int.txt b/doc/bu/files/int.txt
deleted file mode 100644
index 8e2e13c..0000000
--- a/doc/bu/files/int.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Int [RCBasic Doc]
-#header function Int(n)
-
-
diff --git a/doc/bu/files/integrateactorvelocities.txt b/doc/bu/files/integrateactorvelocities.txt
deleted file mode 100644
index 995e6f0..0000000
--- a/doc/bu/files/integrateactorvelocities.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title integrateActorVelocities [RCBasic Doc]
-#header sub integrateActorVelocities( actor, v_step)
-
-
diff --git a/doc/bu/files/interpolate.txt b/doc/bu/files/interpolate.txt
deleted file mode 100644
index 41193c0..0000000
--- a/doc/bu/files/interpolate.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Interpolate [RCBasic Doc]
-#header Function Interpolate(min_a, max_a, mid_a, min_b, max_b)
-
-
diff --git a/doc/bu/files/invertmatrix.txt b/doc/bu/files/invertmatrix.txt
deleted file mode 100644
index c6b72a6..0000000
--- a/doc/bu/files/invertmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title InvertMatrix [RCBasic Doc]
-#header function InvertMatrix(mA, mB)
-
-
diff --git a/doc/bu/files/isequalmatrix.txt b/doc/bu/files/isequalmatrix.txt
deleted file mode 100644
index 5909dcb..0000000
--- a/doc/bu/files/isequalmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title IsEqualMatrix [RCBasic Doc]
-#header function IsEqualMatrix(mA, mB, tolerance)
-
-
diff --git a/doc/bu/files/joinmatrixcolumns.txt b/doc/bu/files/joinmatrixcolumns.txt
deleted file mode 100644
index 7596865..0000000
--- a/doc/bu/files/joinmatrixcolumns.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoinMatrixColumns [RCBasic Doc]
-#header sub JoinMatrixColumns(mA, mB, mC)
-
-
diff --git a/doc/bu/files/joinmatrixrows.txt b/doc/bu/files/joinmatrixrows.txt
deleted file mode 100644
index 79f7f4b..0000000
--- a/doc/bu/files/joinmatrixrows.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoinMatrixRows [RCBasic Doc]
-#header sub JoinMatrixRows(mA, mB, mC)
-
-
diff --git a/doc/bu/files/joyaxis.txt b/doc/bu/files/joyaxis.txt
deleted file mode 100644
index 133963e..0000000
--- a/doc/bu/files/joyaxis.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoyAxis [RCBasic Doc]
-#header function JoyAxis(joy_num, joy_axis)
-
-
diff --git a/doc/bu/files/joybutton.txt b/doc/bu/files/joybutton.txt
deleted file mode 100644
index e291c8c..0000000
--- a/doc/bu/files/joybutton.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoyButton [RCBasic Doc]
-#header function JoyButton(joy_num, joy_button)
-
-
diff --git a/doc/bu/files/joyhat.txt b/doc/bu/files/joyhat.txt
deleted file mode 100644
index bd677fb..0000000
--- a/doc/bu/files/joyhat.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoyHat [RCBasic Doc]
-#header function JoyHat(joy_num, joy_hat)
-
-
diff --git a/doc/bu/files/joyname.txt b/doc/bu/files/joyname.txt
deleted file mode 100644
index d234523..0000000
--- a/doc/bu/files/joyname.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoyName$ [RCBasic Doc]
-#header function JoyName$(joy_num)
-
-
diff --git a/doc/bu/files/joyrumbleplay.txt b/doc/bu/files/joyrumbleplay.txt
deleted file mode 100644
index 49723c4..0000000
--- a/doc/bu/files/joyrumbleplay.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoyRumblePlay [RCBasic Doc]
-#header sub JoyRumblePlay(joy_num, strength, duration)
-
-
diff --git a/doc/bu/files/joyrumblestop.txt b/doc/bu/files/joyrumblestop.txt
deleted file mode 100644
index 5ce95f4..0000000
--- a/doc/bu/files/joyrumblestop.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoyRumbleStop [RCBasic Doc]
-#header sub JoyRumbleStop(joy_num)
-
-
diff --git a/doc/bu/files/joystickisconnected.txt b/doc/bu/files/joystickisconnected.txt
deleted file mode 100644
index d691385..0000000
--- a/doc/bu/files/joystickisconnected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoystickIsConnected [RCBasic Doc]
-#header function JoystickIsConnected(joy_num)
-
-
diff --git a/doc/bu/files/joystickishaptic.txt b/doc/bu/files/joystickishaptic.txt
deleted file mode 100644
index 89381fc..0000000
--- a/doc/bu/files/joystickishaptic.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title JoystickIsHaptic [RCBasic Doc]
-#header function JoystickIsHaptic(joy_num)
-
-
diff --git a/doc/bu/files/key.txt b/doc/bu/files/key.txt
deleted file mode 100644
index 76feca5..0000000
--- a/doc/bu/files/key.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Key [RCBasic Doc]
-#header function Key(key_code)
-
-
diff --git a/doc/bu/files/lcase.txt b/doc/bu/files/lcase.txt
deleted file mode 100644
index 7fe61dd..0000000
--- a/doc/bu/files/lcase.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Lcase$ [RCBasic Doc]
-#header function Lcase$(src$)
-
-
diff --git a/doc/bu/files/left.txt b/doc/bu/files/left.txt
deleted file mode 100644
index 3ea0198..0000000
--- a/doc/bu/files/left.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Left$ [RCBasic Doc]
-#header function Left$(src$, n)
-
-
diff --git a/doc/bu/files/len.txt b/doc/bu/files/len.txt
deleted file mode 100644
index 3933724..0000000
--- a/doc/bu/files/len.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Len [RCBasic Doc]
-#header function Len(src$)
-
-
diff --git a/doc/bu/files/length.txt b/doc/bu/files/length.txt
deleted file mode 100644
index 583b3d8..0000000
--- a/doc/bu/files/length.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Length [RCBasic Doc]
-#header function Length(src$)
-
-
diff --git a/doc/bu/files/lightiscastingshadow.txt b/doc/bu/files/lightiscastingshadow.txt
deleted file mode 100644
index 6e1bc52..0000000
--- a/doc/bu/files/lightiscastingshadow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title lightIsCastingShadow [RCBasic Doc]
-#header function lightIsCastingShadow( actor )
-
-
diff --git a/doc/bu/files/line.txt b/doc/bu/files/line.txt
deleted file mode 100644
index 3218a53..0000000
--- a/doc/bu/files/line.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Line [RCBasic Doc]
-#header sub Line(x1, y1, x2, y2)
-
-
diff --git a/doc/bu/files/loadfont.txt b/doc/bu/files/loadfont.txt
deleted file mode 100644
index e8ecfc1..0000000
--- a/doc/bu/files/loadfont.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title LoadFont [RCBasic Doc]
-#header function LoadFont(fnt_file$, font_size)
-
-
diff --git a/doc/bu/files/loadimage.txt b/doc/bu/files/loadimage.txt
deleted file mode 100644
index 0ea157f..0000000
--- a/doc/bu/files/loadimage.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title LoadImage [RCBasic Doc]
-#header function LoadImage( img$ )
-
-
diff --git a/doc/bu/files/loadimageex.txt b/doc/bu/files/loadimageex.txt
deleted file mode 100644
index 411a4fa..0000000
--- a/doc/bu/files/loadimageex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title LoadImageEx [RCBasic Doc]
-#header function LoadImageEx(img$, colkey)
-
-
diff --git a/doc/bu/files/loadmesh.txt b/doc/bu/files/loadmesh.txt
deleted file mode 100644
index b81238d..0000000
--- a/doc/bu/files/loadmesh.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title LoadMesh [RCBasic Doc]
-#header function LoadMesh( mesh_file$ )
-
-
diff --git a/doc/bu/files/loadmeshfromarchive.txt b/doc/bu/files/loadmeshfromarchive.txt
deleted file mode 100644
index 930c0b4..0000000
--- a/doc/bu/files/loadmeshfromarchive.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title LoadMeshFromArchive [RCBasic Doc]
-#header function LoadMeshFromArchive( archive$, mesh_file$ )
-
-
diff --git a/doc/bu/files/loadmusic.txt b/doc/bu/files/loadmusic.txt
deleted file mode 100644
index 97685fa..0000000
--- a/doc/bu/files/loadmusic.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title LoadMusic [RCBasic Doc]
-#header sub LoadMusic(music_file$)
-
-
diff --git a/doc/bu/files/loadsound.txt b/doc/bu/files/loadsound.txt
deleted file mode 100644
index a493bf2..0000000
--- a/doc/bu/files/loadsound.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title LoadSound [RCBasic Doc]
-#header function LoadSound(snd_file$)
-
-
diff --git a/doc/bu/files/loadvideo.txt b/doc/bu/files/loadvideo.txt
deleted file mode 100644
index 76c4666..0000000
--- a/doc/bu/files/loadvideo.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title LoadVideo [RCBasic Doc]
-#header sub LoadVideo(vid$)
-
-
diff --git a/doc/bu/files/log.txt b/doc/bu/files/log.txt
deleted file mode 100644
index 333ad0c..0000000
--- a/doc/bu/files/log.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Log [RCBasic Doc]
-#header function Log(n)
-
-
diff --git a/doc/bu/files/loopactoranimation.txt b/doc/bu/files/loopactoranimation.txt
deleted file mode 100644
index b59dd23..0000000
--- a/doc/bu/files/loopactoranimation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title loopActorAnimation [RCBasic Doc]
-#header sub loopActorAnimation( actor, flag )
-
-
diff --git a/doc/bu/files/ltrim.txt b/doc/bu/files/ltrim.txt
deleted file mode 100644
index 7875047..0000000
--- a/doc/bu/files/ltrim.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Ltrim$ [RCBasic Doc]
-#header function Ltrim$(src$)
-
-
diff --git a/doc/bu/files/makedir.txt b/doc/bu/files/makedir.txt
deleted file mode 100644
index db76b7c..0000000
--- a/doc/bu/files/makedir.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MakeDir [RCBasic Doc]
-#header function MakeDir(p$)
-
-
diff --git a/doc/bu/files/materialisaplhablend.txt b/doc/bu/files/materialisaplhablend.txt
deleted file mode 100644
index e81c4d1..0000000
--- a/doc/bu/files/materialisaplhablend.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title materialIsAplhaBlend [RCBasic Doc]
-#header function materialIsAplhaBlend( material_id)
-
-
diff --git a/doc/bu/files/materialisgouraudshaded.txt b/doc/bu/files/materialisgouraudshaded.txt
deleted file mode 100644
index 4f086f8..0000000
--- a/doc/bu/files/materialisgouraudshaded.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title materialIsGouraudShaded [RCBasic Doc]
-#header function materialIsGouraudShaded( material_id)
-
-
diff --git a/doc/bu/files/materialislit.txt b/doc/bu/files/materialislit.txt
deleted file mode 100644
index 7097a8f..0000000
--- a/doc/bu/files/materialislit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title materialIsLit [RCBasic Doc]
-#header function materialIsLit( material_id)
-
-
diff --git a/doc/bu/files/materialisnormalized.txt b/doc/bu/files/materialisnormalized.txt
deleted file mode 100644
index 7c57568..0000000
--- a/doc/bu/files/materialisnormalized.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title materialIsNormalized [RCBasic Doc]
-#header function materialIsNormalized( material_id)
-
-
diff --git a/doc/bu/files/materialispointcloud.txt b/doc/bu/files/materialispointcloud.txt
deleted file mode 100644
index 9598967..0000000
--- a/doc/bu/files/materialispointcloud.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title materialIsPointCloud [RCBasic Doc]
-#header function materialIsPointCloud( material_id)
-
-
diff --git a/doc/bu/files/materialistransparent.txt b/doc/bu/files/materialistransparent.txt
deleted file mode 100644
index 1a83a0a..0000000
--- a/doc/bu/files/materialistransparent.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title materialIsTransparent [RCBasic Doc]
-#header function materialIsTransparent( material_id)
-
-
diff --git a/doc/bu/files/materialiswireframe.txt b/doc/bu/files/materialiswireframe.txt
deleted file mode 100644
index 4dce2fa..0000000
--- a/doc/bu/files/materialiswireframe.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title materialIsWireframe [RCBasic Doc]
-#header function materialIsWireframe( material_id)
-
-
diff --git a/doc/bu/files/matrixfrombuffer.txt b/doc/bu/files/matrixfrombuffer.txt
deleted file mode 100644
index 6086349..0000000
--- a/doc/bu/files/matrixfrombuffer.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MatrixFromBuffer [RCBasic Doc]
-#header sub MatrixFromBuffer(mA, r, c, ByRef buffer)
-
-
diff --git a/doc/bu/files/matrixvalue.txt b/doc/bu/files/matrixvalue.txt
deleted file mode 100644
index 013e5ba..0000000
--- a/doc/bu/files/matrixvalue.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MatrixValue [RCBasic Doc]
-#header function MatrixValue(mA, r, c)
-
-
diff --git a/doc/bu/files/max.txt b/doc/bu/files/max.txt
deleted file mode 100644
index 1a2dede..0000000
--- a/doc/bu/files/max.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Max [RCBasic Doc]
-#header function Max(a, b)
-
-
diff --git a/doc/bu/files/maximizewindow.txt b/doc/bu/files/maximizewindow.txt
deleted file mode 100644
index 437ccab..0000000
--- a/doc/bu/files/maximizewindow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MaximizeWindow [RCBasic Doc]
-#header sub MaximizeWindow()
-
-
diff --git a/doc/bu/files/messagebox.txt b/doc/bu/files/messagebox.txt
deleted file mode 100644
index 1756441..0000000
--- a/doc/bu/files/messagebox.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MessageBox [RCBasic Doc]
-#header function MessageBox(title$, msg$)
-
-
diff --git a/doc/bu/files/mid.txt b/doc/bu/files/mid.txt
deleted file mode 100644
index 8b14040..0000000
--- a/doc/bu/files/mid.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Mid$ [RCBasic Doc]
-#header function Mid$(src$, start, n)
-
-
diff --git a/doc/bu/files/min.txt b/doc/bu/files/min.txt
deleted file mode 100644
index 6828ac4..0000000
--- a/doc/bu/files/min.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Min [RCBasic Doc]
-#header function Min(a, b)
-
-
diff --git a/doc/bu/files/minimizewindow.txt b/doc/bu/files/minimizewindow.txt
deleted file mode 100644
index 9644318..0000000
--- a/doc/bu/files/minimizewindow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MinimizeWindow [RCBasic Doc]
-#header sub MinimizeWindow()
-
-
diff --git a/doc/bu/files/mousebutton.txt b/doc/bu/files/mousebutton.txt
deleted file mode 100644
index fb4f088..0000000
--- a/doc/bu/files/mousebutton.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MouseButton [RCBasic Doc]
-#header function MouseButton(mb)
-
-
diff --git a/doc/bu/files/mouseisvisible.txt b/doc/bu/files/mouseisvisible.txt
deleted file mode 100644
index 1360aa6..0000000
--- a/doc/bu/files/mouseisvisible.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MouseIsVisible [RCBasic Doc]
-#header function MouseIsVisible()
-
-
diff --git a/doc/bu/files/mousewheelx.txt b/doc/bu/files/mousewheelx.txt
deleted file mode 100644
index 09c476d..0000000
--- a/doc/bu/files/mousewheelx.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MouseWheelX [RCBasic Doc]
-#header function MouseWheelX()
-
-
diff --git a/doc/bu/files/mousewheely.txt b/doc/bu/files/mousewheely.txt
deleted file mode 100644
index ee42d6d..0000000
--- a/doc/bu/files/mousewheely.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MouseWheelY [RCBasic Doc]
-#header function MouseWheelY()
-
-
diff --git a/doc/bu/files/mousex.txt b/doc/bu/files/mousex.txt
deleted file mode 100644
index a8ac3ec..0000000
--- a/doc/bu/files/mousex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MouseX [RCBasic Doc]
-#header function MouseX()
-
-
diff --git a/doc/bu/files/mousey.txt b/doc/bu/files/mousey.txt
deleted file mode 100644
index 867d7b4..0000000
--- a/doc/bu/files/mousey.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MouseY [RCBasic Doc]
-#header function MouseY()
-
-
diff --git a/doc/bu/files/movefile.txt b/doc/bu/files/movefile.txt
deleted file mode 100644
index b1000a6..0000000
--- a/doc/bu/files/movefile.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MoveFile [RCBasic Doc]
-#header function MoveFile(src$, dst$)
-
-
diff --git a/doc/bu/files/multiplymatrix.txt b/doc/bu/files/multiplymatrix.txt
deleted file mode 100644
index 02f194d..0000000
--- a/doc/bu/files/multiplymatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MultiplyMatrix [RCBasic Doc]
-#header function MultiplyMatrix(mA, mB, mC)
-
-
diff --git a/doc/bu/files/musicexists.txt b/doc/bu/files/musicexists.txt
deleted file mode 100644
index a0c8e39..0000000
--- a/doc/bu/files/musicexists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MusicExists [RCBasic Doc]
-#header function MusicExists()
-
-
diff --git a/doc/bu/files/musicisplaying.txt b/doc/bu/files/musicisplaying.txt
deleted file mode 100644
index 7a13f25..0000000
--- a/doc/bu/files/musicisplaying.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title MusicIsPlaying [RCBasic Doc]
-#header function MusicIsPlaying()
-
-
diff --git a/doc/bu/files/numaccels.txt b/doc/bu/files/numaccels.txt
deleted file mode 100644
index a88ead3..0000000
--- a/doc/bu/files/numaccels.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumAccels [RCBasic Doc]
-#header function NumAccels()
-
-
diff --git a/doc/bu/files/numberarraycopy.txt b/doc/bu/files/numberarraycopy.txt
deleted file mode 100644
index 2dae7f5..0000000
--- a/doc/bu/files/numberarraycopy.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumberArrayCopy [RCBasic Doc]
-#header sub NumberArrayCopy(ByRef src, ByRef dst)
-
-
diff --git a/doc/bu/files/numberarraydim.txt b/doc/bu/files/numberarraydim.txt
deleted file mode 100644
index 5669b6d..0000000
--- a/doc/bu/files/numberarraydim.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumberArrayDim [RCBasic Doc]
-#header function NumberArrayDim(Byref id)
-
-
diff --git a/doc/bu/files/numberarrayfill.txt b/doc/bu/files/numberarrayfill.txt
deleted file mode 100644
index b4ec9f8..0000000
--- a/doc/bu/files/numberarrayfill.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumberArrayFill [RCBasic Doc]
-#header sub NumberArrayFill(ByRef src, fdata)
-
-
diff --git a/doc/bu/files/numberarraysize.txt b/doc/bu/files/numberarraysize.txt
deleted file mode 100644
index ca13632..0000000
--- a/doc/bu/files/numberarraysize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumberArraySize [RCBasic Doc]
-#header function NumberArraySize(Byref id, array_dim)
-
-
diff --git a/doc/bu/files/numcommands.txt b/doc/bu/files/numcommands.txt
deleted file mode 100644
index 19c71ad..0000000
--- a/doc/bu/files/numcommands.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumCommands [RCBasic Doc]
-#header function NumCommands()
-
-
diff --git a/doc/bu/files/numcpus.txt b/doc/bu/files/numcpus.txt
deleted file mode 100644
index fe43f47..0000000
--- a/doc/bu/files/numcpus.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumCPUs [RCBasic Doc]
-#header function NumCPUs()
-
-
diff --git a/doc/bu/files/numfingers.txt b/doc/bu/files/numfingers.txt
deleted file mode 100644
index 870a488..0000000
--- a/doc/bu/files/numfingers.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumFingers [RCBasic Doc]
-#header function NumFingers()
-
-
diff --git a/doc/bu/files/numgyros.txt b/doc/bu/files/numgyros.txt
deleted file mode 100644
index e4c04f2..0000000
--- a/doc/bu/files/numgyros.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumGyros [RCBasic Doc]
-#header function NumGyros()
-
-
diff --git a/doc/bu/files/numjoyaxes.txt b/doc/bu/files/numjoyaxes.txt
deleted file mode 100644
index 015ee49..0000000
--- a/doc/bu/files/numjoyaxes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumJoyAxes [RCBasic Doc]
-#header function NumJoyAxes(joy_num)
-
-
diff --git a/doc/bu/files/numjoybuttons.txt b/doc/bu/files/numjoybuttons.txt
deleted file mode 100644
index 1ad0dd1..0000000
--- a/doc/bu/files/numjoybuttons.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumJoyButtons [RCBasic Doc]
-#header function NumJoyButtons(joy_num)
-
-
diff --git a/doc/bu/files/numjoyhats.txt b/doc/bu/files/numjoyhats.txt
deleted file mode 100644
index 38efbbf..0000000
--- a/doc/bu/files/numjoyhats.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumJoyHats [RCBasic Doc]
-#header function NumJoyHats(joy_num)
-
-
diff --git a/doc/bu/files/numjoysticks.txt b/doc/bu/files/numjoysticks.txt
deleted file mode 100644
index d72534b..0000000
--- a/doc/bu/files/numjoysticks.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumJoysticks [RCBasic Doc]
-#header function NumJoysticks()
-
-
diff --git a/doc/bu/files/numjoytrackballs.txt b/doc/bu/files/numjoytrackballs.txt
deleted file mode 100644
index 929b48d..0000000
--- a/doc/bu/files/numjoytrackballs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumJoyTrackBalls [RCBasic Doc]
-#header function NumJoyTrackBalls(joy_num)
-
-
diff --git a/doc/bu/files/numsoundchannels.txt b/doc/bu/files/numsoundchannels.txt
deleted file mode 100644
index 7e5221f..0000000
--- a/doc/bu/files/numsoundchannels.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title NumSoundChannels [RCBasic Doc]
-#header function NumSoundChannels()
-
-
diff --git a/doc/bu/files/opencanvas.txt b/doc/bu/files/opencanvas.txt
deleted file mode 100644
index e96a2dd..0000000
--- a/doc/bu/files/opencanvas.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title OpenCanvas [RCBasic Doc]
-#header function OpenCanvas( w, h, viewport_x, viewport_y, viewport_w, viewport_h, mode)
-
-
diff --git a/doc/bu/files/openfile.txt b/doc/bu/files/openfile.txt
deleted file mode 100644
index d961bb5..0000000
--- a/doc/bu/files/openfile.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title OpenFile [RCBasic Doc]
-#header function OpenFile(fileName$, mode)
-
-
diff --git a/doc/bu/files/openurl.txt b/doc/bu/files/openurl.txt
deleted file mode 100644
index 7fd2cf7..0000000
--- a/doc/bu/files/openurl.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title OpenURL [RCBasic Doc]
-#header function OpenURL(url$)
-
-
diff --git a/doc/bu/files/openwindow.txt b/doc/bu/files/openwindow.txt
deleted file mode 100644
index 80d6b7b..0000000
--- a/doc/bu/files/openwindow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title OpenWindow [RCBasic Doc]
-#header Function OpenWindow( title$, w, h, fullscreen, vsync )
-
-
diff --git a/doc/bu/files/openwindowex.txt b/doc/bu/files/openwindowex.txt
deleted file mode 100644
index 441ebf8..0000000
--- a/doc/bu/files/openwindowex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title OpenWindowEx [RCBasic Doc]
-#header function OpenWindowEx(title$, x, y, w, h, mode, aa, stencil_buffer, vsync)
-
-
diff --git a/doc/bu/files/orbit.txt b/doc/bu/files/orbit.txt
deleted file mode 100644
index 26590c5..0000000
--- a/doc/bu/files/orbit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title OrBit [RCBasic Doc]
-#header function OrBit(a, b)
-
-
diff --git a/doc/bu/files/os.txt b/doc/bu/files/os.txt
deleted file mode 100644
index 4e9286f..0000000
--- a/doc/bu/files/os.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title OS$ [RCBasic Doc]
-#header function OS$()
-
-
diff --git a/doc/bu/files/particleisusingeverymeshvertex.txt b/doc/bu/files/particleisusingeverymeshvertex.txt
deleted file mode 100644
index 5c97b62..0000000
--- a/doc/bu/files/particleisusingeverymeshvertex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title particleIsUsingEveryMeshVertex [RCBasic Doc]
-#header function particleIsUsingEveryMeshVertex( actor)
-
-
diff --git a/doc/bu/files/particleisusingnormaldirection.txt b/doc/bu/files/particleisusingnormaldirection.txt
deleted file mode 100644
index 1cae291..0000000
--- a/doc/bu/files/particleisusingnormaldirection.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title particleIsUsingNormalDirection [RCBasic Doc]
-#header function particleIsUsingNormalDirection( actor)
-
-
diff --git a/doc/bu/files/particleisusingoutlineonly.txt b/doc/bu/files/particleisusingoutlineonly.txt
deleted file mode 100644
index b114c1b..0000000
--- a/doc/bu/files/particleisusingoutlineonly.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title particleIsUsingOutlineOnly [RCBasic Doc]
-#header function particleIsUsingOutlineOnly( actor)
-
-
diff --git a/doc/bu/files/pausemusic.txt b/doc/bu/files/pausemusic.txt
deleted file mode 100644
index 754eee6..0000000
--- a/doc/bu/files/pausemusic.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PauseMusic [RCBasic Doc]
-#header sub PauseMusic()
-
-
diff --git a/doc/bu/files/pausesound.txt b/doc/bu/files/pausesound.txt
deleted file mode 100644
index 7bfb363..0000000
--- a/doc/bu/files/pausesound.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PauseSound [RCBasic Doc]
-#header sub PauseSound(channel)
-
-
diff --git a/doc/bu/files/pausevideo.txt b/doc/bu/files/pausevideo.txt
deleted file mode 100644
index e4f9c22..0000000
--- a/doc/bu/files/pausevideo.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PauseVideo [RCBasic Doc]
-#header sub PauseVideo()
-
-
diff --git a/doc/bu/files/playmusic.txt b/doc/bu/files/playmusic.txt
deleted file mode 100644
index 73204db..0000000
--- a/doc/bu/files/playmusic.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PlayMusic [RCBasic Doc]
-#header sub PlayMusic(mLoops)
-
-
diff --git a/doc/bu/files/playsound.txt b/doc/bu/files/playsound.txt
deleted file mode 100644
index 4c4c62d..0000000
--- a/doc/bu/files/playsound.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PlaySound [RCBasic Doc]
-#header sub PlaySound(slot, channel, loops)
-
-
diff --git a/doc/bu/files/playsoundtimed.txt b/doc/bu/files/playsoundtimed.txt
deleted file mode 100644
index 5e0cf1c..0000000
--- a/doc/bu/files/playsoundtimed.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PlaySoundTimed [RCBasic Doc]
-#header sub PlaySoundTimed(slot, channel, loops, ms)
-
-
diff --git a/doc/bu/files/playvideo.txt b/doc/bu/files/playvideo.txt
deleted file mode 100644
index 47ad2f9..0000000
--- a/doc/bu/files/playvideo.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PlayVideo [RCBasic Doc]
-#header sub PlayVideo(vLoops)
-
-
diff --git a/doc/bu/files/pointinquad.txt b/doc/bu/files/pointinquad.txt
deleted file mode 100644
index 4f3ca9b..0000000
--- a/doc/bu/files/pointinquad.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PointInQuad [RCBasic Doc]
-#header function PointInQuad(x, y, x1, y1, x2, y2, x3, y3, x4, y4)
-
-
diff --git a/doc/bu/files/pointintri.txt b/doc/bu/files/pointintri.txt
deleted file mode 100644
index 49a29e1..0000000
--- a/doc/bu/files/pointintri.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PointInTri [RCBasic Doc]
-#header function PointInTri(x, y, x1, y1, x2, y2, x3, y3)
-
-
diff --git a/doc/bu/files/poly.txt b/doc/bu/files/poly.txt
deleted file mode 100644
index 1294e69..0000000
--- a/doc/bu/files/poly.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Poly [RCBasic Doc]
-#header sub Poly(n, byref x, byref y)
-
-
diff --git a/doc/bu/files/pop_n.txt b/doc/bu/files/pop_n.txt
deleted file mode 100644
index a785a85..0000000
--- a/doc/bu/files/pop_n.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Pop_N [RCBasic Doc]
-#header function Pop_N( num_stack )
-
-
diff --git a/doc/bu/files/pop_s.txt b/doc/bu/files/pop_s.txt
deleted file mode 100644
index e66028e..0000000
--- a/doc/bu/files/pop_s.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Pop_S$ [RCBasic Doc]
-#header function Pop_S$( str_stack )
-
-
diff --git a/doc/bu/files/prefpath.txt b/doc/bu/files/prefpath.txt
deleted file mode 100644
index 0dfc3ff..0000000
--- a/doc/bu/files/prefpath.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title PrefPath$ [RCBasic Doc]
-#header function PrefPath$(org_name$, app_name$)
-
-
diff --git a/doc/bu/files/pset.txt b/doc/bu/files/pset.txt
deleted file mode 100644
index 411e190..0000000
--- a/doc/bu/files/pset.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Pset [RCBasic Doc]
-#header sub Pset(x,y)
-
-
diff --git a/doc/bu/files/push_n.txt b/doc/bu/files/push_n.txt
deleted file mode 100644
index 1a9f83b..0000000
--- a/doc/bu/files/push_n.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Push_N [RCBasic Doc]
-#header sub Push_N( num_stack, n )
-
-
diff --git a/doc/bu/files/push_s.txt b/doc/bu/files/push_s.txt
deleted file mode 100644
index a6b04e2..0000000
--- a/doc/bu/files/push_s.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Push_S [RCBasic Doc]
-#header sub Push_S( str_stack, s$ )
-
-
diff --git a/doc/bu/files/queryaudiospec.txt b/doc/bu/files/queryaudiospec.txt
deleted file mode 100644
index 969989f..0000000
--- a/doc/bu/files/queryaudiospec.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title QueryAudioSpec [RCBasic Doc]
-#header function QueryAudioSpec(ByRef freq, ByRef format, ByRef channels)
-
-
diff --git a/doc/bu/files/radians.txt b/doc/bu/files/radians.txt
deleted file mode 100644
index 0f0f324..0000000
--- a/doc/bu/files/radians.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Radians [RCBasic Doc]
-#header function Radians(d)
-
-
diff --git a/doc/bu/files/raisewindow.txt b/doc/bu/files/raisewindow.txt
deleted file mode 100644
index 6c13aa5..0000000
--- a/doc/bu/files/raisewindow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RaiseWindow [RCBasic Doc]
-#header sub RaiseWindow( )
-
-
diff --git a/doc/bu/files/rand.txt b/doc/bu/files/rand.txt
deleted file mode 100644
index 380a601..0000000
--- a/doc/bu/files/rand.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Rand [RCBasic Doc]
-#header function Rand(n)
-
-
diff --git a/doc/bu/files/randomize.txt b/doc/bu/files/randomize.txt
deleted file mode 100644
index c3c2ef4..0000000
--- a/doc/bu/files/randomize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Randomize [RCBasic Doc]
-#header function Randomize(n)
-
-
diff --git a/doc/bu/files/randomizematrix.txt b/doc/bu/files/randomizematrix.txt
deleted file mode 100644
index cdc4a09..0000000
--- a/doc/bu/files/randomizematrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RandomizeMatrix [RCBasic Doc]
-#header sub RandomizeMatrix(mA, vmin, vmax)
-
-
diff --git a/doc/bu/files/readbyte.txt b/doc/bu/files/readbyte.txt
deleted file mode 100644
index b5b06e9..0000000
--- a/doc/bu/files/readbyte.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReadByte [RCBasic Doc]
-#header function ReadByte(stream)
-
-
diff --git a/doc/bu/files/readbytebuffer.txt b/doc/bu/files/readbytebuffer.txt
deleted file mode 100644
index 10f06fe..0000000
--- a/doc/bu/files/readbytebuffer.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReadByteBuffer [RCBasic Doc]
-#header function ReadByteBuffer(stream, ByRef buf, buf_size)
-
-
diff --git a/doc/bu/files/readinput_settext.txt b/doc/bu/files/readinput_settext.txt
deleted file mode 100644
index 4cd14c9..0000000
--- a/doc/bu/files/readinput_settext.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReadInput_SetText [RCBasic Doc]
-#header sub ReadInput_SetText(txt$)
-
-
diff --git a/doc/bu/files/readinput_start.txt b/doc/bu/files/readinput_start.txt
deleted file mode 100644
index a3fd1af..0000000
--- a/doc/bu/files/readinput_start.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReadInput_Start [RCBasic Doc]
-#header sub ReadInput_Start()
-
-
diff --git a/doc/bu/files/readinput_stop.txt b/doc/bu/files/readinput_stop.txt
deleted file mode 100644
index 48afa3c..0000000
--- a/doc/bu/files/readinput_stop.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReadInput_Stop [RCBasic Doc]
-#header sub ReadInput_Stop()
-
-
diff --git a/doc/bu/files/readinput_text.txt b/doc/bu/files/readinput_text.txt
deleted file mode 100644
index 16cc690..0000000
--- a/doc/bu/files/readinput_text.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReadInput_Text$ [RCBasic Doc]
-#header function ReadInput_Text$()
-
-
diff --git a/doc/bu/files/readinput_togglebackspace.txt b/doc/bu/files/readinput_togglebackspace.txt
deleted file mode 100644
index 6a4b6aa..0000000
--- a/doc/bu/files/readinput_togglebackspace.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReadInput_ToggleBackspace [RCBasic Doc]
-#header sub ReadInput_ToggleBackspace(flag)
-
-
diff --git a/doc/bu/files/readline.txt b/doc/bu/files/readline.txt
deleted file mode 100644
index 905c7e4..0000000
--- a/doc/bu/files/readline.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReadLine$ [RCBasic Doc]
-#header function ReadLine$(stream)
-
-
diff --git a/doc/bu/files/rect.txt b/doc/bu/files/rect.txt
deleted file mode 100644
index ca7d960..0000000
--- a/doc/bu/files/rect.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Rect [RCBasic Doc]
-#header sub Rect(x, y, w, h)
-
-
diff --git a/doc/bu/files/rectfill.txt b/doc/bu/files/rectfill.txt
deleted file mode 100644
index 1b5a196..0000000
--- a/doc/bu/files/rectfill.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RectFill [RCBasic Doc]
-#header sub RectFill(x, y, w, h)
-
-
diff --git a/doc/bu/files/removeactorshadow.txt b/doc/bu/files/removeactorshadow.txt
deleted file mode 100644
index 0f699b1..0000000
--- a/doc/bu/files/removeactorshadow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RemoveActorShadow [RCBasic Doc]
-#header sub RemoveActorShadow( actor )
-
-
diff --git a/doc/bu/files/removedir.txt b/doc/bu/files/removedir.txt
deleted file mode 100644
index c03614a..0000000
--- a/doc/bu/files/removedir.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RemoveDir [RCBasic Doc]
-#header function RemoveDir(p$)
-
-
diff --git a/doc/bu/files/removefile.txt b/doc/bu/files/removefile.txt
deleted file mode 100644
index 87b2c15..0000000
--- a/doc/bu/files/removefile.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RemoveFile [RCBasic Doc]
-#header function RemoveFile(fileName$)
-
-
diff --git a/doc/bu/files/removescenesky.txt b/doc/bu/files/removescenesky.txt
deleted file mode 100644
index b665641..0000000
--- a/doc/bu/files/removescenesky.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RemoveSceneSky [RCBasic Doc]
-#header sub RemoveSceneSky( )
-
-
diff --git a/doc/bu/files/renamefile.txt b/doc/bu/files/renamefile.txt
deleted file mode 100644
index abbdf67..0000000
--- a/doc/bu/files/renamefile.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RenameFile [RCBasic Doc]
-#header function RenameFile(src$, dst$)
-
-
diff --git a/doc/bu/files/replace.txt b/doc/bu/files/replace.txt
deleted file mode 100644
index 33bc7c2..0000000
--- a/doc/bu/files/replace.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Replace$ [RCBasic Doc]
-#header function Replace$(src$, tgt$, rpc$)
-
-
diff --git a/doc/bu/files/replacesubstr.txt b/doc/bu/files/replacesubstr.txt
deleted file mode 100644
index 92ef6a0..0000000
--- a/doc/bu/files/replacesubstr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ReplaceSubstr$ [RCBasic Doc]
-#header function ReplaceSubstr$(src$, rpc$, pos)
-
-
diff --git a/doc/bu/files/restorewindow.txt b/doc/bu/files/restorewindow.txt
deleted file mode 100644
index 26ef88e..0000000
--- a/doc/bu/files/restorewindow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RestoreWindow [RCBasic Doc]
-#header sub RestoreWindow( )
-
-
diff --git a/doc/bu/files/resumemusic.txt b/doc/bu/files/resumemusic.txt
deleted file mode 100644
index 371cdd7..0000000
--- a/doc/bu/files/resumemusic.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ResumeMusic [RCBasic Doc]
-#header sub ResumeMusic()
-
-
diff --git a/doc/bu/files/resumesound.txt b/doc/bu/files/resumesound.txt
deleted file mode 100644
index be12b60..0000000
--- a/doc/bu/files/resumesound.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ResumeSound [RCBasic Doc]
-#header sub ResumeSound(channel)
-
-
diff --git a/doc/bu/files/resumevideo.txt b/doc/bu/files/resumevideo.txt
deleted file mode 100644
index 2c6b1a0..0000000
--- a/doc/bu/files/resumevideo.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ResumeVideo [RCBasic Doc]
-#header sub ResumeVideo()
-
-
diff --git a/doc/bu/files/reverse.txt b/doc/bu/files/reverse.txt
deleted file mode 100644
index f087869..0000000
--- a/doc/bu/files/reverse.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Reverse$ [RCBasic Doc]
-#header function Reverse$(src$)
-
-
diff --git a/doc/bu/files/rewindmusic.txt b/doc/bu/files/rewindmusic.txt
deleted file mode 100644
index 230a3bc..0000000
--- a/doc/bu/files/rewindmusic.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RewindMusic [RCBasic Doc]
-#header sub RewindMusic()
-
-
diff --git a/doc/bu/files/rgb.txt b/doc/bu/files/rgb.txt
deleted file mode 100644
index 327923b..0000000
--- a/doc/bu/files/rgb.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RGB [RCBasic Doc]
-#header function RGB(r,g,b)
-
-
diff --git a/doc/bu/files/rgba.txt b/doc/bu/files/rgba.txt
deleted file mode 100644
index afebfcb..0000000
--- a/doc/bu/files/rgba.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RGBA [RCBasic Doc]
-#header function RGBA(r,g,b,a)
-
-
diff --git a/doc/bu/files/right.txt b/doc/bu/files/right.txt
deleted file mode 100644
index 2f571dd..0000000
--- a/doc/bu/files/right.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Right$ [RCBasic Doc]
-#header function Right$(src$, n)
-
-
diff --git a/doc/bu/files/rotateactor.txt b/doc/bu/files/rotateactor.txt
deleted file mode 100644
index 16db805..0000000
--- a/doc/bu/files/rotateactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RotateActor [RCBasic Doc]
-#header sub RotateActor( actor, x, y, z )
-
-
diff --git a/doc/bu/files/rotatecamera.txt b/doc/bu/files/rotatecamera.txt
deleted file mode 100644
index 8dd2d7f..0000000
--- a/doc/bu/files/rotatecamera.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title RotateCamera [RCBasic Doc]
-#header sub RotateCamera( x, y, z)
-
-
diff --git a/doc/bu/files/round.txt b/doc/bu/files/round.txt
deleted file mode 100644
index c6dade7..0000000
--- a/doc/bu/files/round.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Round [RCBasic Doc]
-#header function Round(n)
-
-
diff --git a/doc/bu/files/rtrim.txt b/doc/bu/files/rtrim.txt
deleted file mode 100644
index ff3ab2c..0000000
--- a/doc/bu/files/rtrim.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Rtrim$ [RCBasic Doc]
-#header function Rtrim$(src$)
-
-
diff --git a/doc/bu/files/runtime.txt b/doc/bu/files/runtime.txt
deleted file mode 100644
index fdfdbb5..0000000
--- a/doc/bu/files/runtime.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Runtime$ [RCBasic Doc]
-#header function Runtime$()
-
-
diff --git a/doc/bu/files/runtime_utility_message.txt b/doc/bu/files/runtime_utility_message.txt
deleted file mode 100644
index 711b420..0000000
--- a/doc/bu/files/runtime_utility_message.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Runtime_Utility_Message$ [RCBasic Doc]
-#header function Runtime_Utility_Message$(arg$)
-
-
diff --git a/doc/bu/files/scalarmatrix.txt b/doc/bu/files/scalarmatrix.txt
deleted file mode 100644
index ae1d0b9..0000000
--- a/doc/bu/files/scalarmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ScalarMatrix [RCBasic Doc]
-#header sub ScalarMatrix(mA, mB, s_value)
-
-
diff --git a/doc/bu/files/scalarmatrixcolumns.txt b/doc/bu/files/scalarmatrixcolumns.txt
deleted file mode 100644
index d627d3b..0000000
--- a/doc/bu/files/scalarmatrixcolumns.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ScalarMatrixColumns [RCBasic Doc]
-#header function ScalarMatrixColumns(mA, mB, c, num_cols, s_value)
-
-
diff --git a/doc/bu/files/scalarmatrixrows.txt b/doc/bu/files/scalarmatrixrows.txt
deleted file mode 100644
index 4cede18..0000000
--- a/doc/bu/files/scalarmatrixrows.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ScalarMatrixRows [RCBasic Doc]
-#header function ScalarMatrixRows(mA, mB, r, num_rows, s_value)
-
-
diff --git a/doc/bu/files/scaleactor.txt b/doc/bu/files/scaleactor.txt
deleted file mode 100644
index ff1e0c5..0000000
--- a/doc/bu/files/scaleactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ScaleActor [RCBasic Doc]
-#header sub ScaleActor( actor, x, y, z )
-
-
diff --git a/doc/bu/files/scaleterraintexture.txt b/doc/bu/files/scaleterraintexture.txt
deleted file mode 100644
index 74a4097..0000000
--- a/doc/bu/files/scaleterraintexture.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ScaleTerrainTexture [RCBasic Doc]
-#header sub ScaleTerrainTexture( actor, scale, scale2 )
-
-
diff --git a/doc/bu/files/seek.txt b/doc/bu/files/seek.txt
deleted file mode 100644
index eeff200..0000000
--- a/doc/bu/files/seek.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Seek [RCBasic Doc]
-#header function Seek(stream, pos)
-
-
diff --git a/doc/bu/files/setactorangularfactor.txt b/doc/bu/files/setactorangularfactor.txt
deleted file mode 100644
index f24d283..0000000
--- a/doc/bu/files/setactorangularfactor.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title SetActorAngularFactor [RCBasic Doc]
-#header sub SetActorAngularFactor( actor, x, y, z)
-
-Sets an actor's angular factor.
-
-The angular factor determines how the actor responds to angular velocity or torque.
-
-#ref GetActorAngularFactor SetActorAngularFactor SetActorLinearFactor
-
diff --git a/doc/bu/files/setactorangularvelocitylocal.txt b/doc/bu/files/setactorangularvelocitylocal.txt
deleted file mode 100644
index d1f7541..0000000
--- a/doc/bu/files/setactorangularvelocitylocal.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorAngularVelocityLocal [RCBasic Doc]
-#header sub setActorAngularVelocityLocal( actor, x, y, z)
-
-
diff --git a/doc/bu/files/setactorangularvelocityworld.txt b/doc/bu/files/setactorangularvelocityworld.txt
deleted file mode 100644
index 1fa8210..0000000
--- a/doc/bu/files/setactorangularvelocityworld.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorAngularVelocityWorld [RCBasic Doc]
-#header sub setActorAngularVelocityWorld( actor, x, y, z)
-
-
diff --git a/doc/bu/files/setactoranimation.txt b/doc/bu/files/setactoranimation.txt
deleted file mode 100644
index bdc4b0b..0000000
--- a/doc/bu/files/setactoranimation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorAnimation [RCBasic Doc]
-#header sub SetActorAnimation( actor, start_frame, end_frame)
-
-
diff --git a/doc/bu/files/setactoranimationspeed.txt b/doc/bu/files/setactoranimationspeed.txt
deleted file mode 100644
index acc056a..0000000
--- a/doc/bu/files/setactoranimationspeed.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorAnimationSpeed [RCBasic Doc]
-#header sub SetActorAnimationSpeed( actor, speed )
-
-
diff --git a/doc/bu/files/setactorautoculling.txt b/doc/bu/files/setactorautoculling.txt
deleted file mode 100644
index a6ded76..0000000
--- a/doc/bu/files/setactorautoculling.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorAutoCulling [RCBasic Doc]
-#header sub SetActorAutoCulling( actor, cull_type )
-
-
diff --git a/doc/bu/files/setactorcollisionshape.txt b/doc/bu/files/setactorcollisionshape.txt
deleted file mode 100644
index 2863723..0000000
--- a/doc/bu/files/setactorcollisionshape.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-#title SetActorCollisionShape [RCBasic Doc]
-#header sub SetActorCollisionShape( actor, shape_type, mass)
-
-Sets the actor's collision shape
-
-Shape Types:
-#list ul
-#li SHAPE_TYPE_NONE
-#li SHAPE_TYPE_BOX
-#li SHAPE_TYPE_SPHERE
-#li SHAPE_TYPE_CYLINDER
-#li SHAPE_TYPE_CAPSULE
-#li SHAPE_TYPE_CONE
-#li SHAPE_TYPE_CONVEXHULL
-#li SHAPE_TYPE_TRIMESH
-#/list
-
-#ref GetActorCollisionShape
diff --git a/doc/bu/files/setactordamping.txt b/doc/bu/files/setactordamping.txt
deleted file mode 100644
index 579f522..0000000
--- a/doc/bu/files/setactordamping.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorDamping [RCBasic Doc]
-#header sub setActorDamping( actor, lin_damping, ang_damping)
-
-
diff --git a/doc/bu/files/setactorframe.txt b/doc/bu/files/setactorframe.txt
deleted file mode 100644
index 089229e..0000000
--- a/doc/bu/files/setactorframe.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorFrame [RCBasic Doc]
-#header sub SetActorFrame( actor, frame )
-
-
diff --git a/doc/bu/files/setactorgravity.txt b/doc/bu/files/setactorgravity.txt
deleted file mode 100644
index 98493c6..0000000
--- a/doc/bu/files/setactorgravity.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorGravity [RCBasic Doc]
-#header sub SetActorGravity( actor, x, y, z )
-
-
diff --git a/doc/bu/files/setactorinverseinertiadiaglocal.txt b/doc/bu/files/setactorinverseinertiadiaglocal.txt
deleted file mode 100644
index cc428ef..0000000
--- a/doc/bu/files/setactorinverseinertiadiaglocal.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title SetActorInverseInertiaDiagLocal [RCBasic Doc]
-#header sub SetActorInverseInertiaDiagLocal( actor, x, y, z)
-
-Sets the inverse of the inertia tensor's diagonal components in an actor's local space. This is used to compute how the actor reacts to rotational forces (torques) applied to it.
-
-#ref GetActorInverseInertiaDiagLocal
diff --git a/doc/bu/files/setactorlinearfactor.txt b/doc/bu/files/setactorlinearfactor.txt
deleted file mode 100644
index 836a22f..0000000
--- a/doc/bu/files/setactorlinearfactor.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title SetActorLinearFactor [RCBasic Doc]
-#header sub SetActorLinearFactor( actor, x, y, z)
-
-Sets an actor's linear factor.
-
-The linear factor determines how the actor responds to linear velocity or force.
-
-#ref GetActorLinearFactor SetActorAngularFactor GetActorAngularFactor
-
diff --git a/doc/bu/files/setactorlinearvelocitylocal.txt b/doc/bu/files/setactorlinearvelocitylocal.txt
deleted file mode 100644
index 7dcb77b..0000000
--- a/doc/bu/files/setactorlinearvelocitylocal.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorLinearVelocityLocal [RCBasic Doc]
-#header sub setActorLinearVelocityLocal( actor, x, y, z)
-
-
diff --git a/doc/bu/files/setactorlinearvelocityworld.txt b/doc/bu/files/setactorlinearvelocityworld.txt
deleted file mode 100644
index a583ff3..0000000
--- a/doc/bu/files/setactorlinearvelocityworld.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorLinearVelocityWorld [RCBasic Doc]
-#header sub setActorLinearVelocityWorld( actor, x, y, z)
-
-
diff --git a/doc/bu/files/setactormassproperties.txt b/doc/bu/files/setactormassproperties.txt
deleted file mode 100644
index f84275d..0000000
--- a/doc/bu/files/setactormassproperties.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorMassProperties [RCBasic Doc]
-#header sub setActorMassProperties( actor, mass, inertia_x, inertia_y, inertia_z)
-
-
diff --git a/doc/bu/files/setactormaterial.txt b/doc/bu/files/setactormaterial.txt
deleted file mode 100644
index d6cf9ce..0000000
--- a/doc/bu/files/setactormaterial.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorMaterial [RCBasic Doc]
-#header sub setActorMaterial( actor, material_num, material_id)
-
-
diff --git a/doc/bu/files/setactormaterialflag.txt b/doc/bu/files/setactormaterialflag.txt
deleted file mode 100644
index 18fbb8c..0000000
--- a/doc/bu/files/setactormaterialflag.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorMaterialFlag [RCBasic Doc]
-#header sub setActorMaterialFlag( actor, flag, flag_value)
-
-
diff --git a/doc/bu/files/setactormaterialtype.txt b/doc/bu/files/setactormaterialtype.txt
deleted file mode 100644
index 5289e2e..0000000
--- a/doc/bu/files/setactormaterialtype.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-#title setActorMaterialType [RCBasic Doc]
-#header sub setActorMaterialType( actor, material_type)
-
-Sets the material type of an actor material
-
-Note: This will set material 0. If your actor has more than one material you need to get a reference to the actor material with GetActorMaterial() to set them.
-
-Possible material types
-#list ul
-#li MATERIAL_TYPE_SOLID
-#li MATERIAL_TYPE_SOLID_2_LAYER
-#li MATERIAL_TYPE_LIGHTMAP
-#li MATERIAL_TYPE_LIGHTMAP_ADD
-#li MATERIAL_TYPE_LIGHTMAP_M2
-#li MATERIAL_TYPE_LIGHTMAP_M4
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING_M2
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING_M4
-#li MATERIAL_TYPE_DETAIL_MAP
-#li MATERIAL_TYPE_SPHERE_MAP
-#li MATERIAL_TYPE_REFLECTION_2_LAYER
-#li MATERIAL_TYPE_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL
-#li MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL_REF
-#li MATERIAL_TYPE_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_TRANSPARENT_REFLECTION_2_LAYER
-#li MATERIAL_TYPE_NORMAL_MAP_SOLID
-#li MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_PARALLAX_MAP_SOLID
-#li MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_ONETEXTURE_BLEND
-#li MATERIAL_TYPE_FORCE_32BIT
-#/list
-
-#ref GetActorMaterialType GetActorMaterial
diff --git a/doc/bu/files/setactormd2animation.txt b/doc/bu/files/setactormd2animation.txt
deleted file mode 100644
index 0edae0a..0000000
--- a/doc/bu/files/setactormd2animation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorMD2Animation [RCBasic Doc]
-#header sub SetActorMD2Animation( actor, anim )
-
-
diff --git a/doc/bu/files/setactormd2animationbyname.txt b/doc/bu/files/setactormd2animationbyname.txt
deleted file mode 100644
index 3e9a768..0000000
--- a/doc/bu/files/setactormd2animationbyname.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorMD2AnimationByName [RCBasic Doc]
-#header sub SetActorMD2AnimationByName( actor, anim_name$ )
-
-
diff --git a/doc/bu/files/setactorposition.txt b/doc/bu/files/setactorposition.txt
deleted file mode 100644
index 3abd393..0000000
--- a/doc/bu/files/setactorposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorPosition [RCBasic Doc]
-#header sub SetActorPosition( actor, x, y, z )
-
-
diff --git a/doc/bu/files/setactorrotation.txt b/doc/bu/files/setactorrotation.txt
deleted file mode 100644
index 649e2c3..0000000
--- a/doc/bu/files/setactorrotation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorRotation [RCBasic Doc]
-#header sub SetActorRotation( actor, x, y, z )
-
-
diff --git a/doc/bu/files/setactorscale.txt b/doc/bu/files/setactorscale.txt
deleted file mode 100644
index d8cadea..0000000
--- a/doc/bu/files/setactorscale.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorScale [RCBasic Doc]
-#header sub SetActorScale( actor, x, y, z )
-
-
diff --git a/doc/bu/files/setactorsleepthresholds.txt b/doc/bu/files/setactorsleepthresholds.txt
deleted file mode 100644
index 34ca887..0000000
--- a/doc/bu/files/setactorsleepthresholds.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorSleepThresholds [RCBasic Doc]
-#header sub setActorSleepThresholds( actor, linear, angular)
-
-
diff --git a/doc/bu/files/setactorsolid.txt b/doc/bu/files/setactorsolid.txt
deleted file mode 100644
index 2dcf2e2..0000000
--- a/doc/bu/files/setactorsolid.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorSolid [RCBasic Doc]
-#header sub SetActorSolid(actor, flag)
-
-
diff --git a/doc/bu/files/setactortexture.txt b/doc/bu/files/setactortexture.txt
deleted file mode 100644
index ad569e4..0000000
--- a/doc/bu/files/setactortexture.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setActorTexture [RCBasic Doc]
-#header sub setActorTexture( actor, layer, image_id)
-
-
diff --git a/doc/bu/files/setactorvisible.txt b/doc/bu/files/setactorvisible.txt
deleted file mode 100644
index 8750879..0000000
--- a/doc/bu/files/setactorvisible.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetActorVisible [RCBasic Doc]
-#header sub SetActorVisible( actor, flag )
-
-
diff --git a/doc/bu/files/setbilinearfilter.txt b/doc/bu/files/setbilinearfilter.txt
deleted file mode 100644
index 1c9c7d4..0000000
--- a/doc/bu/files/setbilinearfilter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setBilinearFilter [RCBasic Doc]
-#header sub setBilinearFilter( flag )
-
-
diff --git a/doc/bu/files/setblendmode.txt b/doc/bu/files/setblendmode.txt
deleted file mode 100644
index 66d69a8..0000000
--- a/doc/bu/files/setblendmode.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-#title SetBlendMode [RCBasic Doc]
-#header sub SetBlendMode( blend_mode )
-
-Sets the current blend mode
-
-Note: Only applies to 2D image drawing commands
-
-Possible Blend Modes
-#list ul
-#li BLEND_MODE_NONE
-#li BLEND_MODE_ADD
-#li BLEND_MODE_SUBTRACT
-#li BLEND_MODE_REVSUBTRACT
-#li BLEND_MODE_MIN
-#li BLEND_MODE_MAX
-#li BLEND_MODE_MIN_FACTOR
-#li BLEND_MODE_MAX_FACTOR
-#li BLEND_MODE_MIN_ALPHA
-#li BLEND_MODE_MAX_ALPHA
-#/list
-
-#ref SetBlendMode
-
diff --git a/doc/bu/files/setcameraaspectratio.txt b/doc/bu/files/setcameraaspectratio.txt
deleted file mode 100644
index f18b53b..0000000
--- a/doc/bu/files/setcameraaspectratio.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title SetCameraAspectRatio [RCBasic Doc]
-#header sub SetCameraAspectRatio( aspect )
-
-Sets the aspect ratio for the active canvas camera
-
-#ref GetCameraAspectRatio
diff --git a/doc/bu/files/setcamerafarvalue.txt b/doc/bu/files/setcamerafarvalue.txt
deleted file mode 100644
index b0fa625..0000000
--- a/doc/bu/files/setcamerafarvalue.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCameraFarValue [RCBasic Doc]
-#header sub SetCameraFarValue( zf )
-
-
diff --git a/doc/bu/files/setcamerafov.txt b/doc/bu/files/setcamerafov.txt
deleted file mode 100644
index 3e4ade2..0000000
--- a/doc/bu/files/setcamerafov.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCameraFOV [RCBasic Doc]
-#header sub SetCameraFOV( fov )
-
-
diff --git a/doc/bu/files/setcameranearvalue.txt b/doc/bu/files/setcameranearvalue.txt
deleted file mode 100644
index 56c78be..0000000
--- a/doc/bu/files/setcameranearvalue.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCameraNearValue [RCBasic Doc]
-#header sub SetCameraNearValue( zn )
-
-
diff --git a/doc/bu/files/setcameraposition.txt b/doc/bu/files/setcameraposition.txt
deleted file mode 100644
index 5c73b0b..0000000
--- a/doc/bu/files/setcameraposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCameraPosition [RCBasic Doc]
-#header sub SetCameraPosition( x, y, z)
-
-
diff --git a/doc/bu/files/setcamerarotation.txt b/doc/bu/files/setcamerarotation.txt
deleted file mode 100644
index f240439..0000000
--- a/doc/bu/files/setcamerarotation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCameraRotation [RCBasic Doc]
-#header sub SetCameraRotation( x, y, z)
-
-
diff --git a/doc/bu/files/setcanvas3d.txt b/doc/bu/files/setcanvas3d.txt
deleted file mode 100644
index 6a06036..0000000
--- a/doc/bu/files/setcanvas3d.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCanvas3D [RCBasic Doc]
-#header Sub SetCanvas3D(c_num, flag)
-
-
diff --git a/doc/bu/files/setcanvasalpha.txt b/doc/bu/files/setcanvasalpha.txt
deleted file mode 100644
index 7a26a70..0000000
--- a/doc/bu/files/setcanvasalpha.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCanvasAlpha [RCBasic Doc]
-#header sub SetCanvasAlpha(c_num, a)
-
-
diff --git a/doc/bu/files/setcanvascolormod.txt b/doc/bu/files/setcanvascolormod.txt
deleted file mode 100644
index 8f7ac62..0000000
--- a/doc/bu/files/setcanvascolormod.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCanvasColorMod [RCBasic Doc]
-#header sub SetCanvasColorMod(c_num, c)
-
-
diff --git a/doc/bu/files/setcanvasoffset.txt b/doc/bu/files/setcanvasoffset.txt
deleted file mode 100644
index 57a6d0c..0000000
--- a/doc/bu/files/setcanvasoffset.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCanvasOffset [RCBasic Doc]
-#header sub SetCanvasOffset(c_num, x, y)
-
-
diff --git a/doc/bu/files/setcanvasviewport.txt b/doc/bu/files/setcanvasviewport.txt
deleted file mode 100644
index 8b7afa6..0000000
--- a/doc/bu/files/setcanvasviewport.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title SetCanvasViewport [RCBasic Doc]
-#header sub SetCanvasViewport(cnum, x, y, w, h)
-
-Sets the position and size of a canvas viewport
-
-#ref GetCanvasViewport
-
diff --git a/doc/bu/files/setcanvasvisible.txt b/doc/bu/files/setcanvasvisible.txt
deleted file mode 100644
index 5b6aa06..0000000
--- a/doc/bu/files/setcanvasvisible.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetCanvasVisible [RCBasic Doc]
-#header sub SetCanvasVisible(c_num, flag)
-
-
diff --git a/doc/bu/files/setcanvasz.txt b/doc/bu/files/setcanvasz.txt
deleted file mode 100644
index ec72dd1..0000000
--- a/doc/bu/files/setcanvasz.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title SetCanvasZ [RCBasic Doc]
-#header sub SetCanvasZ(c_num, z)
-
-Sets the Canvas Z Order.
-
-Note: Canvases with a lower Z order are drawn first and those with higher values will be drawn on top
-
-#ref SetCanvasZ
diff --git a/doc/bu/files/setchanneldistance.txt b/doc/bu/files/setchanneldistance.txt
deleted file mode 100644
index cfb814d..0000000
--- a/doc/bu/files/setchanneldistance.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetChannelDistance [RCBasic Doc]
-#header function SetChannelDistance(channel, dist_value)
-
-
diff --git a/doc/bu/files/setchannelpanning.txt b/doc/bu/files/setchannelpanning.txt
deleted file mode 100644
index e4840ca..0000000
--- a/doc/bu/files/setchannelpanning.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetChannelPanning [RCBasic Doc]
-#header function SetChannelPanning(channel, left_value, right_value)
-
-
diff --git a/doc/bu/files/setchannelspaceposition.txt b/doc/bu/files/setchannelspaceposition.txt
deleted file mode 100644
index 53f1868..0000000
--- a/doc/bu/files/setchannelspaceposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetChannelSpacePosition [RCBasic Doc]
-#header function SetChannelSpacePosition(channel, angle, distance)
-
-
diff --git a/doc/bu/files/setchannelvolume.txt b/doc/bu/files/setchannelvolume.txt
deleted file mode 100644
index 1d66782..0000000
--- a/doc/bu/files/setchannelvolume.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetChannelVolume [RCBasic Doc]
-#header sub SetChannelVolume(channel, vol)
-
-
diff --git a/doc/bu/files/setclearcolor.txt b/doc/bu/files/setclearcolor.txt
deleted file mode 100644
index 3989e96..0000000
--- a/doc/bu/files/setclearcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetClearColor [RCBasic Doc]
-#header sub SetClearColor(c)
-
-
diff --git a/doc/bu/files/setclipboardtext.txt b/doc/bu/files/setclipboardtext.txt
deleted file mode 100644
index a188ec5..0000000
--- a/doc/bu/files/setclipboardtext.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetClipboardText [RCBasic Doc]
-#header sub SetClipboardText(txt$)
-
-
diff --git a/doc/bu/files/setcolor.txt b/doc/bu/files/setcolor.txt
deleted file mode 100644
index b292335..0000000
--- a/doc/bu/files/setcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetColor [RCBasic Doc]
-#header sub SetColor(c)
-
-
diff --git a/doc/bu/files/setconelimit.txt b/doc/bu/files/setconelimit.txt
deleted file mode 100644
index 9633284..0000000
--- a/doc/bu/files/setconelimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConeLimit [RCBasic Doc]
-#header sub setConeLimit( constraint_id, swingSpan1, swingSpan2, twistSpan, softness, bias_factor, relaxation_factor)
-
-
diff --git a/doc/bu/files/setconstraintangularonly.txt b/doc/bu/files/setconstraintangularonly.txt
deleted file mode 100644
index 804be68..0000000
--- a/doc/bu/files/setconstraintangularonly.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintAngularOnly [RCBasic Doc]
-#header sub setConstraintAngularOnly( constraint_id, flag)
-
-
diff --git a/doc/bu/files/setconstraintaxis.txt b/doc/bu/files/setconstraintaxis.txt
deleted file mode 100644
index 2f30401..0000000
--- a/doc/bu/files/setconstraintaxis.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintAxis [RCBasic Doc]
-#header sub setConstraintAxis( constraint_id, x, y, z)
-
-
diff --git a/doc/bu/files/setconstraintbreakingimpulsethreshold.txt b/doc/bu/files/setconstraintbreakingimpulsethreshold.txt
deleted file mode 100644
index 853ead1..0000000
--- a/doc/bu/files/setconstraintbreakingimpulsethreshold.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintBreakingImpulseThreshold [RCBasic Doc]
-#header sub setConstraintBreakingImpulseThreshold( constraint_id, threshold)
-
-
diff --git a/doc/bu/files/setconstraintdamping.txt b/doc/bu/files/setconstraintdamping.txt
deleted file mode 100644
index 7b6801c..0000000
--- a/doc/bu/files/setconstraintdamping.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintDamping [RCBasic Doc]
-#header sub setConstraintDamping( constraint_id, damping)
-
-
diff --git a/doc/bu/files/setconstraintdampingdirang.txt b/doc/bu/files/setconstraintdampingdirang.txt
deleted file mode 100644
index 2997440..0000000
--- a/doc/bu/files/setconstraintdampingdirang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintDampingDirAng [RCBasic Doc]
-#header sub setConstraintDampingDirAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintdampingdirlin.txt b/doc/bu/files/setconstraintdampingdirlin.txt
deleted file mode 100644
index c9ee750..0000000
--- a/doc/bu/files/setconstraintdampingdirlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintDampingDirLin [RCBasic Doc]
-#header sub setConstraintDampingDirLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintdampinglimang.txt b/doc/bu/files/setconstraintdampinglimang.txt
deleted file mode 100644
index ef342ae..0000000
--- a/doc/bu/files/setconstraintdampinglimang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintDampingLimAng [RCBasic Doc]
-#header sub setConstraintDampingLimAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintdampinglimlin.txt b/doc/bu/files/setconstraintdampinglimlin.txt
deleted file mode 100644
index 3401c22..0000000
--- a/doc/bu/files/setconstraintdampinglimlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintDampingLimLin [RCBasic Doc]
-#header sub setConstraintDampingLimLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintdampingorthoang.txt b/doc/bu/files/setconstraintdampingorthoang.txt
deleted file mode 100644
index 51615d2..0000000
--- a/doc/bu/files/setconstraintdampingorthoang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintDampingOrthoAng [RCBasic Doc]
-#header sub setConstraintDampingOrthoAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintdampingortholin.txt b/doc/bu/files/setconstraintdampingortholin.txt
deleted file mode 100644
index f07848a..0000000
--- a/doc/bu/files/setconstraintdampingortholin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintDampingOrthoLin [RCBasic Doc]
-#header sub setConstraintDampingOrthoLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintfixthresh.txt b/doc/bu/files/setconstraintfixthresh.txt
deleted file mode 100644
index a65a5dd..0000000
--- a/doc/bu/files/setconstraintfixthresh.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintFixThresh [RCBasic Doc]
-#header sub setConstraintFixThresh( constraint_id, fixThresh)
-
-
diff --git a/doc/bu/files/setconstraintframes.txt b/doc/bu/files/setconstraintframes.txt
deleted file mode 100644
index 554e0a8..0000000
--- a/doc/bu/files/setconstraintframes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintFrames [RCBasic Doc]
-#header sub setConstraintFrames( constraint_id, frameA_matrix, frameB_matrix)
-
-
diff --git a/doc/bu/files/setconstraintloweranglimit.txt b/doc/bu/files/setconstraintloweranglimit.txt
deleted file mode 100644
index 3881608..0000000
--- a/doc/bu/files/setconstraintloweranglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintLowerAngLimit [RCBasic Doc]
-#header sub setConstraintLowerAngLimit( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintlowerlinlimit.txt b/doc/bu/files/setconstraintlowerlinlimit.txt
deleted file mode 100644
index 3ad7a53..0000000
--- a/doc/bu/files/setconstraintlowerlinlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintLowerLinLimit [RCBasic Doc]
-#header sub setConstraintLowerLinLimit( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintpivota.txt b/doc/bu/files/setconstraintpivota.txt
deleted file mode 100644
index 48b87d8..0000000
--- a/doc/bu/files/setconstraintpivota.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintPivotA [RCBasic Doc]
-#header sub setConstraintPivotA( constraint_id, x, y, z)
-
-
diff --git a/doc/bu/files/setconstraintpivotb.txt b/doc/bu/files/setconstraintpivotb.txt
deleted file mode 100644
index b75cd89..0000000
--- a/doc/bu/files/setconstraintpivotb.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintPivotB [RCBasic Doc]
-#header sub setConstraintPivotB( constraint_id, x, y, z)
-
-
diff --git a/doc/bu/files/setconstraintrestitutiondirang.txt b/doc/bu/files/setconstraintrestitutiondirang.txt
deleted file mode 100644
index 0180b56..0000000
--- a/doc/bu/files/setconstraintrestitutiondirang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionDirAng [RCBasic Doc]
-#header sub setConstraintRestitutionDirAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintrestitutiondirlin.txt b/doc/bu/files/setconstraintrestitutiondirlin.txt
deleted file mode 100644
index b41b9bd..0000000
--- a/doc/bu/files/setconstraintrestitutiondirlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionDirLin [RCBasic Doc]
-#header sub setConstraintRestitutionDirLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintrestitutionlimang.txt b/doc/bu/files/setconstraintrestitutionlimang.txt
deleted file mode 100644
index bd0f13a..0000000
--- a/doc/bu/files/setconstraintrestitutionlimang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionLimAng [RCBasic Doc]
-#header sub setConstraintRestitutionLimAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintrestitutionlimlin.txt b/doc/bu/files/setconstraintrestitutionlimlin.txt
deleted file mode 100644
index 08ca5c5..0000000
--- a/doc/bu/files/setconstraintrestitutionlimlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionLimLin [RCBasic Doc]
-#header sub setConstraintRestitutionLimLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintrestitutionorthoang.txt b/doc/bu/files/setconstraintrestitutionorthoang.txt
deleted file mode 100644
index b61ff84..0000000
--- a/doc/bu/files/setconstraintrestitutionorthoang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionOrthoAng [RCBasic Doc]
-#header sub setConstraintRestitutionOrthoAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintrestitutionortholin.txt b/doc/bu/files/setconstraintrestitutionortholin.txt
deleted file mode 100644
index 823363e..0000000
--- a/doc/bu/files/setconstraintrestitutionortholin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionOrthoLin [RCBasic Doc]
-#header sub setConstraintRestitutionOrthoLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintsoftnessdirang.txt b/doc/bu/files/setconstraintsoftnessdirang.txt
deleted file mode 100644
index cadb266..0000000
--- a/doc/bu/files/setconstraintsoftnessdirang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessDirAng [RCBasic Doc]
-#header sub setConstraintSoftnessDirAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintsoftnessdirlin.txt b/doc/bu/files/setconstraintsoftnessdirlin.txt
deleted file mode 100644
index 3175a26..0000000
--- a/doc/bu/files/setconstraintsoftnessdirlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessDirLin [RCBasic Doc]
-#header sub setConstraintSoftnessDirLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintsoftnesslimang.txt b/doc/bu/files/setconstraintsoftnesslimang.txt
deleted file mode 100644
index d95a1dd..0000000
--- a/doc/bu/files/setconstraintsoftnesslimang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessLimAng [RCBasic Doc]
-#header sub setConstraintSoftnessLimAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintsoftnesslimlin.txt b/doc/bu/files/setconstraintsoftnesslimlin.txt
deleted file mode 100644
index 9ad9c87..0000000
--- a/doc/bu/files/setconstraintsoftnesslimlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessLimLin [RCBasic Doc]
-#header sub setConstraintSoftnessLimLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintsoftnessorthoang.txt b/doc/bu/files/setconstraintsoftnessorthoang.txt
deleted file mode 100644
index 7d6ec32..0000000
--- a/doc/bu/files/setconstraintsoftnessorthoang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessOrthoAng [RCBasic Doc]
-#header sub setConstraintSoftnessOrthoAng( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintsoftnessortholin.txt b/doc/bu/files/setconstraintsoftnessortholin.txt
deleted file mode 100644
index aa87256..0000000
--- a/doc/bu/files/setconstraintsoftnessortholin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessOrthoLin [RCBasic Doc]
-#header sub setConstraintSoftnessOrthoLin( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintsolveriterations.txt b/doc/bu/files/setconstraintsolveriterations.txt
deleted file mode 100644
index 6c375bb..0000000
--- a/doc/bu/files/setconstraintsolveriterations.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSolverIterations [RCBasic Doc]
-#header sub setConstraintSolverIterations( constraint_id, num)
-
-
diff --git a/doc/bu/files/setconstraintupperanglimit.txt b/doc/bu/files/setconstraintupperanglimit.txt
deleted file mode 100644
index da069a7..0000000
--- a/doc/bu/files/setconstraintupperanglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintUpperAngLimit [RCBasic Doc]
-#header sub setConstraintUpperAngLimit( constraint_id, n)
-
-
diff --git a/doc/bu/files/setconstraintupperlinlimit.txt b/doc/bu/files/setconstraintupperlinlimit.txt
deleted file mode 100644
index b896f16..0000000
--- a/doc/bu/files/setconstraintupperlinlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintUpperLinLimit [RCBasic Doc]
-#header sub setConstraintUpperLinLimit( constraint_id, n)
-
-
diff --git a/doc/bu/files/setenv.txt b/doc/bu/files/setenv.txt
deleted file mode 100644
index ee2ad06..0000000
--- a/doc/bu/files/setenv.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetEnv [RCBasic Doc]
-#header sub SetEnv(var$, value$)
-
-
diff --git a/doc/bu/files/setfont.txt b/doc/bu/files/setfont.txt
deleted file mode 100644
index 0bdc24d..0000000
--- a/doc/bu/files/setfont.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetFont [RCBasic Doc]
-#header sub SetFont(slot)
-
-
diff --git a/doc/bu/files/setgravity3d.txt b/doc/bu/files/setgravity3d.txt
deleted file mode 100644
index 4d5fd88..0000000
--- a/doc/bu/files/setgravity3d.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetGravity3D [RCBasic Doc]
-#header sub SetGravity3D(x, y, z)
-
-
diff --git a/doc/bu/files/sethingelimit.txt b/doc/bu/files/sethingelimit.txt
deleted file mode 100644
index 4b2264b..0000000
--- a/doc/bu/files/sethingelimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setHingeLimit [RCBasic Doc]
-#header sub setHingeLimit( constraint_id, low, high, softness, bias_factor, relaxation_factor)
-
-
diff --git a/doc/bu/files/setidentitymatrix.txt b/doc/bu/files/setidentitymatrix.txt
deleted file mode 100644
index b0f6998..0000000
--- a/doc/bu/files/setidentitymatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetIdentityMatrix [RCBasic Doc]
-#header sub SetIdentityMatrix(mA, n)
-
-
diff --git a/doc/bu/files/setimagealpha.txt b/doc/bu/files/setimagealpha.txt
deleted file mode 100644
index 6f1f986..0000000
--- a/doc/bu/files/setimagealpha.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetImageAlpha [RCBasic Doc]
-#header sub SetImageAlpha(slot, a)
-
-
diff --git a/doc/bu/files/setimagecolormod.txt b/doc/bu/files/setimagecolormod.txt
deleted file mode 100644
index 7a0fc77..0000000
--- a/doc/bu/files/setimagecolormod.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetImageColorMod [RCBasic Doc]
-#header sub SetImageColorMod(slot, c)
-
-
diff --git a/doc/bu/files/setlightambientcolor.txt b/doc/bu/files/setlightambientcolor.txt
deleted file mode 100644
index 8ebec04..0000000
--- a/doc/bu/files/setlightambientcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetLightAmbientColor [RCBasic Doc]
-#header sub SetLightAmbientColor( actor, color )
-
-
diff --git a/doc/bu/files/setlightattenuation.txt b/doc/bu/files/setlightattenuation.txt
deleted file mode 100644
index 2bcba8d..0000000
--- a/doc/bu/files/setlightattenuation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetLightAttenuation [RCBasic Doc]
-#header sub SetLightAttenuation( actor, l_constant, l_linear, l_quadratic )
-
-
diff --git a/doc/bu/files/setlightdiffusecolor.txt b/doc/bu/files/setlightdiffusecolor.txt
deleted file mode 100644
index b8dcc53..0000000
--- a/doc/bu/files/setlightdiffusecolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetLightDiffuseColor [RCBasic Doc]
-#header sub SetLightDiffuseColor( actor, color )
-
-
diff --git a/doc/bu/files/setlightfalloff.txt b/doc/bu/files/setlightfalloff.txt
deleted file mode 100644
index 0118536..0000000
--- a/doc/bu/files/setlightfalloff.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetLightFalloff [RCBasic Doc]
-#header sub SetLightFalloff( actor, falloff )
-
-
diff --git a/doc/bu/files/setlightinnercone.txt b/doc/bu/files/setlightinnercone.txt
deleted file mode 100644
index 8ac95c8..0000000
--- a/doc/bu/files/setlightinnercone.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetLightInnerCone [RCBasic Doc]
-#header sub SetLightInnerCone( actor, angle )
-
-
diff --git a/doc/bu/files/setlightoutercone.txt b/doc/bu/files/setlightoutercone.txt
deleted file mode 100644
index 8adb2a4..0000000
--- a/doc/bu/files/setlightoutercone.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetLightOuterCone [RCBasic Doc]
-#header sub SetLightOuterCone( actor, angle)
-
-
diff --git a/doc/bu/files/setlightradius.txt b/doc/bu/files/setlightradius.txt
deleted file mode 100644
index df66c2c..0000000
--- a/doc/bu/files/setlightradius.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title SetLightRadius [RCBasic Doc]
-#header sub SetLightRadius( actor, radius )
-
-Sets the radius of a light
-
-#ref GetLightRadius
diff --git a/doc/bu/files/setlightshadowcast.txt b/doc/bu/files/setlightshadowcast.txt
deleted file mode 100644
index 596a0e2..0000000
--- a/doc/bu/files/setlightshadowcast.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setLightShadowCast [RCBasic Doc]
-#header sub setLightShadowCast( actor, flag )
-
-
diff --git a/doc/bu/files/setlightspecularcolor.txt b/doc/bu/files/setlightspecularcolor.txt
deleted file mode 100644
index 2c4f4ff..0000000
--- a/doc/bu/files/setlightspecularcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetLightSpecularColor [RCBasic Doc]
-#header sub SetLightSpecularColor( actor, color )
-
-Sets the specular color of a light
diff --git a/doc/bu/files/setlighttype.txt b/doc/bu/files/setlighttype.txt
deleted file mode 100644
index c379a6a..0000000
--- a/doc/bu/files/setlighttype.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-#title setLightType [RCBasic Doc]
-#header sub setLightType( actor, light_type )
-
-Sets the type of light
-
-Possible Light Types
-#list ul
-#li LIGHT_TYPE_POINT
-#li LIGHT_TYPE_POINT
-#li LIGHT_TYPE_POINT
-#/light
-
-#ref SetLightType
-
diff --git a/doc/bu/files/setmaterialambientcolor.txt b/doc/bu/files/setmaterialambientcolor.txt
deleted file mode 100644
index d1bd02f..0000000
--- a/doc/bu/files/setmaterialambientcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialAmbientColor [RCBasic Doc]
-#header sub setMaterialAmbientColor( material_id, color)
-
-Sets the ambient color of a material
diff --git a/doc/bu/files/setmaterialantialiasing.txt b/doc/bu/files/setmaterialantialiasing.txt
deleted file mode 100644
index 623d69a..0000000
--- a/doc/bu/files/setmaterialantialiasing.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-#title setMaterialAntiAliasing [RCBasic Doc]
-#header sub setMaterialAntiAliasing( material_id, aa)
-
-Sets the anti-aliasing mode for the material
-
-Possible modes returned
-#list
-#li AA_MODE_OFF=0,
-#li AA_MODE_SIMPLE=1,
-#li AA_MODE_QUALITY=3,
-#li AA_MODE_LINE_SMOOTH=4,
-#li AA_MODE_POINT_SMOOTH=8,
-#li AA_MODE_FULL_BASIC=15,
-#li AA_MODE_ALPHA_TO_COVERAGE=16
-#/list
-
-#ref GetMaterialAntiAliasing
diff --git a/doc/bu/files/setmaterialbackfaceculling.txt b/doc/bu/files/setmaterialbackfaceculling.txt
deleted file mode 100644
index 5d4e682..0000000
--- a/doc/bu/files/setmaterialbackfaceculling.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title setMaterialBackfaceCulling [RCBasic Doc]
-#header sub setMaterialBackfaceCulling( material_id, flag)
-
-Enables or disables material backface culling
-
-#ref GetMaterialBackfaceCulling
diff --git a/doc/bu/files/setmaterialblendfactor.txt b/doc/bu/files/setmaterialblendfactor.txt
deleted file mode 100644
index eb61c38..0000000
--- a/doc/bu/files/setmaterialblendfactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialBlendFactor [RCBasic Doc]
-#header sub setMaterialBlendFactor( material_id, bf)
-
-
diff --git a/doc/bu/files/setmaterialblendmode.txt b/doc/bu/files/setmaterialblendmode.txt
deleted file mode 100644
index 15f7c6c..0000000
--- a/doc/bu/files/setmaterialblendmode.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-#title setMaterialBlendMode [RCBasic Doc]
-#header sub setMaterialBlendMode( material_id, blend_mode)
-
-Sets a material's blend mode
-
-Possible Blend Modes
-#list ul
-#li BLEND_MODE_NONE
-#li BLEND_MODE_ADD
-#li BLEND_MODE_SUBTRACT
-#li BLEND_MODE_REVSUBTRACT
-#li BLEND_MODE_MIN
-#li BLEND_MODE_MAX
-#li BLEND_MODE_MIN_FACTOR
-#li BLEND_MODE_MAX_FACTOR
-#li BLEND_MODE_MIN_ALPHA
-#li BLEND_MODE_MAX_ALPHA
-#/list
-
-#ref SetMaterialBlendMode
-
diff --git a/doc/bu/files/setmaterialcolormask.txt b/doc/bu/files/setmaterialcolormask.txt
deleted file mode 100644
index 7a496c8..0000000
--- a/doc/bu/files/setmaterialcolormask.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialColorMask [RCBasic Doc]
-#header sub setMaterialColorMask( material_id, color_mask)
-
-
diff --git a/doc/bu/files/setmaterialcolormode.txt b/doc/bu/files/setmaterialcolormode.txt
deleted file mode 100644
index 689374e..0000000
--- a/doc/bu/files/setmaterialcolormode.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-#title setMaterialColorMode [RCBasic Doc]
-#header sub setMaterialColorMode( material_id, color_mode)
-
-Sets the color mode of a material
-
-Possible modes
-#list ul
-#li COLOR_MODE_NONE
-#li COLOR_MODE_DIFFUSE
-#li COLOR_MODE_AMBIENT
-#li COLOR_MODE_EMISSIVE
-#li COLOR_MODE_SPECULAR
-#li COLOR_MODE_DIFFUSE_AND_AMBIENT
-#/list
-
-#ref GetMaterialColorMode
diff --git a/doc/bu/files/setmaterialdiffusecolor.txt b/doc/bu/files/setmaterialdiffusecolor.txt
deleted file mode 100644
index 559876e..0000000
--- a/doc/bu/files/setmaterialdiffusecolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialDiffuseColor [RCBasic Doc]
-#header sub setMaterialDiffuseColor( material_id, color)
-
-
diff --git a/doc/bu/files/setmaterialemissivecolor.txt b/doc/bu/files/setmaterialemissivecolor.txt
deleted file mode 100644
index 3e4419f..0000000
--- a/doc/bu/files/setmaterialemissivecolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialEmissiveColor [RCBasic Doc]
-#header sub setMaterialEmissiveColor( material_id, color)
-
-
diff --git a/doc/bu/files/setmaterialflag.txt b/doc/bu/files/setmaterialflag.txt
deleted file mode 100644
index 197b44b..0000000
--- a/doc/bu/files/setmaterialflag.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-#title setMaterialFlag [RCBasic Doc]
-#header sub setMaterialFlag( material_id, material_flag, f_value)
-
-Sets the value of the specified material flag
-
-Possible values for flag:
-#list
-#li MATERIAL_FLAG_WIREFRAME
-#li MATERIAL_FLAG_POINTCLOUD
-#li MATERIAL_FLAG_GOURAUD_SHADING
-#li MATERIAL_FLAG_LIGHTING
-#li MATERIAL_FLAG_ZBUFFER
-#li MATERIAL_FLAG_ZWRITE_ENABLE
-#li MATERIAL_FLAG_BACK_FACE_CULLING
-#li MATERIAL_FLAG_FRONT_FACE_CULLING
-#li MATERIAL_FLAG_BILINEAR_FILTER
-#li MATERIAL_FLAG_TRILINEAR_FILTER
-#li MATERIAL_FLAG_ANISOTROPIC_FILTER
-#li MATERIAL_FLAG_FOG_ENABLE
-#li MATERIAL_FLAG_NORMALIZE_NORMALS
-#li MATERIAL_FLAG_TEXTURE_WRAP
-#li MATERIAL_FLAG_ANTI_ALIASING
-#li MATERIAL_FLAG_COLOR_MASK
-#li MATERIAL_FLAG_COLOR_MATERIAL
-#li MATERIAL_FLAG_USE_MIP_MAPS
-#li MATERIAL_FLAG_BLEND_OPERATION
-#li MATERIAL_FLAG_POLYGON_OFFSET
-#/list
-
-#ref GetMaterialFlag GetActorMaterialFlag
diff --git a/doc/bu/files/setmaterialfog.txt b/doc/bu/files/setmaterialfog.txt
deleted file mode 100644
index b16170d..0000000
--- a/doc/bu/files/setmaterialfog.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialFog [RCBasic Doc]
-#header sub setMaterialFog( material_id, flag)
-
-
diff --git a/doc/bu/files/setmaterialfrontfaceculling.txt b/doc/bu/files/setmaterialfrontfaceculling.txt
deleted file mode 100644
index d14c0dd..0000000
--- a/doc/bu/files/setmaterialfrontfaceculling.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialFrontfaceCulling [RCBasic Doc]
-#header sub setMaterialFrontfaceCulling( material_id, flag)
-
-
diff --git a/doc/bu/files/setmaterialgouraudshading.txt b/doc/bu/files/setmaterialgouraudshading.txt
deleted file mode 100644
index 3589db8..0000000
--- a/doc/bu/files/setmaterialgouraudshading.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialGouraudShading [RCBasic Doc]
-#header sub setMaterialGouraudShading( material_id, flag)
-
-
diff --git a/doc/bu/files/setmateriallighting.txt b/doc/bu/files/setmateriallighting.txt
deleted file mode 100644
index 25b2b24..0000000
--- a/doc/bu/files/setmateriallighting.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialLighting [RCBasic Doc]
-#header sub setMaterialLighting( material_id, flag)
-
-
diff --git a/doc/bu/files/setmaterialnormalize.txt b/doc/bu/files/setmaterialnormalize.txt
deleted file mode 100644
index 7ceb8f4..0000000
--- a/doc/bu/files/setmaterialnormalize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialNormalize [RCBasic Doc]
-#header sub setMaterialNormalize( material_id, flag)
-
-
diff --git a/doc/bu/files/setmaterialpointcloud.txt b/doc/bu/files/setmaterialpointcloud.txt
deleted file mode 100644
index 28cba47..0000000
--- a/doc/bu/files/setmaterialpointcloud.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialPointCloud [RCBasic Doc]
-#header sub setMaterialPointCloud( material_id, flag)
-
-
diff --git a/doc/bu/files/setmaterialshininess.txt b/doc/bu/files/setmaterialshininess.txt
deleted file mode 100644
index 7dcae4e..0000000
--- a/doc/bu/files/setmaterialshininess.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialShininess [RCBasic Doc]
-#header sub setMaterialShininess( material_id, shininess)
-
-
diff --git a/doc/bu/files/setmaterialspecularcolor.txt b/doc/bu/files/setmaterialspecularcolor.txt
deleted file mode 100644
index 791dd76..0000000
--- a/doc/bu/files/setmaterialspecularcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialSpecularColor [RCBasic Doc]
-#header sub setMaterialSpecularColor( material_id, color)
-
-
diff --git a/doc/bu/files/setmaterialtexture.txt b/doc/bu/files/setmaterialtexture.txt
deleted file mode 100644
index 67085bd..0000000
--- a/doc/bu/files/setmaterialtexture.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialTexture [RCBasic Doc]
-#header sub setMaterialTexture( material_id, level, img_id)
-
-
diff --git a/doc/bu/files/setmaterialtexturecanvas.txt b/doc/bu/files/setmaterialtexturecanvas.txt
deleted file mode 100644
index ea2817f..0000000
--- a/doc/bu/files/setmaterialtexturecanvas.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialTextureCanvas [RCBasic Doc]
-#header sub setMaterialTextureCanvas( material_id, level, canvas_id)
-
-
diff --git a/doc/bu/files/setmaterialthickness.txt b/doc/bu/files/setmaterialthickness.txt
deleted file mode 100644
index d19cb52..0000000
--- a/doc/bu/files/setmaterialthickness.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialThickness [RCBasic Doc]
-#header sub setMaterialThickness( material_id, thickness)
-
-
diff --git a/doc/bu/files/setmaterialtype.txt b/doc/bu/files/setmaterialtype.txt
deleted file mode 100644
index 01b4013..0000000
--- a/doc/bu/files/setmaterialtype.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-#title SetMaterialType [RCBasic Doc]
-#header sub SetMaterialType( material_id, mat_type)
-
-Sets the material type
-
-Possible material types
-#list ul
-#li MATERIAL_TYPE_SOLID
-#li MATERIAL_TYPE_SOLID_2_LAYER
-#li MATERIAL_TYPE_LIGHTMAP
-#li MATERIAL_TYPE_LIGHTMAP_ADD
-#li MATERIAL_TYPE_LIGHTMAP_M2
-#li MATERIAL_TYPE_LIGHTMAP_M4
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING_M2
-#li MATERIAL_TYPE_LIGHTMAP_LIGHTING_M4
-#li MATERIAL_TYPE_DETAIL_MAP
-#li MATERIAL_TYPE_SPHERE_MAP
-#li MATERIAL_TYPE_REFLECTION_2_LAYER
-#li MATERIAL_TYPE_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL
-#li MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL_REF
-#li MATERIAL_TYPE_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_TRANSPARENT_REFLECTION_2_LAYER
-#li MATERIAL_TYPE_NORMAL_MAP_SOLID
-#li MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_PARALLAX_MAP_SOLID
-#li MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
-#li MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
-#li MATERIAL_TYPE_ONETEXTURE_BLEND
-#li MATERIAL_TYPE_FORCE_32BIT
-#/list
-
-#ref GetMaterialType
diff --git a/doc/bu/files/setmaterialwireframe.txt b/doc/bu/files/setmaterialwireframe.txt
deleted file mode 100644
index e2bf12c..0000000
--- a/doc/bu/files/setmaterialwireframe.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setMaterialWireframe [RCBasic Doc]
-#header sub setMaterialWireframe( material_id, flag)
-
-
diff --git a/doc/bu/files/setmatrixrotation.txt b/doc/bu/files/setmatrixrotation.txt
deleted file mode 100644
index 907d48a..0000000
--- a/doc/bu/files/setmatrixrotation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetMatrixRotation [RCBasic Doc]
-#header sub SetMatrixRotation( mA, x, y, z )
-
-
diff --git a/doc/bu/files/setmatrixscale.txt b/doc/bu/files/setmatrixscale.txt
deleted file mode 100644
index e362946..0000000
--- a/doc/bu/files/setmatrixscale.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetMatrixScale [RCBasic Doc]
-#header sub SetMatrixScale( mA, x, y, z )
-
-
diff --git a/doc/bu/files/setmatrixtranslation.txt b/doc/bu/files/setmatrixtranslation.txt
deleted file mode 100644
index 55c1e8f..0000000
--- a/doc/bu/files/setmatrixtranslation.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetMatrixTranslation [RCBasic Doc]
-#header sub SetMatrixTranslation( mA, x, y, z )
-
-
diff --git a/doc/bu/files/setmatrixvalue.txt b/doc/bu/files/setmatrixvalue.txt
deleted file mode 100644
index 12bb912..0000000
--- a/doc/bu/files/setmatrixvalue.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetMatrixValue [RCBasic Doc]
-#header sub SetMatrixValue(mA, r, c, v)
-
-
diff --git a/doc/bu/files/setmouserelative.txt b/doc/bu/files/setmouserelative.txt
deleted file mode 100644
index 5b62174..0000000
--- a/doc/bu/files/setmouserelative.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetMouseRelative [RCBasic Doc]
-#header sub SetMouseRelative(flag)
-
-
diff --git a/doc/bu/files/setmousezone.txt b/doc/bu/files/setmousezone.txt
deleted file mode 100644
index a1c3b94..0000000
--- a/doc/bu/files/setmousezone.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetMouseZone [RCBasic Doc]
-#header sub SetMouseZone(x, y, w, h)
-
-
diff --git a/doc/bu/files/setmusicposition.txt b/doc/bu/files/setmusicposition.txt
deleted file mode 100644
index 7421763..0000000
--- a/doc/bu/files/setmusicposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetMusicPosition [RCBasic Doc]
-#header sub SetMusicPosition(pos)
-
-
diff --git a/doc/bu/files/setmusicvolume.txt b/doc/bu/files/setmusicvolume.txt
deleted file mode 100644
index 65258be..0000000
--- a/doc/bu/files/setmusicvolume.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetMusicVolume [RCBasic Doc]
-#header sub SetMusicVolume(vol)
-
-
diff --git a/doc/bu/files/setparticlebox.txt b/doc/bu/files/setparticlebox.txt
deleted file mode 100644
index 80280b5..0000000
--- a/doc/bu/files/setparticlebox.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleBox [RCBasic Doc]
-#header sub setParticleBox( actor, min_x, min_y, min_z, max_x, max_y, max_z)
-
-
diff --git a/doc/bu/files/setparticlecenter.txt b/doc/bu/files/setparticlecenter.txt
deleted file mode 100644
index c7b9b99..0000000
--- a/doc/bu/files/setparticlecenter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleCenter [RCBasic Doc]
-#header sub setParticleCenter( actor, x, y, z)
-
-
diff --git a/doc/bu/files/setparticledirection.txt b/doc/bu/files/setparticledirection.txt
deleted file mode 100644
index 065a803..0000000
--- a/doc/bu/files/setparticledirection.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleDirection [RCBasic Doc]
-#header sub setParticleDirection( actor, x, y, z)
-
-
diff --git a/doc/bu/files/setparticlelength.txt b/doc/bu/files/setparticlelength.txt
deleted file mode 100644
index f603a87..0000000
--- a/doc/bu/files/setparticlelength.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleLength [RCBasic Doc]
-#header sub setParticleLength( actor, p_len)
-
-
diff --git a/doc/bu/files/setparticlemaxangle.txt b/doc/bu/files/setparticlemaxangle.txt
deleted file mode 100644
index f84c0fc..0000000
--- a/doc/bu/files/setparticlemaxangle.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMaxAngle [RCBasic Doc]
-#header sub setParticleMaxAngle( actor, maxAngle)
-
-
diff --git a/doc/bu/files/setparticlemaxlife.txt b/doc/bu/files/setparticlemaxlife.txt
deleted file mode 100644
index a448aa7..0000000
--- a/doc/bu/files/setparticlemaxlife.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMaxLife [RCBasic Doc]
-#header sub setParticleMaxLife( actor, maxLife)
-
-
diff --git a/doc/bu/files/setparticlemaxparticlespersecond.txt b/doc/bu/files/setparticlemaxparticlespersecond.txt
deleted file mode 100644
index 69a3e4c..0000000
--- a/doc/bu/files/setparticlemaxparticlespersecond.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMaxParticlesPerSecond [RCBasic Doc]
-#header sub setParticleMaxParticlesPerSecond( actor, maxParticlesPerSecond)
-
-
diff --git a/doc/bu/files/setparticlemaxstartcolor.txt b/doc/bu/files/setparticlemaxstartcolor.txt
deleted file mode 100644
index 387b1a5..0000000
--- a/doc/bu/files/setparticlemaxstartcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMaxStartColor [RCBasic Doc]
-#header sub setParticleMaxStartColor( actor, color)
-
-
diff --git a/doc/bu/files/setparticlemaxstartsize.txt b/doc/bu/files/setparticlemaxstartsize.txt
deleted file mode 100644
index 0fbc608..0000000
--- a/doc/bu/files/setparticlemaxstartsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMaxStartSize [RCBasic Doc]
-#header sub setParticleMaxStartSize( actor, w, h)
-
-
diff --git a/doc/bu/files/setparticlemesh.txt b/doc/bu/files/setparticlemesh.txt
deleted file mode 100644
index e82f524..0000000
--- a/doc/bu/files/setparticlemesh.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMesh [RCBasic Doc]
-#header sub setParticleMesh( actor, mesh)
-
-
diff --git a/doc/bu/files/setparticleminlife.txt b/doc/bu/files/setparticleminlife.txt
deleted file mode 100644
index 446e5af..0000000
--- a/doc/bu/files/setparticleminlife.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMinLife [RCBasic Doc]
-#header sub setParticleMinLife( actor, minLife)
-
-
diff --git a/doc/bu/files/setparticleminparticlespersecond.txt b/doc/bu/files/setparticleminparticlespersecond.txt
deleted file mode 100644
index 00d9e3c..0000000
--- a/doc/bu/files/setparticleminparticlespersecond.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMinParticlesPerSecond [RCBasic Doc]
-#header sub setParticleMinParticlesPerSecond( actor, minParticlesPerSecond)
-
-
diff --git a/doc/bu/files/setparticleminstartcolor.txt b/doc/bu/files/setparticleminstartcolor.txt
deleted file mode 100644
index c6d9d8d..0000000
--- a/doc/bu/files/setparticleminstartcolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMinStartColor [RCBasic Doc]
-#header sub setParticleMinStartColor( actor, color)
-
-
diff --git a/doc/bu/files/setparticleminstartsize.txt b/doc/bu/files/setparticleminstartsize.txt
deleted file mode 100644
index 10491eb..0000000
--- a/doc/bu/files/setparticleminstartsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleMinStartSize [RCBasic Doc]
-#header sub setParticleMinStartSize( actor, w, h)
-
-
diff --git a/doc/bu/files/setparticlenormal.txt b/doc/bu/files/setparticlenormal.txt
deleted file mode 100644
index 1d7a7d6..0000000
--- a/doc/bu/files/setparticlenormal.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleNormal [RCBasic Doc]
-#header sub setParticleNormal( actor, x, y, z)
-
-
diff --git a/doc/bu/files/setparticlenormaldirectionmod.txt b/doc/bu/files/setparticlenormaldirectionmod.txt
deleted file mode 100644
index c5bd775..0000000
--- a/doc/bu/files/setparticlenormaldirectionmod.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleNormalDirectionMod [RCBasic Doc]
-#header sub setParticleNormalDirectionMod( actor, nd_mod)
-
-
diff --git a/doc/bu/files/setparticleradius.txt b/doc/bu/files/setparticleradius.txt
deleted file mode 100644
index 5c72d42..0000000
--- a/doc/bu/files/setparticleradius.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleRadius [RCBasic Doc]
-#header sub setParticleRadius( actor, radius)
-
-
diff --git a/doc/bu/files/setparticleringthickness.txt b/doc/bu/files/setparticleringthickness.txt
deleted file mode 100644
index 2a675d5..0000000
--- a/doc/bu/files/setparticleringthickness.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setParticleRingThickness [RCBasic Doc]
-#header sub setParticleRingThickness( actor, ringThickness)
-
-
diff --git a/doc/bu/files/setsoundchannels.txt b/doc/bu/files/setsoundchannels.txt
deleted file mode 100644
index 47ed129..0000000
--- a/doc/bu/files/setsoundchannels.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetSoundChannels [RCBasic Doc]
-#header sub SetSoundChannels(max_channels)
-
-
diff --git a/doc/bu/files/setsoundvolume.txt b/doc/bu/files/setsoundvolume.txt
deleted file mode 100644
index 67afee4..0000000
--- a/doc/bu/files/setsoundvolume.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetSoundVolume [RCBasic Doc]
-#header sub SetSoundVolume(slot, vol)
-
-
diff --git a/doc/bu/files/setspriteposition.txt b/doc/bu/files/setspriteposition.txt
deleted file mode 100644
index 531db66..0000000
--- a/doc/bu/files/setspriteposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetSpritePosition [RCBasic Doc]
-#header Sub SetSpritePosition( sprite, x, y )
-
-
diff --git a/doc/bu/files/setterraincameramovementdelta.txt b/doc/bu/files/setterraincameramovementdelta.txt
deleted file mode 100644
index 3a0d362..0000000
--- a/doc/bu/files/setterraincameramovementdelta.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetTerrainCameraMovementDelta [RCBasic Doc]
-#header sub SetTerrainCameraMovementDelta( actor, delta )
-
-
diff --git a/doc/bu/files/setterraincamerarotationdelta.txt b/doc/bu/files/setterraincamerarotationdelta.txt
deleted file mode 100644
index 425b0f3..0000000
--- a/doc/bu/files/setterraincamerarotationdelta.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetTerrainCameraRotationDelta [RCBasic Doc]
-#header sub SetTerrainCameraRotationDelta( actor, delta )
-
-
diff --git a/doc/bu/files/setterrainloddistance.txt b/doc/bu/files/setterrainloddistance.txt
deleted file mode 100644
index f9b6f0d..0000000
--- a/doc/bu/files/setterrainloddistance.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetTerrainLODDistance [RCBasic Doc]
-#header sub SetTerrainLODDistance( actor, LOD, distance )
-
-
diff --git a/doc/bu/files/setterrainpatchlod.txt b/doc/bu/files/setterrainpatchlod.txt
deleted file mode 100644
index 34d7d8d..0000000
--- a/doc/bu/files/setterrainpatchlod.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetTerrainPatchLOD [RCBasic Doc]
-#header sub SetTerrainPatchLOD( actor, patchX, patchZ, LOD )
-
-
diff --git a/doc/bu/files/setvideodrawrect.txt b/doc/bu/files/setvideodrawrect.txt
deleted file mode 100644
index b65212c..0000000
--- a/doc/bu/files/setvideodrawrect.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetVideoDrawRect [RCBasic Doc]
-#header sub SetVideoDrawRect(x, y, w, h)
-
-
diff --git a/doc/bu/files/setvideoposition.txt b/doc/bu/files/setvideoposition.txt
deleted file mode 100644
index 590eca2..0000000
--- a/doc/bu/files/setvideoposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetVideoPosition [RCBasic Doc]
-#header sub SetVideoPosition(pos)
-
-
diff --git a/doc/bu/files/setvideovolume.txt b/doc/bu/files/setvideovolume.txt
deleted file mode 100644
index 371c675..0000000
--- a/doc/bu/files/setvideovolume.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetVideoVolume [RCBasic Doc]
-#header sub SetVideoVolume( vol )
-
-
diff --git a/doc/bu/files/setwatercolor.txt b/doc/bu/files/setwatercolor.txt
deleted file mode 100644
index 77c2e57..0000000
--- a/doc/bu/files/setwatercolor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setWaterColor [RCBasic Doc]
-#header sub setWaterColor( actor, c)
-
-
diff --git a/doc/bu/files/setwatercolorblendfactor.txt b/doc/bu/files/setwatercolorblendfactor.txt
deleted file mode 100644
index f2c07a6..0000000
--- a/doc/bu/files/setwatercolorblendfactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setWaterColorBlendFactor [RCBasic Doc]
-#header sub setWaterColorBlendFactor( actor, cbfactor)
-
-
diff --git a/doc/bu/files/setwaterwaveheight.txt b/doc/bu/files/setwaterwaveheight.txt
deleted file mode 100644
index 631b22d..0000000
--- a/doc/bu/files/setwaterwaveheight.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setWaterWaveHeight [RCBasic Doc]
-#header sub setWaterWaveHeight( actor, h)
-
-
diff --git a/doc/bu/files/setwaterwinddirection.txt b/doc/bu/files/setwaterwinddirection.txt
deleted file mode 100644
index bda16fe..0000000
--- a/doc/bu/files/setwaterwinddirection.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setWaterWindDirection [RCBasic Doc]
-#header sub setWaterWindDirection( actor, x, z)
-
-
diff --git a/doc/bu/files/setwaterwindforce.txt b/doc/bu/files/setwaterwindforce.txt
deleted file mode 100644
index fd95393..0000000
--- a/doc/bu/files/setwaterwindforce.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setWaterWindForce [RCBasic Doc]
-#header sub setWaterWindForce( actor, f)
-
-
diff --git a/doc/bu/files/setwindowalwaysontop.txt b/doc/bu/files/setwindowalwaysontop.txt
deleted file mode 100644
index 9b517ca..0000000
--- a/doc/bu/files/setwindowalwaysontop.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowAlwaysOnTop [RCBasic Doc]
-#header sub SetWindowAlwaysOnTop( flag )
-
-
diff --git a/doc/bu/files/setwindowautoclose.txt b/doc/bu/files/setwindowautoclose.txt
deleted file mode 100644
index 37a8e5a..0000000
--- a/doc/bu/files/setwindowautoclose.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowAutoClose [RCBasic Doc]
-#header sub SetWindowAutoClose( exit_on_close )
-
-
diff --git a/doc/bu/files/setwindowbordered.txt b/doc/bu/files/setwindowbordered.txt
deleted file mode 100644
index b3dbd72..0000000
--- a/doc/bu/files/setwindowbordered.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowBordered [RCBasic Doc]
-#header sub SetWindowBordered( flag)
-
-
diff --git a/doc/bu/files/setwindowfullscreen.txt b/doc/bu/files/setwindowfullscreen.txt
deleted file mode 100644
index bbd3dab..0000000
--- a/doc/bu/files/setwindowfullscreen.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowFullscreen [RCBasic Doc]
-#header sub SetWindowFullscreen( flag)
-
-
diff --git a/doc/bu/files/setwindowicon.txt b/doc/bu/files/setwindowicon.txt
deleted file mode 100644
index a4fc7a8..0000000
--- a/doc/bu/files/setwindowicon.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowIcon [RCBasic Doc]
-#header sub SetWindowIcon( slot)
-
-
diff --git a/doc/bu/files/setwindowmaxsize.txt b/doc/bu/files/setwindowmaxsize.txt
deleted file mode 100644
index 73e06b8..0000000
--- a/doc/bu/files/setwindowmaxsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowMaxSize [RCBasic Doc]
-#header sub SetWindowMaxSize( w, h)
-
-
diff --git a/doc/bu/files/setwindowminsize.txt b/doc/bu/files/setwindowminsize.txt
deleted file mode 100644
index 5c8c99d..0000000
--- a/doc/bu/files/setwindowminsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowMinSize [RCBasic Doc]
-#header sub SetWindowMinSize( w, h)
-
-
diff --git a/doc/bu/files/setwindowposition.txt b/doc/bu/files/setwindowposition.txt
deleted file mode 100644
index f5499c1..0000000
--- a/doc/bu/files/setwindowposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowPosition [RCBasic Doc]
-#header sub SetWindowPosition( x, y )
-
-
diff --git a/doc/bu/files/setwindowresizable.txt b/doc/bu/files/setwindowresizable.txt
deleted file mode 100644
index 9cfd406..0000000
--- a/doc/bu/files/setwindowresizable.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowResizable [RCBasic Doc]
-#header sub SetWindowResizable( flag )
-
-
diff --git a/doc/bu/files/setwindowsize.txt b/doc/bu/files/setwindowsize.txt
deleted file mode 100644
index 1ee95af..0000000
--- a/doc/bu/files/setwindowsize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowSize [RCBasic Doc]
-#header sub SetWindowSize( w, h )
-
-
diff --git a/doc/bu/files/setwindowtitle.txt b/doc/bu/files/setwindowtitle.txt
deleted file mode 100644
index 2850855..0000000
--- a/doc/bu/files/setwindowtitle.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowTitle [RCBasic Doc]
-#header sub SetWindowTitle( title$ )
-
-
diff --git a/doc/bu/files/setwindowvsync.txt b/doc/bu/files/setwindowvsync.txt
deleted file mode 100644
index 92ed922..0000000
--- a/doc/bu/files/setwindowvsync.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWindowVSync [RCBasic Doc]
-#header sub SetWindowVSync( flag )
-
-
diff --git a/doc/bu/files/setworld3ddeltatime.txt b/doc/bu/files/setworld3ddeltatime.txt
deleted file mode 100644
index ef089fb..0000000
--- a/doc/bu/files/setworld3ddeltatime.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWorld3DDeltaTime [RCBasic Doc]
-#header sub SetWorld3DDeltaTime( dt )
-
-
diff --git a/doc/bu/files/setworld3dmaxsubsteps.txt b/doc/bu/files/setworld3dmaxsubsteps.txt
deleted file mode 100644
index 4b0cbd2..0000000
--- a/doc/bu/files/setworld3dmaxsubsteps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWorld3DMaxSubSteps [RCBasic Doc]
-#header sub SetWorld3DMaxSubSteps( steps )
-
-
diff --git a/doc/bu/files/setworld3dtimestep.txt b/doc/bu/files/setworld3dtimestep.txt
deleted file mode 100644
index 48d18f5..0000000
--- a/doc/bu/files/setworld3dtimestep.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SetWorld3DTimeStep [RCBasic Doc]
-#header sub SetWorld3DTimeStep( ts )
-
-
diff --git a/doc/bu/files/showmouse.txt b/doc/bu/files/showmouse.txt
deleted file mode 100644
index cd973b7..0000000
--- a/doc/bu/files/showmouse.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ShowMouse [RCBasic Doc]
-#header sub ShowMouse()
-
-
diff --git a/doc/bu/files/showwindow.txt b/doc/bu/files/showwindow.txt
deleted file mode 100644
index b3e9e05..0000000
--- a/doc/bu/files/showwindow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ShowWindow [RCBasic Doc]
-#header sub ShowWindow( )
-
-
diff --git a/doc/bu/files/sign.txt b/doc/bu/files/sign.txt
deleted file mode 100644
index 1f955a0..0000000
--- a/doc/bu/files/sign.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Sign [RCBasic Doc]
-#header function Sign(n)
-
-
diff --git a/doc/bu/files/sin.txt b/doc/bu/files/sin.txt
deleted file mode 100644
index 0957f8a..0000000
--- a/doc/bu/files/sin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Sin [RCBasic Doc]
-#header function Sin(n)
-
-
diff --git a/doc/bu/files/size.txt b/doc/bu/files/size.txt
deleted file mode 100644
index cbf8089..0000000
--- a/doc/bu/files/size.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Size [RCBasic Doc]
-#header function Size(s$)
-
-
diff --git a/doc/bu/files/solvematrix.txt b/doc/bu/files/solvematrix.txt
deleted file mode 100644
index 633ba20..0000000
--- a/doc/bu/files/solvematrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SolveMatrix [RCBasic Doc]
-#header function SolveMatrix(mA, mB, mC)
-
-
diff --git a/doc/bu/files/soundexists.txt b/doc/bu/files/soundexists.txt
deleted file mode 100644
index 0a4e2e6..0000000
--- a/doc/bu/files/soundexists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SoundExists [RCBasic Doc]
-#header function SoundExists(slot)
-
-
diff --git a/doc/bu/files/soundisenabled.txt b/doc/bu/files/soundisenabled.txt
deleted file mode 100644
index c5f80c2..0000000
--- a/doc/bu/files/soundisenabled.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SoundIsEnabled [RCBasic Doc]
-#header function SoundIsEnabled()
-
-
diff --git a/doc/bu/files/sqrt.txt b/doc/bu/files/sqrt.txt
deleted file mode 100644
index 66cf612..0000000
--- a/doc/bu/files/sqrt.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Sqrt [RCBasic Doc]
-#header function Sqrt(n)
-
-
diff --git a/doc/bu/files/squarematrix.txt b/doc/bu/files/squarematrix.txt
deleted file mode 100644
index 25527e0..0000000
--- a/doc/bu/files/squarematrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SquareMatrix [RCBasic Doc]
-#header function SquareMatrix(mA, mB)
-
-
diff --git a/doc/bu/files/stack_size_n.txt b/doc/bu/files/stack_size_n.txt
deleted file mode 100644
index 80f3c93..0000000
--- a/doc/bu/files/stack_size_n.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Stack_Size_N [RCBasic Doc]
-#header function Stack_Size_N( num_stack )
-
-
diff --git a/doc/bu/files/stack_size_s.txt b/doc/bu/files/stack_size_s.txt
deleted file mode 100644
index 24ba602..0000000
--- a/doc/bu/files/stack_size_s.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Stack_Size_S [RCBasic Doc]
-#header function Stack_Size_S( str_stack )
-
-
diff --git a/doc/bu/files/startactortransition.txt b/doc/bu/files/startactortransition.txt
deleted file mode 100644
index ee31765..0000000
--- a/doc/bu/files/startactortransition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StartActorTransition [RCBasic Doc]
-#header sub StartActorTransition( actor, frame, transition_time )
-
-
diff --git a/doc/bu/files/startparticleemitter.txt b/doc/bu/files/startparticleemitter.txt
deleted file mode 100644
index 4eb7fe0..0000000
--- a/doc/bu/files/startparticleemitter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title startParticleEmitter [RCBasic Doc]
-#header sub startParticleEmitter( actor)
-
-
diff --git a/doc/bu/files/stopactortransition.txt b/doc/bu/files/stopactortransition.txt
deleted file mode 100644
index 9087ebc..0000000
--- a/doc/bu/files/stopactortransition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StopActorTransition [RCBasic Doc]
-#header sub StopActorTransition( actor )
-
-
diff --git a/doc/bu/files/stopmusic.txt b/doc/bu/files/stopmusic.txt
deleted file mode 100644
index 198c755..0000000
--- a/doc/bu/files/stopmusic.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StopMusic [RCBasic Doc]
-#header sub StopMusic()
-
-
diff --git a/doc/bu/files/stopparticleemitter.txt b/doc/bu/files/stopparticleemitter.txt
deleted file mode 100644
index e9524ab..0000000
--- a/doc/bu/files/stopparticleemitter.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title stopParticleEmitter [RCBasic Doc]
-#header sub stopParticleEmitter( actor)
-
-
diff --git a/doc/bu/files/stopsound.txt b/doc/bu/files/stopsound.txt
deleted file mode 100644
index 5273764..0000000
--- a/doc/bu/files/stopsound.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StopSound [RCBasic Doc]
-#header sub StopSound(channel)
-
-
diff --git a/doc/bu/files/stopvideo.txt b/doc/bu/files/stopvideo.txt
deleted file mode 100644
index eb51f98..0000000
--- a/doc/bu/files/stopvideo.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StopVideo [RCBasic Doc]
-#header sub StopVideo()
-
-
diff --git a/doc/bu/files/str.txt b/doc/bu/files/str.txt
deleted file mode 100644
index 84acfb0..0000000
--- a/doc/bu/files/str.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Str$ [RCBasic Doc]
-#header function Str$(n)
-
-
diff --git a/doc/bu/files/str_f.txt b/doc/bu/files/str_f.txt
deleted file mode 100644
index 89e8cfc..0000000
--- a/doc/bu/files/str_f.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Str_F$ [RCBasic Doc]
-#header function Str_F$(n)
-
-
diff --git a/doc/bu/files/str_s.txt b/doc/bu/files/str_s.txt
deleted file mode 100644
index 7ae7b55..0000000
--- a/doc/bu/files/str_s.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Str_S$ [RCBasic Doc]
-#header function Str_S$(n)
-
-
diff --git a/doc/bu/files/stringarraycopy.txt b/doc/bu/files/stringarraycopy.txt
deleted file mode 100644
index c2ae827..0000000
--- a/doc/bu/files/stringarraycopy.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StringArrayCopy [RCBasic Doc]
-#header sub StringArrayCopy(ByRef src$, ByRef dst$)
-
-
diff --git a/doc/bu/files/stringarraydim.txt b/doc/bu/files/stringarraydim.txt
deleted file mode 100644
index b0e621e..0000000
--- a/doc/bu/files/stringarraydim.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StringArrayDim [RCBasic Doc]
-#header function StringArrayDim(Byref id$)
-
-
diff --git a/doc/bu/files/stringarrayfill.txt b/doc/bu/files/stringarrayfill.txt
deleted file mode 100644
index 4302ea4..0000000
--- a/doc/bu/files/stringarrayfill.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StringArrayFill [RCBasic Doc]
-#header sub StringArrayFill(ByRef src$, fdata$)
-
-
diff --git a/doc/bu/files/stringarraysize.txt b/doc/bu/files/stringarraysize.txt
deleted file mode 100644
index 6f277c3..0000000
--- a/doc/bu/files/stringarraysize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StringArraySize [RCBasic Doc]
-#header function StringArraySize(Byref id$, array_dim)
-
-
diff --git a/doc/bu/files/stringfill.txt b/doc/bu/files/stringfill.txt
deleted file mode 100644
index a171ec6..0000000
--- a/doc/bu/files/stringfill.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StringFill$ [RCBasic Doc]
-#header function StringFill$(src$, n)
-
-
diff --git a/doc/bu/files/stringfrombuffer.txt b/doc/bu/files/stringfrombuffer.txt
deleted file mode 100644
index 64f13d8..0000000
--- a/doc/bu/files/stringfrombuffer.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title StringFromBuffer$ [RCBasic Doc]
-#header function StringFromBuffer$(ByRef buffer, buffer_size)
-
-
diff --git a/doc/bu/files/subtractmatrix.txt b/doc/bu/files/subtractmatrix.txt
deleted file mode 100644
index c614614..0000000
--- a/doc/bu/files/subtractmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SubtractMatrix [RCBasic Doc]
-#header function SubtractMatrix(mA, mB, mC)
-
-
diff --git a/doc/bu/files/swapmatrix.txt b/doc/bu/files/swapmatrix.txt
deleted file mode 100644
index a73d28b..0000000
--- a/doc/bu/files/swapmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SwapMatrix [RCBasic Doc]
-#header sub SwapMatrix(mA, mB)
-
-
diff --git a/doc/bu/files/swapmatrixcolumn.txt b/doc/bu/files/swapmatrixcolumn.txt
deleted file mode 100644
index 5728a5b..0000000
--- a/doc/bu/files/swapmatrixcolumn.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SwapMatrixColumn [RCBasic Doc]
-#header function SwapMatrixColumn(mA, C1, C2)
-
-
diff --git a/doc/bu/files/swapmatrixrow.txt b/doc/bu/files/swapmatrixrow.txt
deleted file mode 100644
index 5b907a5..0000000
--- a/doc/bu/files/swapmatrixrow.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SwapMatrixRow [RCBasic Doc]
-#header function SwapMatrixRow(mA, R1, R2)
-
-
diff --git a/doc/bu/files/system.txt b/doc/bu/files/system.txt
deleted file mode 100644
index 9c8f9c7..0000000
--- a/doc/bu/files/system.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title System [RCBasic Doc]
-#header function System(cmd$)
-
-
diff --git a/doc/bu/files/systemram.txt b/doc/bu/files/systemram.txt
deleted file mode 100644
index 2262af5..0000000
--- a/doc/bu/files/systemram.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SystemRam [RCBasic Doc]
-#header function SystemRam()
-
-
diff --git a/doc/bu/files/systemreturnstdout.txt b/doc/bu/files/systemreturnstdout.txt
deleted file mode 100644
index 44d12c0..0000000
--- a/doc/bu/files/systemreturnstdout.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title SystemReturnStdOut$ [RCBasic Doc]
-#header function SystemReturnStdOut$(cmd$)
-
-
diff --git a/doc/bu/files/tally.txt b/doc/bu/files/tally.txt
deleted file mode 100644
index a73ac20..0000000
--- a/doc/bu/files/tally.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Tally [RCBasic Doc]
-#header function Tally(src$, substr$)
-
-
diff --git a/doc/bu/files/tan.txt b/doc/bu/files/tan.txt
deleted file mode 100644
index fcd4fff..0000000
--- a/doc/bu/files/tan.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Tan [RCBasic Doc]
-#header function Tan(n)
-
-
diff --git a/doc/bu/files/tcp_acceptsocket.txt b/doc/bu/files/tcp_acceptsocket.txt
deleted file mode 100644
index eaf6298..0000000
--- a/doc/bu/files/tcp_acceptsocket.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TCP_AcceptSocket [RCBasic Doc]
-#header function TCP_AcceptSocket(server, client)
-
-
diff --git a/doc/bu/files/tcp_closesocket.txt b/doc/bu/files/tcp_closesocket.txt
deleted file mode 100644
index 4af1841..0000000
--- a/doc/bu/files/tcp_closesocket.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TCP_CloseSocket [RCBasic Doc]
-#header sub TCP_CloseSocket(socket)
-
-
diff --git a/doc/bu/files/tcp_getdata.txt b/doc/bu/files/tcp_getdata.txt
deleted file mode 100644
index 6c62b32..0000000
--- a/doc/bu/files/tcp_getdata.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TCP_GetData [RCBasic Doc]
-#header function TCP_GetData(socket, numBytes, ByRef sData$)
-
-
diff --git a/doc/bu/files/tcp_opensocket.txt b/doc/bu/files/tcp_opensocket.txt
deleted file mode 100644
index 3c3d8d7..0000000
--- a/doc/bu/files/tcp_opensocket.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TCP_OpenSocket [RCBasic Doc]
-#header function TCP_OpenSocket(host$, port)
-
-
diff --git a/doc/bu/files/tcp_remotehost.txt b/doc/bu/files/tcp_remotehost.txt
deleted file mode 100644
index b6b0982..0000000
--- a/doc/bu/files/tcp_remotehost.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TCP_RemoteHost [RCBasic Doc]
-#header function TCP_RemoteHost(socket)
-
-
diff --git a/doc/bu/files/tcp_remoteport.txt b/doc/bu/files/tcp_remoteport.txt
deleted file mode 100644
index dc694db..0000000
--- a/doc/bu/files/tcp_remoteport.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TCP_RemotePort [RCBasic Doc]
-#header function TCP_RemotePort(socket)
-
-
diff --git a/doc/bu/files/tcp_senddata.txt b/doc/bu/files/tcp_senddata.txt
deleted file mode 100644
index b579a59..0000000
--- a/doc/bu/files/tcp_senddata.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TCP_SendData [RCBasic Doc]
-#header sub TCP_SendData(socket, sData$)
-
-
diff --git a/doc/bu/files/tcp_socketready.txt b/doc/bu/files/tcp_socketready.txt
deleted file mode 100644
index 701ea26..0000000
--- a/doc/bu/files/tcp_socketready.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TCP_SocketReady [RCBasic Doc]
-#header function TCP_SocketReady(socket)
-
-
diff --git a/doc/bu/files/tell.txt b/doc/bu/files/tell.txt
deleted file mode 100644
index 2e8ef31..0000000
--- a/doc/bu/files/tell.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Tell [RCBasic Doc]
-#header function Tell(stream)
-
-
diff --git a/doc/bu/files/ticks.txt b/doc/bu/files/ticks.txt
deleted file mode 100644
index 9626703..0000000
--- a/doc/bu/files/ticks.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Ticks [RCBasic Doc]
-#header function Ticks()
-
-
diff --git a/doc/bu/files/time.txt b/doc/bu/files/time.txt
deleted file mode 100644
index cef1bb2..0000000
--- a/doc/bu/files/time.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Time$ [RCBasic Doc]
-#header function Time$()
-
-
diff --git a/doc/bu/files/timer.txt b/doc/bu/files/timer.txt
deleted file mode 100644
index 308a725..0000000
--- a/doc/bu/files/timer.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Timer [RCBasic Doc]
-#header function Timer()
-
-
diff --git a/doc/bu/files/touchpressure.txt b/doc/bu/files/touchpressure.txt
deleted file mode 100644
index 84902d0..0000000
--- a/doc/bu/files/touchpressure.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TouchPressure [RCBasic Doc]
-#header function TouchPressure()
-
-
diff --git a/doc/bu/files/translateactor.txt b/doc/bu/files/translateactor.txt
deleted file mode 100644
index 5d8b8e9..0000000
--- a/doc/bu/files/translateactor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TranslateActor [RCBasic Doc]
-#header sub TranslateActor( actor, x, y, z )
-
-
diff --git a/doc/bu/files/translateactorworld.txt b/doc/bu/files/translateactorworld.txt
deleted file mode 100644
index 553e614..0000000
--- a/doc/bu/files/translateactorworld.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TranslateActorWorld [RCBasic Doc]
-#header sub TranslateActorWorld( actor, x, y, z )
-
-
diff --git a/doc/bu/files/translatecamera.txt b/doc/bu/files/translatecamera.txt
deleted file mode 100644
index bbf915a..0000000
--- a/doc/bu/files/translatecamera.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TranslateCamera [RCBasic Doc]
-#header sub TranslateCamera( x, y, z)
-
-
diff --git a/doc/bu/files/transposematrix.txt b/doc/bu/files/transposematrix.txt
deleted file mode 100644
index aa8a1c9..0000000
--- a/doc/bu/files/transposematrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TransposeMatrix [RCBasic Doc]
-#header function TransposeMatrix(mA, mB)
-
-
diff --git a/doc/bu/files/trim.txt b/doc/bu/files/trim.txt
deleted file mode 100644
index d93c949..0000000
--- a/doc/bu/files/trim.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Trim$ [RCBasic Doc]
-#header function Trim$(src$)
-
-
diff --git a/doc/bu/files/tst.txt b/doc/bu/files/tst.txt
deleted file mode 100644
index d7bf91f..0000000
--- a/doc/bu/files/tst.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title tst [RCBasic Doc]
-#header sub tst()
-
-
diff --git a/doc/bu/files/typearraycopy.txt b/doc/bu/files/typearraycopy.txt
deleted file mode 100644
index a90f979..0000000
--- a/doc/bu/files/typearraycopy.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TypeArrayCopy [RCBasic Doc]
-#header sub TypeArrayCopy(ByRef src as empty, ByRef dst as empty)
-
-
diff --git a/doc/bu/files/typearraydim.txt b/doc/bu/files/typearraydim.txt
deleted file mode 100644
index 1c5deb6..0000000
--- a/doc/bu/files/typearraydim.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TypeArrayDim [RCBasic Doc]
-#header function TypeArrayDim(Byref id as empty)
-
-
diff --git a/doc/bu/files/typearrayfill.txt b/doc/bu/files/typearrayfill.txt
deleted file mode 100644
index 55c8acc..0000000
--- a/doc/bu/files/typearrayfill.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TypeArrayFill [RCBasic Doc]
-#header sub TypeArrayFill(ByRef src as empty, fdata as empty)
-
-
diff --git a/doc/bu/files/typearraysize.txt b/doc/bu/files/typearraysize.txt
deleted file mode 100644
index f9717c0..0000000
--- a/doc/bu/files/typearraysize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title TypeArraySize [RCBasic Doc]
-#header function TypeArraySize(Byref id as empty, array_dim)
-
-
diff --git a/doc/bu/files/ucase.txt b/doc/bu/files/ucase.txt
deleted file mode 100644
index da32693..0000000
--- a/doc/bu/files/ucase.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Ucase$ [RCBasic Doc]
-#header function Ucase$(src$)
-
-
diff --git a/doc/bu/files/udp_closesocket.txt b/doc/bu/files/udp_closesocket.txt
deleted file mode 100644
index 12d731b..0000000
--- a/doc/bu/files/udp_closesocket.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_CloseSocket [RCBasic Doc]
-#header sub UDP_CloseSocket(socket)
-
-
diff --git a/doc/bu/files/udp_getdata.txt b/doc/bu/files/udp_getdata.txt
deleted file mode 100644
index 7970b5e..0000000
--- a/doc/bu/files/udp_getdata.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_GetData [RCBasic Doc]
-#header function UDP_GetData(socket, byref host$, byref port, byref sData$)
-
-
diff --git a/doc/bu/files/udp_length.txt b/doc/bu/files/udp_length.txt
deleted file mode 100644
index 09b3bc8..0000000
--- a/doc/bu/files/udp_length.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_Length [RCBasic Doc]
-#header function UDP_Length()
-
-
diff --git a/doc/bu/files/udp_maxlength.txt b/doc/bu/files/udp_maxlength.txt
deleted file mode 100644
index 7358d01..0000000
--- a/doc/bu/files/udp_maxlength.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_MaxLength [RCBasic Doc]
-#header function UDP_MaxLength()
-
-
diff --git a/doc/bu/files/udp_opensocket.txt b/doc/bu/files/udp_opensocket.txt
deleted file mode 100644
index b355133..0000000
--- a/doc/bu/files/udp_opensocket.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_OpenSocket [RCBasic Doc]
-#header function UDP_OpenSocket(port)
-
-
diff --git a/doc/bu/files/udp_remotehost.txt b/doc/bu/files/udp_remotehost.txt
deleted file mode 100644
index 1a73bbe..0000000
--- a/doc/bu/files/udp_remotehost.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_RemoteHost$ [RCBasic Doc]
-#header function UDP_RemoteHost$(socket)
-
-
diff --git a/doc/bu/files/udp_remoteport.txt b/doc/bu/files/udp_remoteport.txt
deleted file mode 100644
index c8e7958..0000000
--- a/doc/bu/files/udp_remoteport.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_RemotePort [RCBasic Doc]
-#header function UDP_RemotePort(socket)
-
-
diff --git a/doc/bu/files/udp_senddata.txt b/doc/bu/files/udp_senddata.txt
deleted file mode 100644
index f7a39dd..0000000
--- a/doc/bu/files/udp_senddata.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_SendData [RCBasic Doc]
-#header sub UDP_SendData(socket, host$, port, sData$)
-
-
diff --git a/doc/bu/files/udp_socketready.txt b/doc/bu/files/udp_socketready.txt
deleted file mode 100644
index 0f01add..0000000
--- a/doc/bu/files/udp_socketready.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UDP_SocketReady [RCBasic Doc]
-#header function UDP_SocketReady(socket)
-
-
diff --git a/doc/bu/files/unaugmentmatrix.txt b/doc/bu/files/unaugmentmatrix.txt
deleted file mode 100644
index 11b526c..0000000
--- a/doc/bu/files/unaugmentmatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title UnAugmentMatrix [RCBasic Doc]
-#header function UnAugmentMatrix(mA, mB, mC)
-
-
diff --git a/doc/bu/files/update.txt b/doc/bu/files/update.txt
deleted file mode 100644
index 18fea69..0000000
--- a/doc/bu/files/update.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Update [RCBasic Doc]
-#header sub Update()
-
-
diff --git a/doc/bu/files/updateactorinertiatensor.txt b/doc/bu/files/updateactorinertiatensor.txt
deleted file mode 100644
index a03f6ac..0000000
--- a/doc/bu/files/updateactorinertiatensor.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title updateActorInertiaTensor [RCBasic Doc]
-#header sub updateActorInertiaTensor( actor)
-
-
diff --git a/doc/bu/files/useconstraintframeoffset.txt b/doc/bu/files/useconstraintframeoffset.txt
deleted file mode 100644
index 2c21708..0000000
--- a/doc/bu/files/useconstraintframeoffset.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title useConstraintFrameOffset [RCBasic Doc]
-#header sub useConstraintFrameOffset( constraint_id, flag)
-
-
diff --git a/doc/bu/files/usehingereferenceframea.txt b/doc/bu/files/usehingereferenceframea.txt
deleted file mode 100644
index 780c39d..0000000
--- a/doc/bu/files/usehingereferenceframea.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title useHingeReferenceFrameA [RCBasic Doc]
-#header sub useHingeReferenceFrameA( constraint_id, flag)
-
-
diff --git a/doc/bu/files/useparticleeverymeshvertex.txt b/doc/bu/files/useparticleeverymeshvertex.txt
deleted file mode 100644
index 4dd2bfd..0000000
--- a/doc/bu/files/useparticleeverymeshvertex.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title useParticleEveryMeshVertex [RCBasic Doc]
-#header sub useParticleEveryMeshVertex( actor, flag)
-
-
diff --git a/doc/bu/files/useparticlenormaldirection.txt b/doc/bu/files/useparticlenormaldirection.txt
deleted file mode 100644
index 90f4774..0000000
--- a/doc/bu/files/useparticlenormaldirection.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title useParticleNormalDirection [RCBasic Doc]
-#header sub useParticleNormalDirection( actor, flag)
-
-
diff --git a/doc/bu/files/useparticleoutlineonly.txt b/doc/bu/files/useparticleoutlineonly.txt
deleted file mode 100644
index 0348f8c..0000000
--- a/doc/bu/files/useparticleoutlineonly.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title useParticleOutlineOnly [RCBasic Doc]
-#header sub useParticleOutlineOnly( actor, flag)
-
-
diff --git a/doc/bu/files/val.txt b/doc/bu/files/val.txt
deleted file mode 100644
index 2251cd0..0000000
--- a/doc/bu/files/val.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Val [RCBasic Doc]
-#header function Val(n$)
-
-
diff --git a/doc/bu/files/videoend.txt b/doc/bu/files/videoend.txt
deleted file mode 100644
index 6029416..0000000
--- a/doc/bu/files/videoend.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title VideoEnd [RCBasic Doc]
-#header function VideoEnd()
-
-
diff --git a/doc/bu/files/videoexists.txt b/doc/bu/files/videoexists.txt
deleted file mode 100644
index 5b6c802..0000000
--- a/doc/bu/files/videoexists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title VideoExists [RCBasic Doc]
-#header function VideoExists()
-
-
diff --git a/doc/bu/files/videoisplaying.txt b/doc/bu/files/videoisplaying.txt
deleted file mode 100644
index 72d29e2..0000000
--- a/doc/bu/files/videoisplaying.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title VideoIsPlaying [RCBasic Doc]
-#header function VideoIsPlaying()
-
-
diff --git a/doc/bu/files/wait.txt b/doc/bu/files/wait.txt
deleted file mode 100644
index 2c073f3..0000000
--- a/doc/bu/files/wait.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Wait [RCBasic Doc]
-#header sub Wait(m_sec)
-
-
diff --git a/doc/bu/files/waitkey.txt b/doc/bu/files/waitkey.txt
deleted file mode 100644
index 6282a2c..0000000
--- a/doc/bu/files/waitkey.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WaitKey [RCBasic Doc]
-#header function WaitKey()
-
-
diff --git a/doc/bu/files/warpmouse.txt b/doc/bu/files/warpmouse.txt
deleted file mode 100644
index ca6eb1c..0000000
--- a/doc/bu/files/warpmouse.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WarpMouse [RCBasic Doc]
-#header sub WarpMouse(x, y)
-
-
diff --git a/doc/bu/files/warpmouseglobal.txt b/doc/bu/files/warpmouseglobal.txt
deleted file mode 100644
index 6d36e07..0000000
--- a/doc/bu/files/warpmouseglobal.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WarpMouseGlobal [RCBasic Doc]
-#header sub WarpMouseGlobal(x, y)
-
-
diff --git a/doc/bu/files/windowclip.txt b/doc/bu/files/windowclip.txt
deleted file mode 100644
index eeebb9c..0000000
--- a/doc/bu/files/windowclip.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowClip [RCBasic Doc]
-#header function WindowClip(x, y, w, h)
-
-
diff --git a/doc/bu/files/windowevent_close.txt b/doc/bu/files/windowevent_close.txt
deleted file mode 100644
index a4bcc24..0000000
--- a/doc/bu/files/windowevent_close.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowEvent_Close [RCBasic Doc]
-#header function WindowEvent_Close()
-
-
diff --git a/doc/bu/files/windowevent_maximize.txt b/doc/bu/files/windowevent_maximize.txt
deleted file mode 100644
index 820fd09..0000000
--- a/doc/bu/files/windowevent_maximize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowEvent_Maximize [RCBasic Doc]
-#header function WindowEvent_Maximize()
-
-
diff --git a/doc/bu/files/windowevent_minimize.txt b/doc/bu/files/windowevent_minimize.txt
deleted file mode 100644
index a32de19..0000000
--- a/doc/bu/files/windowevent_minimize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowEvent_Minimize [RCBasic Doc]
-#header function WindowEvent_Minimize()
-
-
diff --git a/doc/bu/files/windowevent_resize.txt b/doc/bu/files/windowevent_resize.txt
deleted file mode 100644
index 9f733ed..0000000
--- a/doc/bu/files/windowevent_resize.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowEvent_Resize [RCBasic Doc]
-#header function WindowEvent_Resize()
-
-
diff --git a/doc/bu/files/windowexists.txt b/doc/bu/files/windowexists.txt
deleted file mode 100644
index c6ac2a5..0000000
--- a/doc/bu/files/windowexists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowExists [RCBasic Doc]
-#header function WindowExists()
-
-
diff --git a/doc/bu/files/windowhasinputfocus.txt b/doc/bu/files/windowhasinputfocus.txt
deleted file mode 100644
index 4930a60..0000000
--- a/doc/bu/files/windowhasinputfocus.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowHasInputFocus [RCBasic Doc]
-#header function WindowHasInputFocus()
-
-
diff --git a/doc/bu/files/windowhasmousefocus.txt b/doc/bu/files/windowhasmousefocus.txt
deleted file mode 100644
index c366a23..0000000
--- a/doc/bu/files/windowhasmousefocus.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowHasMouseFocus [RCBasic Doc]
-#header function WindowHasMouseFocus()
-
-
diff --git a/doc/bu/files/windowisbordered.txt b/doc/bu/files/windowisbordered.txt
deleted file mode 100644
index 17cf5ad..0000000
--- a/doc/bu/files/windowisbordered.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowIsBordered [RCBasic Doc]
-#header function WindowIsBordered()
-
-
diff --git a/doc/bu/files/windowisfullscreen.txt b/doc/bu/files/windowisfullscreen.txt
deleted file mode 100644
index 54d4af9..0000000
--- a/doc/bu/files/windowisfullscreen.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowIsFullscreen [RCBasic Doc]
-#header function WindowIsFullscreen()
-
-
diff --git a/doc/bu/files/windowisgrabbed.txt b/doc/bu/files/windowisgrabbed.txt
deleted file mode 100644
index d883040..0000000
--- a/doc/bu/files/windowisgrabbed.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowIsGrabbed [RCBasic Doc]
-#header function WindowIsGrabbed( )
-
-
diff --git a/doc/bu/files/windowismaximized.txt b/doc/bu/files/windowismaximized.txt
deleted file mode 100644
index 8e22594..0000000
--- a/doc/bu/files/windowismaximized.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowIsMaximized [RCBasic Doc]
-#header function WindowIsMaximized()
-
-
diff --git a/doc/bu/files/windowisminimized.txt b/doc/bu/files/windowisminimized.txt
deleted file mode 100644
index 38cca84..0000000
--- a/doc/bu/files/windowisminimized.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowIsMinimized [RCBasic Doc]
-#header function WindowIsMinimized()
-
-
diff --git a/doc/bu/files/windowisresizable.txt b/doc/bu/files/windowisresizable.txt
deleted file mode 100644
index 08b0b04..0000000
--- a/doc/bu/files/windowisresizable.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowIsResizable [RCBasic Doc]
-#header function WindowIsResizable()
-
-
diff --git a/doc/bu/files/windowisvisible.txt b/doc/bu/files/windowisvisible.txt
deleted file mode 100644
index 990a071..0000000
--- a/doc/bu/files/windowisvisible.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowIsVisible [RCBasic Doc]
-#header function WindowIsVisible()
-
-
diff --git a/doc/bu/files/windowmode.txt b/doc/bu/files/windowmode.txt
deleted file mode 100644
index 5fa5385..0000000
--- a/doc/bu/files/windowmode.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowMode [RCBasic Doc]
-#header function WindowMode(visible, fullscreen, resizable, borderless, highDPI)
-
-
diff --git a/doc/bu/files/windowtitle.txt b/doc/bu/files/windowtitle.txt
deleted file mode 100644
index ff00fc0..0000000
--- a/doc/bu/files/windowtitle.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WindowTitle$ [RCBasic Doc]
-#header function WindowTitle$( )
-
-
diff --git a/doc/bu/files/write.txt b/doc/bu/files/write.txt
deleted file mode 100644
index edf82a5..0000000
--- a/doc/bu/files/write.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title Write [RCBasic Doc]
-#header sub Write(stream, txt$)
-
-
diff --git a/doc/bu/files/writebyte.txt b/doc/bu/files/writebyte.txt
deleted file mode 100644
index b017160..0000000
--- a/doc/bu/files/writebyte.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WriteByte [RCBasic Doc]
-#header sub WriteByte(stream, byte)
-
-
diff --git a/doc/bu/files/writebytebuffer.txt b/doc/bu/files/writebytebuffer.txt
deleted file mode 100644
index fe3c08c..0000000
--- a/doc/bu/files/writebytebuffer.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WriteByteBuffer [RCBasic Doc]
-#header function WriteByteBuffer(stream, ByRef buf, buf_size)
-
-
diff --git a/doc/bu/files/writeline.txt b/doc/bu/files/writeline.txt
deleted file mode 100644
index df85cbd..0000000
--- a/doc/bu/files/writeline.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title WriteLine [RCBasic Doc]
-#header sub WriteLine(stream, txt$)
-
-
diff --git a/doc/bu/files/xorbit.txt b/doc/bu/files/xorbit.txt
deleted file mode 100644
index 684fbda..0000000
--- a/doc/bu/files/xorbit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title XOrBit [RCBasic Doc]
-#header function XOrBit(a, b)
-
-
diff --git a/doc/bu/files/zeromatrix.txt b/doc/bu/files/zeromatrix.txt
deleted file mode 100644
index 3d81c26..0000000
--- a/doc/bu/files/zeromatrix.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title ZeroMatrix [RCBasic Doc]
-#header sub ZeroMatrix(mA)
-
-
diff --git a/doc/cw/gethingesolvelimit.txt b/doc/cw/gethingesolvelimit.txt
deleted file mode 100644
index ce518db..0000000
--- a/doc/cw/gethingesolvelimit.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getHingeSolveLimit [RCBasic Doc]
-#header function getHingeSolveLimit( constraint_id)
-
-Checks whether the hinge has reached or exceeded its angular limit during the simulation. It returns a boolean or an integer value that indicates whether the current angular position is within the constraint's angular limits or if corrective forces need to be applied.
-
-The "solve limit" refers to whether the current angular position is close to or outside the defined angular limits. If the constraint detects that the hinge is at the limit, it enters a solving state, where it applies corrective forces to keep the rotation within the allowed range.
diff --git a/doc/cw/getslidelindepth.txt b/doc/cw/getslidelindepth.txt
deleted file mode 100644
index 7fba322..0000000
--- a/doc/cw/getslidelindepth.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getSlideLinDepth [RCBasic Doc]
-#header function getSlideLinDepth( constraint_id)
-
-Returns the linear depth of the slider constraint. This value indicates how much the actors connected by the slider constraint are overlapping or penetrating each other in the linear (translational) direction.
-
-The linear depth is a measure of how far the actors are penetrating each other along the linear axis defined by the slider constraint. A positive value indicates that the actors are overlapping, while a value of zero means they are in contact but not penetrating. Negative values typically imply that the actors are separated.
diff --git a/doc/cw/getslidelinearpos.txt b/doc/cw/getslidelinearpos.txt
deleted file mode 100644
index f20b0ae..0000000
--- a/doc/cw/getslidelinearpos.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getSlideLinearPos [RCBasic Doc]
-#header function getSlideLinearPos( constraint_id)
-
-Returns the current linear position of the slider constraint along its defined axis. This position reflects how far the connected actors have moved along the slider's linear axis since the constraint was created or last reset.
-
-This value can be positive or negative, depending on the relative positions of the two bodies connected by the slider.
diff --git a/doc/cw/getslideloweranglimit.txt b/doc/cw/getslideloweranglimit.txt
deleted file mode 100644
index 5fe004d..0000000
--- a/doc/cw/getslideloweranglimit.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title getSlideLowerAngLimit [RCBasic Doc]
-#header function getSlideLowerAngLimit( constraint_id)
-
-Returns the lower angular limit of the constraint. This value specifies the minimum angle allowed for the rotation of the connected actors around the axis perpendicular to the sliding direction defined by the slider constraint.
-
-The lower angular limit indicates the smallest angle that the actors can rotate about the axis perpendicular to the sliding direction. If the rotation tries to exceed this limit, the physics engine will apply corrective forces to maintain the bodies within the allowed range.
-
-#ref GetSlideLowerLinLimit
diff --git a/doc/cw/getslidelowerlinlimit.txt b/doc/cw/getslidelowerlinlimit.txt
deleted file mode 100644
index 9a6d38e..0000000
--- a/doc/cw/getslidelowerlinlimit.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title getSlideLowerLinLimit [RCBasic Doc]
-#header function getSlideLowerLinLimit( constraint_id)
-
-Returns the lower linear limit for the translational (sliding) motion along the slider's axis. This value specifies the minimum allowable position for the connected actors along the defined axis of the slider constraint.
-
-This defines the minimum translation distance along the slider’s axis that the connected actors are allowed to reach. If the actors' relative position along the axis goes below this limit, the constraint will prevent further movement.
-
-#ref SetSlideLowerLinLimit
diff --git a/doc/cw/getsliderestitutiondirang.txt b/doc/cw/getsliderestitutiondirang.txt
deleted file mode 100644
index c51de77..0000000
--- a/doc/cw/getsliderestitutiondirang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title getSlideRestitutionDirAng [RCBasic Doc]
-#header function getSlideRestitutionDirAng( constraint_id)
-
-Returns the restitution value for angular motion. The restitution coefficient is a measure of how much energy is conserved in a collision or constraint interaction, specifically for angular movements.
-
-When actors collide or interact, their angular momentum and position can change, and the restitution value governs how much of that energy is retained after the interaction.
-
-#ref SetSlideRestitutionDirAng
diff --git a/doc/cw/getsliderestitutiondirlin.txt b/doc/cw/getsliderestitutiondirlin.txt
deleted file mode 100644
index de1e80b..0000000
--- a/doc/cw/getsliderestitutiondirlin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title getSlideRestitutionDirLin [RCBasic Doc]
-#header function getSlideRestitutionDirLin( constraint_id)
-
-Returns the restitution value for linear motion. This value determines how much energy is conserved in a collision or interaction involving linear movements of the connected actors.
-
-When the actors collide or interact, the restitution value dictates how much of their energy is retained after the interaction.
-
-#ref SetSlideRestitutionDirLin
diff --git a/doc/cw/getsliderestitutionlimang.txt b/doc/cw/getsliderestitutionlimang.txt
deleted file mode 100644
index 6c3e28a..0000000
--- a/doc/cw/getsliderestitutionlimang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title getSlideRestitutionLimAng [RCBasic Doc]
-#header function getSlideRestitutionLimAng( constraint_id)
-
-Returns the restitution value for angular limit. This value determines how much energy is conserved when the angular motion of the connected actors reaches the angular limits of the slider constraint. Essentially, it controls how "bouncy" the rotation is when it hits the angular limit of the constraint.
-
-A value of 0.0 means no bounce (perfectly inelastic), while a value of 1.0 allows maximum bounce (perfectly elastic).
-
-#ref SetSlideRestitutionLimAng
diff --git a/doc/cw/getsliderestitutionlimlin.txt b/doc/cw/getsliderestitutionlimlin.txt
deleted file mode 100644
index 71bedcc..0000000
--- a/doc/cw/getsliderestitutionlimlin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title getSlideRestitutionLimLin [RCBasic Doc]
-#header function getSlideRestitutionLimLin( constraint_id)
-
-Returns the restitution value for the linear limit of the constraint. This value controls how much energy is conserved (or how "bouncy" the interaction is) when the connected actors reach the linear limits of the slider constraint, which restricts the movement along the sliding axis.
-
-Restitution is a measure of how much energy is retained after a collision or interaction. In this context, when the linear movement reaches the limits, restitution controls how much the actors "bounce" back. A restitution value of 0.0 means no bounce (the collision is perfectly inelastic), and 1.0 allows maximum bounce (the collision is perfectly elastic).
-
-#ref SetSlideRestitutionLimLin
diff --git a/doc/cw/getsliderestitutionorthoang.txt b/doc/cw/getsliderestitutionorthoang.txt
deleted file mode 100644
index f10828c..0000000
--- a/doc/cw/getsliderestitutionorthoang.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title getSlideRestitutionOrthoAng [RCBasic Doc]
-#header function getSlideRestitutionOrthoAng( constraint_id)
-
-Returns the restitution value for orthogonal angular motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when rotational movement occurs in a direction orthogonal (perpendicular) to the slider's primary axis of movement.
-
-Orthogonal Angular Motion: In the context of a slider constraint, orthogonal angular motion refers to rotational movement around axes that are perpendicular to the slider's main movement axis.
-
-Restitution: Restitution is a measure of how much energy is retained in a collision or interaction. A restitution value of 0.0 means no bounce (inelastic collision), and 1.0 means maximum bounce (elastic collision). For orthogonal angular motion, this describes how much bounce occurs after the rotational motion hits the constraints or limits in a perpendicular direction to the slider axis.
-
-#ref SetSlideRestitutionOrthoAng
diff --git a/doc/cw/getsliderestitutionortholin.txt b/doc/cw/getsliderestitutionortholin.txt
deleted file mode 100644
index 5f04fc6..0000000
--- a/doc/cw/getsliderestitutionortholin.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title getSlideRestitutionOrthoLin [RCBasic Doc]
-#header function getSlideRestitutionOrthoLin( constraint_id)
-
-Returns the restitution value for orthogonal linear motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when linear motion occurs in a direction orthogonal (perpendicular) to the primary sliding axis of the constraint.
-
-Orthogonal Linear Motion: In the context of a slider constraint, orthogonal linear motion refers to translational movement along axes that are perpendicular to the main sliding axis of the constraint.
-
-Restitution: Restitution is a measure of how much energy is retained or conserved during a collision or interaction. A restitution value of 0.0 indicates no bounce (perfectly inelastic), while 1.0 indicates maximum bounce (perfectly elastic). For orthogonal linear motion, this value describes how much the actors bounce or retain energy when they hit limits or experience movement perpendicular to the slider’s main axis.
-
-#ref SetSlideRestitutionOrthoLin
diff --git a/doc/cw/getslidesoftnessdirang.txt b/doc/cw/getslidesoftnessdirang.txt
deleted file mode 100644
index 13fc4aa..0000000
--- a/doc/cw/getslidesoftnessdirang.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title getSlideSoftnessDirAng [RCBasic Doc]
-#header function getSlideSoftnessDirAng( constraint_id)
-
-Returns the softness parameter for the angular motion of the constraint. This parameter is used to define how "soft" or "rigid" the limits of angular motion are, particularly when the angular limits are reached.
-
-The softness parameter defines how smoothly the constraint responds to limit violations. A higher softness value allows for more gradual movements when limits are approached, while a lower value creates a more rigid response. Softness is particularly useful in simulations to avoid harsh impacts or stiff movements when limits are reached.
-
diff --git a/doc/cw/getslidesoftnessdirlin.txt b/doc/cw/getslidesoftnessdirlin.txt
deleted file mode 100644
index 0e2d685..0000000
--- a/doc/cw/getslidesoftnessdirlin.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getSlideSoftnessDirLin [RCBasic Doc]
-#header function getSlideSoftnessDirLin( constraint_id)
-
-Returns the softness parameter for the linear motion of the constraint. This parameter influences how the constraint responds when the linear limits of movement are reached along the sliding axis, determining whether the response is soft and gradual or more rigid.
-
-In the context of constraints, softness defines how "compliant" or "stiff" the constraint behaves when the limits are approached. A higher softness value makes the constraint respond more softly and gradually as the limit is approached, while a lower value makes the response stiffer and more rigid.
diff --git a/doc/cw/getslidesoftnesslimang.txt b/doc/cw/getslidesoftnesslimang.txt
deleted file mode 100644
index 0f7f6bc..0000000
--- a/doc/cw/getslidesoftnesslimang.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getSlideSoftnessLimAng [RCBasic Doc]
-#header function getSlideSoftnessLimAng( constraint_id)
-
-Returns the softness parameter for the angular limits of the constraint. This parameter affects how "soft" or "rigid" the constraint behaves when the connected actors reach their angular rotational limits around the slider's axis of rotation.
-
-The softness parameter defines how compliant or stiff the constraint behaves when the motion approaches a limit. A higher softness makes the constraint more flexible, allowing for smoother motion near the limit. A lower softness makes the limit response more rigid and immediate.
diff --git a/doc/cw/getslidesoftnesslimlin.txt b/doc/cw/getslidesoftnesslimlin.txt
deleted file mode 100644
index f4c4311..0000000
--- a/doc/cw/getslidesoftnesslimlin.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getSlideSoftnessLimLin [RCBasic Doc]
-#header function getSlideSoftnessLimLin( constraint_id)
-
-Returns the softness parameter for the linear limits of the constraint. This parameter influences how "soft" or "rigid" the constraint behaves when the connected actors reach their linear (sliding) limits along the constraint's axis of motion.
-
-The softness parameter defines how compliant or stiff the constraint behaves when limits are approached. A higher softness value allows for a more gradual and flexible response as the limit is reached, while a lower softness value results in a stiffer and more rigid response.
diff --git a/doc/cw/getslidesoftnessorthoang.txt b/doc/cw/getslidesoftnessorthoang.txt
deleted file mode 100644
index 5b05e05..0000000
--- a/doc/cw/getslidesoftnessorthoang.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getSlideSoftnessOrthoAng [RCBasic Doc]
-#header function getSlideSoftnessOrthoAng( constraint_id)
-
-Returns the softness parameter for the orthogonal angular limits of the constraint. This parameter controls how "soft" or "rigid" the constraint behaves when angular rotation is limited along directions orthogonal (perpendicular) to the primary axis of motion.
-
-The softness parameter defines how compliant (soft) or stiff (rigid) the constraint behaves when the bodies approach their angular or linear limits. A higher softness value makes the limit more flexible, allowing for gradual motion, while a lower value makes the limit more rigid and restrictive.
diff --git a/doc/cw/getslidesoftnessortholin.txt b/doc/cw/getslidesoftnessortholin.txt
deleted file mode 100644
index 7f30409..0000000
--- a/doc/cw/getslidesoftnessortholin.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getConstraintSoftnessOrthoLin [RCBasic Doc]
-#header function getConstraintSoftnessOrthoLin( constraint_id)
-
-Returns the softness parameter for the orthogonal linear limits of the constraint. This parameter affects how "soft" or "rigid" the constraint behaves when the connected actors approach their linear movement limits in directions that are orthogonal (perpendicular) to the primary sliding axis.
-
-The softness parameter determines how rigid or compliant the constraint is when the actors approach their movement limits. A higher softness value allows for smoother, more flexible movement near the limit, while a lower value results in a more rigid, immediate response.
diff --git a/doc/cw/getslidesolveanglimit.txt b/doc/cw/getslidesolveanglimit.txt
deleted file mode 100644
index 6e5a1b9..0000000
--- a/doc/cw/getslidesolveanglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getSlideSolveAngLimit [RCBasic Doc]
-#header function getSlideSolveAngLimit( constraint_id)
-
-Checks whether the angular position of the constraint has reached or exceeded its defined angular limits. It returns a value indicating if the constraint is at or beyond its lower or upper angular limit around the slider’s axis of rotation.
diff --git a/doc/cw/getslidesolvelinlimit.txt b/doc/cw/getslidesolvelinlimit.txt
deleted file mode 100644
index 0a5d15f..0000000
--- a/doc/cw/getslidesolvelinlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getSlideSolveLinLimit [RCBasic Doc]
-#header function getSlideSolveLinLimit( constraint_id)
-
-Checks whether the linear position of the constraint has reached or exceeded its defined linear limits. It returns a value indicating if the constraint is at or beyond its lower or upper linear limit along the sliding axis.
diff --git a/doc/cw/getslideupperanglimit.txt b/doc/cw/getslideupperanglimit.txt
deleted file mode 100644
index 7fec7a9..0000000
--- a/doc/cw/getslideupperanglimit.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getSlideUpperAngLimit [RCBasic Doc]
-#header function getSlideUpperAngLimit( constraint_id)
-
-Returns the upper limit of the angular movement allowed for the constraint. This function is crucial for determining how much rotational freedom is allowed around the axis of rotation defined by the slider constraint.
-
-The upper angular limit specifies the maximum allowed rotation around the rotational axis for the slider constraint. If the relative rotation between the two actors exceeds this angle, corrective forces are applied to maintain the constraint and prevent further rotation.
diff --git a/doc/cw/getslideupperlinlimit.txt b/doc/cw/getslideupperlinlimit.txt
deleted file mode 100644
index 6585f0b..0000000
--- a/doc/cw/getslideupperlinlimit.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title getSlideUpperLinLimit [RCBasic Doc]
-#header function getSlideUpperLinLimit( constraint_id)
-
-Returns the upper limit for linear movement along the constraint's axis. This is a crucial function for controlling how far the connected actors can slide along that axis before the constraint enforces limits.
-
-The upper linear limit specifies the maximum distance that the connected actors can move away from each other along the slider's axis. If the relative movement exceeds this limit, the constraint will apply corrective forces to stop further movement.
diff --git a/doc/cw/getslideuseframeoffset.txt b/doc/cw/getslideuseframeoffset.txt
deleted file mode 100644
index 0f1469a..0000000
--- a/doc/cw/getslideuseframeoffset.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getSlideUseFrameOffset [RCBasic Doc]
-#header function getSlideUseFrameOffset( constraint_id)
-
-Returns a boolean value indicating whether the constraint is using frame offsets for its linear and angular limits.
diff --git a/doc/doc_files/abs.html b/doc/doc_files/abs.html
new file mode 100644
index 0000000..12fd3b1
--- /dev/null
+++ b/doc/doc_files/abs.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Abs [RCBasic Doc]
+
+
+
+
function Abs(n)
+
+ Returns the absolute value of n
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/accelname.html b/doc/doc_files/accelname.html
new file mode 100644
index 0000000..c3fadcd
--- /dev/null
+++ b/doc/doc_files/accelname.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ AccelName$ [RCBasic Doc]
+
+
+
+
function AccelName$(accel_num)
+
+ Returns the name of an accelerometer
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/acos.html b/doc/doc_files/acos.html
new file mode 100644
index 0000000..35de12c
--- /dev/null
+++ b/doc/doc_files/acos.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Acos [RCBasic Doc]
+
+
+
+
function Acos(n)
+
+ Returns the Arcosine of n
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/activecanvas.html b/doc/doc_files/activecanvas.html
new file mode 100644
index 0000000..c391745
--- /dev/null
+++ b/doc/doc_files/activecanvas.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+ ActiveCanvas [RCBasic Doc]
+
+
+
+
function ActiveCanvas()
+
+ Returns the canvas that drawing commands are currently applied to
+
+
+ 1 = OpenCanvas( 640 , 480 , 0 , 0 , 640 , 480 , 0 )
+ 2 = OpenCanvas( 640 , 480 , 0 , 0 , 640 , 480 , 0 )
+
+ Canvas( 1 )
+
+ If ActiveCanvas( ) = 1 Then
+ Print "Active canvas is c1"
+ End If
+
+ Canvas( 2 )
+
+ If ActiveCanvas( ) = 2 Then
+ Print "Active canvas is now c2"
+ End If
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/actoranimationislooped.html b/doc/doc_files/actoranimationislooped.html
new file mode 100644
index 0000000..6a2ee22
--- /dev/null
+++ b/doc/doc_files/actoranimationislooped.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ actorAnimationIsLooped [RCBasic Doc]
+
+
+
+
function actorAnimationIsLooped( actor )
+
+ Returns true if an actors animation is set to looped.
+
+
+ Note: Actor animation is set to looped with the loopActorAnimation() function.
+
+ Related:
+ loopActorAnimation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/actoranimationisplaying.html b/doc/doc_files/actoranimationisplaying.html
new file mode 100644
index 0000000..7c5fb03
--- /dev/null
+++ b/doc/doc_files/actoranimationisplaying.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ActorAnimationIsPlaying [RCBasic Doc]
+
+
+
+
function ActorAnimationIsPlaying(actor)
+
+ Returns true if an actor is currently playing an animation
+
+
+ Note: If the number of loops in the animation is set to -1 then this will always be true since it does not return false until it plays the last frame in the last loop
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/actorexists.html b/doc/doc_files/actorexists.html
new file mode 100644
index 0000000..642ccd7
--- /dev/null
+++ b/doc/doc_files/actorexists.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ ActorExists [RCBasic Doc]
+
+
+
+
function ActorExists( actor )
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/actorisintransition.html b/doc/doc_files/actorisintransition.html
new file mode 100644
index 0000000..3c26175
--- /dev/null
+++ b/doc/doc_files/actorisintransition.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ ActorIsInTransition [RCBasic Doc]
+
+
+
+
function ActorIsInTransition( actor )
+
+ Returns true if actor is in a transition from its current frame to the frame set in the StartActorTransition() function
+
+ Related:
+ StartActorTransition
+ StopActorTransition
+ GetActorTransitionTime
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/actorissolid.html b/doc/doc_files/actorissolid.html
new file mode 100644
index 0000000..71c2baa
--- /dev/null
+++ b/doc/doc_files/actorissolid.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ ActorIsSolid [RCBasic Doc]
+
+
+
+
function ActorIsSolid(actor)
+
+ Returns true or false depending on if physics and collision response applies to an actor.
+
+
+ Note: Collision is still able to be checked on an actor but the actor will be like a ghost able to go through wall and other objects.
+
+
+ SetActorSolid( actor, true )
+ Print "Actor solid state: " ; ActorIsSolid( actor)
+ SetActorSolid( actor, false )
+ Print "Actor solid state: " ; ActorIsSolid( actor)
+ #/end
+
+ #ref SetActorSolid
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/actorisvisible.html b/doc/doc_files/actorisvisible.html
new file mode 100644
index 0000000..e8c734f
--- /dev/null
+++ b/doc/doc_files/actorisvisible.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ ActorIsVisible [RCBasic Doc]
+
+
+
+
function ActorIsVisible( actor )
+
+ Returns true if an actor is visible
+
+
+ SetActorVisible( actor, true )
+ Print "Actor solid state: " ; ActorIsVisible( actor)
+ SetActorSolid( actor, false )
+ Print "Actor solid state: " ; ActorIsSolid( actor)
+
+ Related:
+ SetActorVisible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/addactorshadow.html b/doc/doc_files/addactorshadow.html
new file mode 100644
index 0000000..60af641
--- /dev/null
+++ b/doc/doc_files/addactorshadow.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ AddActorShadow [RCBasic Doc]
+
+
+
+
sub AddActorShadow( actor )
+
+ Cast a shadow on an actor during lighting calculations
+
+
+ Note: Also check the section on lights for more info
+
+ Related:
+ RemoveActorShadow
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/addmatrix.html b/doc/doc_files/addmatrix.html
new file mode 100644
index 0000000..5360855
--- /dev/null
+++ b/doc/doc_files/addmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ AddMatrix [RCBasic Doc]
+
+
+
+
function AddMatrix(mA, mB, mC)
+
+ Adds matrix mA to matrix mB and stores the results in mC
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/addmeshbuffer.html b/doc/doc_files/addmeshbuffer.html
new file mode 100644
index 0000000..af6b31e
--- /dev/null
+++ b/doc/doc_files/addmeshbuffer.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ AddMeshBuffer [RCBasic Doc]
+
+
+
+
sub AddMeshBuffer( mesh, vertex_count, ByRef vertex_data, ByRef normal_data, ByRef uv_data, index_count, ByRef index_data )
+
+ Sets the vertices, normals, and texture coordinates for a mesh
+
+ Related:
+ CreateMesh
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/addsceneskybox.html b/doc/doc_files/addsceneskybox.html
new file mode 100644
index 0000000..fc179b2
--- /dev/null
+++ b/doc/doc_files/addsceneskybox.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ AddSceneSkyBox [RCBasic Doc]
+
+
+
+
sub AddSceneSkyBox( img_top, img_bottom, img_left, img_right, img_front, img_back)
+
+ Generates a skybox based on the provided images.
+
+ Related:
+ AddSceneSkyDome
+ AddSceneSkyDomeEx
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/addsceneskydome.html b/doc/doc_files/addsceneskydome.html
new file mode 100644
index 0000000..5b56126
--- /dev/null
+++ b/doc/doc_files/addsceneskydome.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ AddSceneSkyDome [RCBasic Doc]
+
+
+
+
sub AddSceneSkyDome( img )
+
+ Adds a sky dome to the scene
+
+ Related:
+ AddSceneSkyDomeEx
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/addsceneskydomeex.html b/doc/doc_files/addsceneskydomeex.html
new file mode 100644
index 0000000..fa4fa68
--- /dev/null
+++ b/doc/doc_files/addsceneskydomeex.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+ AddSceneSkyDomeEx [RCBasic Doc]
+
+
+
+
sub AddSceneSkyDomeEx( img, horiRes, vertRes, txPercentage, spherePercentage, radius)
+
+ Adds a sky dome to the scene
+
+
+
+ img - The texture for the sky dome
+
+
+ horiRes - Number of vertices of a horizontal layer of the sphere.
+
+
+ vertRes - Number of vertices of a vertical layer of the sphere.
+
+
+ txPercentage - How much of the height of the texture is used. Should be between 0 and 1.
+
+
+ spherePercentage - How much of the sphere is drawn. Value should be between 0 and 2, where 1 is an exact half-sphere and 2 is a full sphere.
+
+
+ radius - The Radius of the sphere
+
+
+ Related:
+ AddSceneSkyBox
+ AddSceneSkyDome
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/adjointmatrix.html b/doc/doc_files/adjointmatrix.html
new file mode 100644
index 0000000..72dd4db
--- /dev/null
+++ b/doc/doc_files/adjointmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ AdjointMatrix [RCBasic Doc]
+
+
+
+
function AdjointMatrix(mA, mB)
+
+ Stores the adjoint matrix of mA in mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/andbit.html b/doc/doc_files/andbit.html
new file mode 100644
index 0000000..34287ba
--- /dev/null
+++ b/doc/doc_files/andbit.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ AndBit [RCBasic Doc]
+
+
+
+
function AndBit(a,b)
+
+ Returns the bitwise AND operation of 2 numbers
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/android_getexternalstoragepath.html b/doc/doc_files/android_getexternalstoragepath.html
new file mode 100644
index 0000000..cac6134
--- /dev/null
+++ b/doc/doc_files/android_getexternalstoragepath.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Android_GetExternalStoragePath$ [RCBasic Doc]
+
+
+
+
function Android_GetExternalStoragePath$()
+
+ Returns the designated external storage path
+
+ Related:
+ Android_GetExternalStorageState
+ Android_GetInternalStoragePath$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/android_getexternalstoragestate.html b/doc/doc_files/android_getexternalstoragestate.html
new file mode 100644
index 0000000..9c20903
--- /dev/null
+++ b/doc/doc_files/android_getexternalstoragestate.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ Android_GetExternalStorageState [RCBasic Doc]
+
+
+
+
function Android_GetExternalStorageState()
+
+ Returns a bitmask of these values:
+
+
+
+ ANDROID_EXTERNAL_STORAGE_READ
+
+
+ ANDROID_EXTERNAL_STORAGE_WRITE
+
+
+
+ If AndBit( Android_GetExternalStorageState( ) , ANDROID_EXTERNAL_STORAGE_READ ) Then
+ Print "Can read from external storage"
+ End If
+
+ Related:
+ Android_GetExternalStoragePath$
+ Android_GetInternalStoragePath$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/android_getinternalstoragepath.html b/doc/doc_files/android_getinternalstoragepath.html
new file mode 100644
index 0000000..1c6c85e
--- /dev/null
+++ b/doc/doc_files/android_getinternalstoragepath.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Android_GetInternalStoragePath$ [RCBasic Doc]
+
+
+
+
function Android_GetInternalStoragePath$()
+
+ Returns the internal storage path
+
+ Related:
+ Android_GetExternalStorageState
+ Android_GetExternalStoragePath$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/android_jni_message.html b/doc/doc_files/android_jni_message.html
new file mode 100644
index 0000000..ae39c49
--- /dev/null
+++ b/doc/doc_files/android_jni_message.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Android_JNI_Message$ [RCBasic Doc]
+
+
+
+
function Android_JNI_Message$(arg$)
+
+ Passes arg$ to the rcbasic_android_interface() method in the java code for your android app. The java method returns a string.
+
+ Related:
+ Runtime_Utility_Message$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactorcentralforcelocal.html b/doc/doc_files/applyactorcentralforcelocal.html
new file mode 100644
index 0000000..7822d13
--- /dev/null
+++ b/doc/doc_files/applyactorcentralforcelocal.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ ApplyActorCentralForceLocal [RCBasic Doc]
+
+
+
+
sub ApplyActorCentralForceLocal( actor, x, y, z)
+
+ Applies a force to the center of mass of an actor in local coordinate space. This force impacts the linear velocity of the object without affecting its rotation.
+
+
+
+ x,y,z - direction of the force
+
+
+ Related:
+ ApplyActorCentralForceWorld
+ ApplyActorCentralImpulseLocal
+ ApplyActorCentralImpulseWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactorcentralforceworld.html b/doc/doc_files/applyactorcentralforceworld.html
new file mode 100644
index 0000000..9691595
--- /dev/null
+++ b/doc/doc_files/applyactorcentralforceworld.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ ApplyActorCentralForceWorld [RCBasic Doc]
+
+
+
+
sub ApplyActorCentralForceWorld( actor, x, y, z)
+
+ Applies a force to the center of mass of an actor in world coordinate space. This force impacts the linear velocity of the object without affecting its rotation.
+
+
+
+ x,y,z - direction of the force
+
+
+ Related:
+ ApplyActorCentralForceLocal
+ ApplyActorCentralImpulseLocal
+ ApplyActorCentralImpulseWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactorcentralimpulselocal.html b/doc/doc_files/applyactorcentralimpulselocal.html
new file mode 100644
index 0000000..8a6eb1e
--- /dev/null
+++ b/doc/doc_files/applyactorcentralimpulselocal.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ ApplyActorCentralImpulseLocal [RCBasic Doc]
+
+
+
+
sub ApplyActorCentralImpulseLocal( actor, x, y, z)
+
+ Applies an impulse directly to the center of mass of an actor. An impulse differs from a continuous force in that it applies an immediate, short-duration change to the velocity of the actor. It affects the linear velocity but does not generate rotational effects (since it's applied to the center of mass).
+
+
+
+ x,y,z - direction of the impulse
+
+
+ Related:
+ ApplyActorCentralForceLocal
+ ApplyActorCentralForceWorld
+ ApplyActorCentralImpulseWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactorcentralimpulseworld.html b/doc/doc_files/applyactorcentralimpulseworld.html
new file mode 100644
index 0000000..2bda8cb
--- /dev/null
+++ b/doc/doc_files/applyactorcentralimpulseworld.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ ApplyActorCentralImpulseWorld [RCBasic Doc]
+
+
+
+
sub ApplyActorCentralImpulseWorld( actor, x, y, z)
+
+ Applies an impulse directly to the center of mass of an actor. An impulse differs from a continuous force in that it applies an immediate, short-duration change to the velocity of the actor. It affects the linear velocity but does not generate rotational effects (since it's applied to the center of mass).
+
+
+
+ x,y,z - direction of the impulse
+
+
+ Related:
+ ApplyActorCentralForceLocal
+ ApplyActorCentralForceWorld
+ ApplyActorCentralImpulseLocal
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactordamping.html b/doc/doc_files/applyactordamping.html
new file mode 100644
index 0000000..03c9cd4
--- /dev/null
+++ b/doc/doc_files/applyactordamping.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+ ApplyActorDamping [RCBasic Doc]
+
+
+
+
sub ApplyActorDamping( actor, timeStep)
+
+ Reduces the velocity of an actor over time, simulating the effect of friction or air resistance.
+
+
+ This function applies the linear and angular damping values set with the SetActorDamping() function.
+
+
+ init_damping = False
+ SetActorDamping( actor, 0.1 , 0.5 )
+ ApplyActorCentralImpulse( actor, 300 , 0 , 0 )
+
+ While True
+ If Not init_damping Then
+ ApplyActorDamping( actor, 5.0 )
+ init_damping = True
+ End If
+ Update( )
+ Wend
+
+ Related:
+ setActorDamping
+ getActorLinearDamping
+ getActorAngularDamping
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactorforcelocal.html b/doc/doc_files/applyactorforcelocal.html
new file mode 100644
index 0000000..c6b4f27
--- /dev/null
+++ b/doc/doc_files/applyactorforcelocal.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ ApplyActorForceLocal [RCBasic Doc]
+
+
+
+
sub ApplyActorForceLocal( actor, x, y, z, rel_x, rel_y, rel_z)
+
+ Applies a force to an actor at a specific point. Unlike ApplyActorCentralForce(local/world), which applies force only at the center of mass (affecting linear velocity), this can generate both linear motion and rotation (torque), depending on where the force is applied relative to the center of mass.
+
+
+
+ x,y,z - direction of the force
+
+
+ rel_x, rel_y, rel_z - position to apply the force to relative to the center of mass
+
+
+ Related:
+ ApplyActorForceWorld
+ ApplyActorCentralForceLocal
+ ApplyActorCentralForceWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactorforceworld.html b/doc/doc_files/applyactorforceworld.html
new file mode 100644
index 0000000..13e7bb0
--- /dev/null
+++ b/doc/doc_files/applyactorforceworld.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ ApplyActorForceWorld [RCBasic Doc]
+
+
+
+
sub ApplyActorForceWorld( actor, x, y, z, rel_x, rel_y, rel_z)
+
+ Applies a force to an actor at a specific point. Unlike ApplyActorCentralForce(local/world), which applies force only at the center of mass (affecting linear velocity), this can generate both linear motion and rotation (torque), depending on where the force is applied relative to the center of mass.
+
+
+
+ x,y,z - direction of the force
+
+
+ rel_x, rel_y, rel_z - position to apply the force to relative to the center of mass
+
+
+ Related:
+ ApplyActorForceLocal
+ ApplyActorCentralForceLocal
+ ApplyActorCentralForceWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactorimpulselocal.html b/doc/doc_files/applyactorimpulselocal.html
new file mode 100644
index 0000000..a1a8754
--- /dev/null
+++ b/doc/doc_files/applyactorimpulselocal.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ ApplyActorImpulseLocal [RCBasic Doc]
+
+
+
+
sub ApplyActorImpulseLocal( actor, x, y, z, rel_x, rel_y, rel_z)
+
+ Applies an impulse to an actor at a specific point. Unlike ApplyActorCentralImpulse(local/world), which applies impulse only at the center of mass (affecting linear velocity), this can generate both linear motion and rotation (torque), depending on where the force is applied relative to the center of mass.
+
+
+
+ x,y,z - direction of the impulse
+
+
+ rel_x, rel_y, rel_z - position to apply the force to relative to the center of mass
+
+
+ Related:
+ ApplyActorImpulseWorld
+ ApplyActorForceLocal
+ ApplyActorForceWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactorimpulseworld.html b/doc/doc_files/applyactorimpulseworld.html
new file mode 100644
index 0000000..8d8b6c4
--- /dev/null
+++ b/doc/doc_files/applyactorimpulseworld.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ applyActorImpulseWorld [RCBasic Doc]
+
+
+
+
sub applyActorImpulseWorld( actor, x, y, z, rel_x, rel_y, rel_z)
+
+ Applies an impulse to an actor at a specific point. Unlike ApplyActorCentralImpulse(local/world), which applies impulse only at the center of mass (affecting linear velocity), this can generate both linear motion and rotation (torque), depending on where the force is applied relative to the center of mass.
+
+
+
+ x,y,z - direction of the impulse
+
+
+ rel_x, rel_y, rel_z - position to apply the force to relative to the center of mass
+
+
+ Related:
+ ApplyActorImpulseLocal
+ ApplyActorForceLocal
+ ApplyActorForceWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactortorqueimpulselocal.html b/doc/doc_files/applyactortorqueimpulselocal.html
new file mode 100644
index 0000000..c738226
--- /dev/null
+++ b/doc/doc_files/applyactortorqueimpulselocal.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ applyActorTorqueImpulseLocal [RCBasic Doc]
+
+
+
+
sub applyActorTorqueImpulseLocal( actor, x, y, z)
+
+ Applies an impulse that directly affects the angular velocity of an actor, causing it to rotate. This is similar to applying an impulse, but instead of changing the linear velocity (which applyActorCentralImpulse does), it alters the body's rotational motion (angular velocity) instantaneously.
+
+
+
+ x, y, z - Direction of rotation
+
+
+ Related:
+ ApplyActorTorque
+ ApplyActorTorqueImpulseWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactortorqueimpulseworld.html b/doc/doc_files/applyactortorqueimpulseworld.html
new file mode 100644
index 0000000..ffc8248
--- /dev/null
+++ b/doc/doc_files/applyactortorqueimpulseworld.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ applyActorTorqueImpulseWorld [RCBasic Doc]
+
+
+
+
sub applyActorTorqueImpulseWorld( actor, x, y, z)
+
+ Applies an impulse that directly affects the angular velocity of an actor, causing it to rotate. This is similar to applying an impulse, but instead of changing the linear velocity (which applyActorCentralImpulse does), it alters the body's rotational motion (angular velocity) instantaneously.
+
+
+
+ x, y, z - Direction of rotation
+
+
+ Related:
+ ApplyActorTorque
+ ApplyActorTorqueImpulseLocal
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactortorquelocal.html b/doc/doc_files/applyactortorquelocal.html
new file mode 100644
index 0000000..02b61a4
--- /dev/null
+++ b/doc/doc_files/applyactortorquelocal.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ applyActorTorqueLocal [RCBasic Doc]
+
+
+
+
sub applyActorTorqueLocal( actor, x, y, z)
+
+ Applies a continuous torque to an actor, causing it to accelerate its rotational motion over time. Unlike applyActorTorqueImpulse, which causes an immediate change in angular velocity, this applies a torque force gradually, leading to a continuous rotational effect, similar to applying a force to linear motion.
+
+
+
+ x, y, z - direction of rotation
+
+
+ Related:
+ ApplyActorTorqueWorld
+ ApplyActorTorqueImpulseLocal
+ ApplyActorTorqueImpulseWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/applyactortorqueworld.html b/doc/doc_files/applyactortorqueworld.html
new file mode 100644
index 0000000..d2265c8
--- /dev/null
+++ b/doc/doc_files/applyactortorqueworld.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ applyActorTorqueWorld [RCBasic Doc]
+
+
+
+
sub applyActorTorqueWorld( actor, x, y, z)
+
+ Applies a continuous torque to an actor, causing it to accelerate its rotational motion over time. Unlike applyActorTorqueImpulse, which causes an immediate change in angular velocity, this applies a torque force gradually, leading to a continuous rotational effect, similar to applying a force to linear motion.
+
+
+
+ x, y, z - direction of rotation
+
+
+ Related:
+ ApplyActorTorqueLocal
+ ApplyActorTorqueImpulseLocal
+ ApplyActorTorqueImpulseWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/arraycopy.html b/doc/doc_files/arraycopy.html
new file mode 100644
index 0000000..01a2788
--- /dev/null
+++ b/doc/doc_files/arraycopy.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ ArrayCopy [RCBasic Doc]
+
+
+
+
sub ArrayCopy(ByRef src, ByRef dst)
+
+ Copies the contents of src array to dst array
+
+
+ Note: This function is a special case in that it can take any type for src or dst
+
+ Related:
+ ArrayDim
+ ArraySize
+ ArrayFill
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/arraydim.html b/doc/doc_files/arraydim.html
new file mode 100644
index 0000000..c2b0268
--- /dev/null
+++ b/doc/doc_files/arraydim.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ ArrayDim [RCBasic Doc]
+
+
+
+
function ArrayDim(Byref id)
+
+ Returns the number of dimensions in an array
+
+ Related:
+ ArrayCopy
+ ArrayFill
+ ArraySize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/arrayfill.html b/doc/doc_files/arrayfill.html
new file mode 100644
index 0000000..c6c12c0
--- /dev/null
+++ b/doc/doc_files/arrayfill.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ ArrayFill [RCBasic Doc]
+
+
+
+
sub ArrayFill(ByRef src, fdata)
+
+ Fills all the elements in an array with the value in fdata
+
+ Related:
+ ArrayCopy
+ ArrayDim
+ ArraySize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/arrays.html b/doc/doc_files/arrays.html
new file mode 100644
index 0000000..add3644
--- /dev/null
+++ b/doc/doc_files/arrays.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+ RCBasic Arrays [RCBasic Doc]
+
+
+
+
ARRAYS
+
+ In complex programs there is often a need to be able to store large amounts of data. It would be unreasonable to have to create a variable for each piece of data we may need to store. This is where an array can come in handy. Arrays are simply ways of using one variable to store multiple different values. You can create arrays of numbers or strings. Look at the following:
+
+
+ Dim A[ 5 ]
+
+
+ The above example creates an array of numbers called A. A can store five numbers which are retrieved using A[0] to A[4]. Notice that A[4] is the last element in the array and not A[5]. That is because the first index in the array is 0 and the array only stores 5 numbers. To set the values in this array you could do the following:
+
+
+ A[ 0 ] = 3
+ A[ 1 ] = 2
+ A[ 2 ] = 7
+ A[ 3 ] = 1
+ A[ 4 ] = 0
+
+
+ You would access and array just like you would a variable. Look at the following:
+
+
+ X = A[ 0 ] + A[ 3 ]
+
+
+ To make a string variable you would do the same thing you do to make a number variable except you would use the $ just like you would use to make a normal string variable. Look at the following:
+
+
+ Dim B$[ 3 ]
+
+ B[ 0 ] = "ABC"
+ B[ 1 ] = "DEF"
+ B[ 2 ] = "I KNOW THE ALPHABET"
+
+
+ Arrays can have up to 3 dimensions. Adding more dimensions to an array can make organizing data in the array easier depending on the situation. Look at the following:
+
+
+ Dim X[ 2 , 3 ]
+ Dim Y[ 3 , 4 , 5 ]
+
+
+ The above example creates a 2 dimensional array called X which has 2 indices in its first dimension. Its second dimension has 3 indices. This means that each of the 2 indices in the first dimension can store 3 different values. So X can store a total of 6 different values. The second line creates a 3 dimensional array called Y. Y has 3 indices in its first dimension. Each of those 3 indices has 4 indices in its 2nd dimension. Each of the 4 indices has 5 values it can store. This means that Y can store a total of 60 different values. Look at the following for an example on how to work with these multi-dimensional arrays:
+
+
+ X[ 0 , 2 ] = 5
+
+ Y[ 1 , 2 , 3 ] = 6
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/arraysize.html b/doc/doc_files/arraysize.html
new file mode 100644
index 0000000..20f1cce
--- /dev/null
+++ b/doc/doc_files/arraysize.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ ArraySize [RCBasic Doc]
+
+
+
+
function ArraySize(Byref id, array_dim)
+
+ Returns the number of elements in the given dimension of an array
+
+ Related:
+ ArrayDim
+ ArrayCopy
+ ArrayFill
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/asc.html b/doc/doc_files/asc.html
new file mode 100644
index 0000000..07241b9
--- /dev/null
+++ b/doc/doc_files/asc.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Asc [RCBasic Doc]
+
+
+
+
function Asc(c$)
+
+ Returns the ASCII value of a character.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/asin.html b/doc/doc_files/asin.html
new file mode 100644
index 0000000..ad191a6
--- /dev/null
+++ b/doc/doc_files/asin.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Asin [RCBasic Doc]
+
+
+
+
function Asin(n)
+
+ Returns the ArcSine of a number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/atan.html b/doc/doc_files/atan.html
new file mode 100644
index 0000000..b8cf337
--- /dev/null
+++ b/doc/doc_files/atan.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Atan [RCBasic Doc]
+
+
+
+
function Atan(n)
+
+ Returns the ArcTangent of a number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/atan2.html b/doc/doc_files/atan2.html
new file mode 100644
index 0000000..579e4d7
--- /dev/null
+++ b/doc/doc_files/atan2.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ATan2 [RCBasic Doc]
+
+
+
+
Function ATan2(y, x)
+
+ Returns the ArcTangent of x and y
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/augmentmatrix.html b/doc/doc_files/augmentmatrix.html
new file mode 100644
index 0000000..f482c74
--- /dev/null
+++ b/doc/doc_files/augmentmatrix.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ AugmentMatrix [RCBasic Doc]
+
+
+
+
function AugmentMatrix(mA, mB, mC)
+
+ Appends the columns of matrix mB onto matrix mA and stores the result in mC.
+
+
+ NOTE: Must mA and mB must be the same number of rows.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/bin.html b/doc/doc_files/bin.html
new file mode 100644
index 0000000..a3ebf49
--- /dev/null
+++ b/doc/doc_files/bin.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Bin$ [RCBasic Doc]
+
+
+
+
function Bin$(n)
+
+ Returns the binary representation of a number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/bufferfromimage.html b/doc/doc_files/bufferfromimage.html
new file mode 100644
index 0000000..425788e
--- /dev/null
+++ b/doc/doc_files/bufferfromimage.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ BufferFromImage [RCBasic Doc]
+
+
+
+
sub BufferFromImage(slot, byref buffer)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/bufferfrommatrix.html b/doc/doc_files/bufferfrommatrix.html
new file mode 100644
index 0000000..b6b92f2
--- /dev/null
+++ b/doc/doc_files/bufferfrommatrix.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ BufferFromMatrix [RCBasic Doc]
+
+
+
+
sub BufferFromMatrix(ByRef buffer, mA)
+
+ Saves the matrix mA in an array
+
+
+ NOTE: buffer must have the same number of dimensions as the desired matrix for the structure to remain intact.
+
+ Related:
+ MatrixFromBuffer
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/bufferfromstring.html b/doc/doc_files/bufferfromstring.html
new file mode 100644
index 0000000..0b9455e
--- /dev/null
+++ b/doc/doc_files/bufferfromstring.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ BufferFromString [RCBasic Doc]
+
+
+
+
function BufferFromString(s$, ByRef buffer)
+
+ Stores the byte value of a string into a number buffer
+
+ Related:
+ StringFromBuffer$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/canvas.html b/doc/doc_files/canvas.html
new file mode 100644
index 0000000..5ada771
--- /dev/null
+++ b/doc/doc_files/canvas.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Canvas [RCBasic Doc]
+
+
+
+
sub Canvas(c_num)
+
+ Sets the active canvas for drawing commands to use
+
+ Related:
+ ActiveCanvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/canvasclip.html b/doc/doc_files/canvasclip.html
new file mode 100644
index 0000000..0913f2c
--- /dev/null
+++ b/doc/doc_files/canvasclip.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CanvasClip [RCBasic Doc]
+
+
+
+
function CanvasClip(x, y, w, h)
+
+ Returns an image id with a selected portion of the active drawing canvas saved
+
+ Related:
+ WindowClip
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/canvasisvisible.html b/doc/doc_files/canvasisvisible.html
new file mode 100644
index 0000000..e4d4fe8
--- /dev/null
+++ b/doc/doc_files/canvasisvisible.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CanvasIsVisible [RCBasic Doc]
+
+
+
+
function CanvasIsVisible(c_num)
+
+ Returns true if a canvas is shown in the Window
+
+ Related:
+ SetCanvasVisible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/canvasz.html b/doc/doc_files/canvasz.html
new file mode 100644
index 0000000..b37887e
--- /dev/null
+++ b/doc/doc_files/canvasz.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ CanvasZ [RCBasic Doc]
+
+
+
+
function CanvasZ(c_num)
+
+ Returns the Canvas Z Order.
+
+
+ Note: Canvases with a higher Z order are drawn first and those with lower values will be drawn on top
+
+ Related:
+ SetCanvasZ
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/changedir.html b/doc/doc_files/changedir.html
new file mode 100644
index 0000000..ea7d13d
--- /dev/null
+++ b/doc/doc_files/changedir.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ChangeDir [RCBasic Doc]
+
+
+
+
sub ChangeDir(p$)
+
+ Sets the working directory that the directory commands use
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/channelispaused.html b/doc/doc_files/channelispaused.html
new file mode 100644
index 0000000..b8c14df
--- /dev/null
+++ b/doc/doc_files/channelispaused.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ChannelIsPaused [RCBasic Doc]
+
+
+
+
function ChannelIsPaused(channel)
+
+ Returns true if an audio channel is currently paused
+
+ Related:
+ PauseSound
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/channelisplaying.html b/doc/doc_files/channelisplaying.html
new file mode 100644
index 0000000..4f233de
--- /dev/null
+++ b/doc/doc_files/channelisplaying.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ ChannelIsPlaying [RCBasic Doc]
+
+
+
+
function ChannelIsPlaying(channel)
+
+ Returns true if an audio channel is playing
+
+ Related:
+ ChannelIsPaused
+ PlaySound
+ PlaySoundTimed
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/checksockets.html b/doc/doc_files/checksockets.html
new file mode 100644
index 0000000..b57031a
--- /dev/null
+++ b/doc/doc_files/checksockets.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CheckSockets [RCBasic Doc]
+
+
+
+
function CheckSockets(timeout_ms)
+
+ Checks all connected sockets for activity. If timeout_ms is greater than 0 than it will wait that many milliseconds. If less than 0 it will wait for over 49 days (hint: there is no reason what so ever to set this less than 0).
+
+
+ Returns the number of sockets that have activity (ie. a connection was made or data was sent)
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/chr.html b/doc/doc_files/chr.html
new file mode 100644
index 0000000..b449c24
--- /dev/null
+++ b/doc/doc_files/chr.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Chr$ [RCBasic Doc]
+
+
+
+
function Chr$(n)
+
+ Returns the character with the matching ASCII value n.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/cint32.html b/doc/doc_files/cint32.html
new file mode 100644
index 0000000..8dea700
--- /dev/null
+++ b/doc/doc_files/cint32.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CInt32 [RCBasic Doc]
+
+
+
+
function CInt32(i)
+
+ Returns a 32-bit signed integer.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/cint64.html b/doc/doc_files/cint64.html
new file mode 100644
index 0000000..8ecb94d
--- /dev/null
+++ b/doc/doc_files/cint64.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CInt64 [RCBasic Doc]
+
+
+
+
function CInt64(i)
+
+ Returns a 64-bit signed integer.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/circle.html b/doc/doc_files/circle.html
new file mode 100644
index 0000000..1af0f09
--- /dev/null
+++ b/doc/doc_files/circle.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Circle [RCBasic Doc]
+
+
+
+
sub Circle(x,y,radius)
+
+ Draws a circle on the current canvas.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/circlefill.html b/doc/doc_files/circlefill.html
new file mode 100644
index 0000000..554064a
--- /dev/null
+++ b/doc/doc_files/circlefill.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CircleFill [RCBasic Doc]
+
+
+
+
sub CircleFill(x,y,radius)
+
+ Draws a filled circle on the current canvas.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clearactorforces.html b/doc/doc_files/clearactorforces.html
new file mode 100644
index 0000000..43c251a
--- /dev/null
+++ b/doc/doc_files/clearactorforces.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ clearActorForces [RCBasic Doc]
+
+
+
+
sub clearActorForces( actor)
+
+ Resets or clears all the forces and torques that have been applied to a rigid body in the current simulation step. This ensures that any forces, including linear forces and torques, do not accumulate from one simulation step to the next.
+
+
+ Notes:
+
+
+
+ Resets Forces: It removes all linear forces (like those applied by applyActorForce or applyActorCentralForce) and torques (like those applied by applyActorTorque).
+
+
+ Does Not Affect Velocity: It clears only the applied forces and torques, but the current velocity (linear and angular) of the actor remains unchanged.
+
+
+ Typically Used in Each Simulation Step: Used to reset forces after each step, so that only new forces applied in the next step will affect the body.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clearcanvas.html b/doc/doc_files/clearcanvas.html
new file mode 100644
index 0000000..e8e98ca
--- /dev/null
+++ b/doc/doc_files/clearcanvas.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ClearCanvas [RCBasic Doc]
+
+
+
+
sub ClearCanvas()
+
+ Clears the active drawing canvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clearmatrix.html b/doc/doc_files/clearmatrix.html
new file mode 100644
index 0000000..82c2b5e
--- /dev/null
+++ b/doc/doc_files/clearmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ClearMatrix [RCBasic Doc]
+
+
+
+
sub ClearMatrix(mA)
+
+ Sets all elements in a matrix to zero
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clearmatrixcolumns.html b/doc/doc_files/clearmatrixcolumns.html
new file mode 100644
index 0000000..188769f
--- /dev/null
+++ b/doc/doc_files/clearmatrixcolumns.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ClearMatrixColumns [RCBasic Doc]
+
+
+
+
function ClearMatrixColumns(mA, c, num_cols)
+
+ Sets all elements in the matrix columns specified to zero.
+
+ Related:
+ ClearMatrix
+ ClearMatrixRows
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clearmatrixrows.html b/doc/doc_files/clearmatrixrows.html
new file mode 100644
index 0000000..7ea08e7
--- /dev/null
+++ b/doc/doc_files/clearmatrixrows.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ClearMatrixRows [RCBasic Doc]
+
+
+
+
function ClearMatrixRows(mA, r, num_rows)
+
+ Sets all elements in the matrix rows specified to zero.
+
+ Related:
+ ClearMatrix
+ ClearMatrixColumns
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clearmousezone.html b/doc/doc_files/clearmousezone.html
new file mode 100644
index 0000000..e1ee81f
--- /dev/null
+++ b/doc/doc_files/clearmousezone.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ClearMouseZone [RCBasic Doc]
+
+
+
+
sub ClearMouseZone()
+
+ Removes the previously set mouse zone from the window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clearstack_n.html b/doc/doc_files/clearstack_n.html
new file mode 100644
index 0000000..6135148
--- /dev/null
+++ b/doc/doc_files/clearstack_n.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ClearStack_N [RCBasic Doc]
+
+
+
+
sub ClearStack_N( num_stack )
+
+ Removes all elements from the stack
+
+ Related:
+ ClearStack_S
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clearstack_s.html b/doc/doc_files/clearstack_s.html
new file mode 100644
index 0000000..8587936
--- /dev/null
+++ b/doc/doc_files/clearstack_s.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ClearStack_S [RCBasic Doc]
+
+
+
+
sub ClearStack_S( str_stack )
+
+ Removes all elements from the stack
+
+ Related:
+ ClearStack_N
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clipmatrix.html b/doc/doc_files/clipmatrix.html
new file mode 100644
index 0000000..b06e42b
--- /dev/null
+++ b/doc/doc_files/clipmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ClipMatrix [RCBasic Doc]
+
+
+
+
sub ClipMatrix(mA, r, c, num_rows, num_cols, mB)
+
+ Copies the specified portion of matrix mA into matrix mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/clonecanvas.html b/doc/doc_files/clonecanvas.html
new file mode 100644
index 0000000..5e228ab
--- /dev/null
+++ b/doc/doc_files/clonecanvas.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ CloneCanvas [RCBasic Doc]
+
+
+
+
function CloneCanvas(c_num, mode)
+
+ Returns a clone of a canvas. Clone canvases are mirrors of the original canvas so when you draw to one it will also be on the other. This is useful for a splitscreen 2d game.
+
+
+ Mode is a canvas render mode like the one passed to OpenCanvas()
+
+ Related:
+ OpenCanvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/closecanvas.html b/doc/doc_files/closecanvas.html
new file mode 100644
index 0000000..26ed1e9
--- /dev/null
+++ b/doc/doc_files/closecanvas.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CloseCanvas [RCBasic Doc]
+
+
+
+
Sub CloseCanvas(c_num)
+
+ Closes a canvas
+
+ Related:
+ OpenCanvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/closefile.html b/doc/doc_files/closefile.html
new file mode 100644
index 0000000..81566ea
--- /dev/null
+++ b/doc/doc_files/closefile.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CloseFile [RCBasic Doc]
+
+
+
+
sub CloseFile( stream )
+
+ Closes a file
+
+ Related:
+ OpenFile
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/closewindow.html b/doc/doc_files/closewindow.html
new file mode 100644
index 0000000..24efc2d
--- /dev/null
+++ b/doc/doc_files/closewindow.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CloseWindow [RCBasic Doc]
+
+
+
+
sub CloseWindow( )
+
+ Closes the graphics window
+
+ Related:
+ OpenWindow
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/cls.html b/doc/doc_files/cls.html
new file mode 100644
index 0000000..2ab7692
--- /dev/null
+++ b/doc/doc_files/cls.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Cls [RCBasic Doc]
+
+
+
+
sub Cls()
+
+ Clears the back buffer on the window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/cofactormatrix.html b/doc/doc_files/cofactormatrix.html
new file mode 100644
index 0000000..f3ad1b5
--- /dev/null
+++ b/doc/doc_files/cofactormatrix.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CofactorMatrix [RCBasic Doc]
+
+
+
+
sub CofactorMatrix(mA, r, c)
+
+ Sets matrix mA to a cofactor. This will change the original matrix so it is recommended to copy the matrix if you still need the original matrix.
+
+ Related:
+ CopyMatrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/colorkey.html b/doc/doc_files/colorkey.html
new file mode 100644
index 0000000..ef6bf75
--- /dev/null
+++ b/doc/doc_files/colorkey.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ColorKey [RCBasic Doc]
+
+
+
+
sub ColorKey(img_id, c)
+
+ Sets the color key for an image
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/command.html b/doc/doc_files/command.html
new file mode 100644
index 0000000..558c114
--- /dev/null
+++ b/doc/doc_files/command.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ Command$ [RCBasic Doc]
+
+
+
+
function Command$(arg)
+
+ Returns command line arguments passed to a program.
+
+
+ Note: Command$(0) will always be the program being executed ( your_program.cbc )
+
+ Related:
+ NumCommands
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/comments.html b/doc/doc_files/comments.html
new file mode 100644
index 0000000..65f835d
--- /dev/null
+++ b/doc/doc_files/comments.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+ RCBasic Comments [RCBasic Doc]
+
+
+
+
COMMENTS
+
+ Comments are remarks you can add to your code which will be ignored by the compiler. To make a comment you would use a single quote. Look at the following:
+
+
+
+ Print HELLO "WORLD ' THIS IS ANOTHER COMMENT
+
+
+ MULTI-LINE COMMENTS
+
+
+ Multi-line comments are comments that can span multiple lines. To start a multi-line comment you would use forward slash followed by a single quote and you would end it with a single quote followed by a forward slash. Look at the following:
+
+
+ /
+ A
+ MULTI-LINE COMMENT
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/computeactorangularimpulsedenominator.html b/doc/doc_files/computeactorangularimpulsedenominator.html
new file mode 100644
index 0000000..06962d3
--- /dev/null
+++ b/doc/doc_files/computeactorangularimpulsedenominator.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ComputeActorAngularImpulseDenominator [RCBasic Doc]
+
+
+
+
function ComputeActorAngularImpulseDenominator( actor, x, y, z)
+
+ Computes a scalar value that represents how an actor will respond to an angular impulse at a given point, taking into account the actor's inertia tensor (which governs how the object resists rotation). This function is particularly useful in calculating the actor's rotational response to an impulse, typically during collision resolution or constraints involving rotation.
+
+ Related:
+ ComputeActorImpulseDenominator
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/computeactorgyroimpulselocal.html b/doc/doc_files/computeactorgyroimpulselocal.html
new file mode 100644
index 0000000..f18826e
--- /dev/null
+++ b/doc/doc_files/computeactorgyroimpulselocal.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ComputeActorGyroImpulseLocal [RCBasic Doc]
+
+
+
+
sub ComputeActorGyroImpulseLocal( actor, dt, ByRef x, ByRef y, ByRef z)
+
+ Computes the gyroscopic impulse for an actor in an implicit manner, based on the actor's current angular velocity and inertia. This function is used to simulate the gyroscopic effect—also known as gyroscopic precession—which occurs when a rotating object experiences a torque that causes its axis of rotation to change.
+
+ Related:
+ ComputeActorGyroImpulseWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/computeactorgyroimpulseworld.html b/doc/doc_files/computeactorgyroimpulseworld.html
new file mode 100644
index 0000000..bad5d65
--- /dev/null
+++ b/doc/doc_files/computeactorgyroimpulseworld.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ComputeActorGyroImpulseWorld [RCBasic Doc]
+
+
+
+
sub ComputeActorGyroImpulseWorld( actor, dt, ByRef x, ByRef y, ByRef z)
+
+ Computes the gyroscopic impulse for an actor in an implicit manner, but in this case, it performs the calculation relative to the world frame of reference, rather than the actor’s local frame. This function is used to handle the gyroscopic effects (i.e., gyroscopic precession) of a rotating object when a torque is applied, affecting its axis of rotation.
+
+ Related:
+ ComputeActorGyroImpulseLocal
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/computeactorimpulsedenominator.html b/doc/doc_files/computeactorimpulsedenominator.html
new file mode 100644
index 0000000..a3ce3de
--- /dev/null
+++ b/doc/doc_files/computeactorimpulsedenominator.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ComputeActorImpulseDenominator [RCBasic Doc]
+
+
+
+
function ComputeActorImpulseDenominator( actor, pos_x, pos_y, pos_z, normal_x, normal_y, normal_z)
+
+ Computes a scalar value related to how a rigid body will respond to an applied impulse at a given point. It’s primarily used internally in the physics engine to calculate how an object’s mass, inertia, and shape will affect the outcome of impulses, particularly in collisions or constraints like contact points between objects.
+
+ Related:
+ ComputeActorAngularImpulseDenominator
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/conditions.html b/doc/doc_files/conditions.html
new file mode 100644
index 0000000..f4fcdd7
--- /dev/null
+++ b/doc/doc_files/conditions.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+ RCBasic Conditions [RCBasic Doc]
+
+
+
+
CONDITIONS
+
+ RC BASIC uses the same conventions of other programming languages to control the flow of the program. There are two main ways of getting your program to decide on its next course of action. The most common way is with the IF statement block.
+
+
+ If 5 > 6 Then
+ Print "THIS WILL NOT PRINT"
+ ElseIf 5 < 6 Then
+ Print "THIS WILL PRINT"
+ Else
+ Print "THIS ALSO WILL NOT PRINT"
+ End If
+
+
+ The above example does different comparisons and will output text to a console depending on which condition is true.
+
+
+ The next method of control flow is the SELECT statement block.
+
+
+ Select Case 5
+ Case 6
+ Print THIS WILL NOT "PRINT
+ Case 5
+ Print "THIS WILL PRINT"
+ Default
+
+
+ Print "THIS WILL NOT PRINT"
+ End Select
+
+
+ The above example will compare each case in the block to the SELECT CASE . If the case is equal to the select case then the code in that case will be executed. You can also add multiple values to compare to each CASE .
+
+
+ Select Case 5
+ Case 6
+ Print THIS WILL NOT "PRINT
+ Case 4 , 5
+ Print "THIS WILL PRINT"
+ Default
+ Print "THIS WILL NOT PRINT"
+ End Select
+
+
+ The above example is mostly the same as the previous example. The difference is that in our second CASE we are comparing both 4 and 5. If either of them are equal to our SELECT argument then the code inside the CASE block will execute.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/constants.html b/doc/doc_files/constants.html
new file mode 100644
index 0000000..4696681
--- /dev/null
+++ b/doc/doc_files/constants.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ RCBasic Constants [RCBasic Doc]
+
+
+
+
CONSTANTS
+
+ RCBasic has a special type of variable called a constant which can hold an expression. This means it can hold an expression and not determine its value until its used. For example you can have a constant called C that is equal to A + B. Everytime you change the value of A or B, C's value will also change. Because constants hold expressions, any valid expression in RCBasic can be stored in a constant.
+
+
+ const A = 5
+ const MY_PRINT = print "hello world"
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/constraintexists.html b/doc/doc_files/constraintexists.html
new file mode 100644
index 0000000..9ac8234
--- /dev/null
+++ b/doc/doc_files/constraintexists.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ ConstraintExists [RCBasic Doc]
+
+
+
+
function ConstraintExists( constraint_id )
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/copyactormaterial.html b/doc/doc_files/copyactormaterial.html
new file mode 100644
index 0000000..acbb09c
--- /dev/null
+++ b/doc/doc_files/copyactormaterial.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ copyActorMaterial [RCBasic Doc]
+
+
+
+
function copyActorMaterial( actor, material_num)
+
+ Returns a material id for a copy of an actor's material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/copyfile.html b/doc/doc_files/copyfile.html
new file mode 100644
index 0000000..50b1ca9
--- /dev/null
+++ b/doc/doc_files/copyfile.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CopyFile [RCBasic Doc]
+
+
+
+
sub CopyFile(src$, dst$)
+
+ Copies the contents of src$ file to a new dst$ file
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/copyimage.html b/doc/doc_files/copyimage.html
new file mode 100644
index 0000000..be775b7
--- /dev/null
+++ b/doc/doc_files/copyimage.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CopyImage [RCBasic Doc]
+
+
+
+
function CopyImage( img_id )
+
+ Returns a copy of an image
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/copymaterial.html b/doc/doc_files/copymaterial.html
new file mode 100644
index 0000000..075a306
--- /dev/null
+++ b/doc/doc_files/copymaterial.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ copyMaterial [RCBasic Doc]
+
+
+
+
function copyMaterial( smaterial_id)
+
+ Returns a copy of a material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/copymatrix.html b/doc/doc_files/copymatrix.html
new file mode 100644
index 0000000..36f7ff1
--- /dev/null
+++ b/doc/doc_files/copymatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CopyMatrix [RCBasic Doc]
+
+
+
+
sub CopyMatrix(mA, mB)
+
+ Copies matrix mA to matrix mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/copymatrixcolumns.html b/doc/doc_files/copymatrixcolumns.html
new file mode 100644
index 0000000..6d4898d
--- /dev/null
+++ b/doc/doc_files/copymatrixcolumns.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CopyMatrixColumns [RCBasic Doc]
+
+
+
+
function CopyMatrixColumns(mA, mB, c, num_cols)
+
+ Copies the specified matrix columns from matrix mA to matrix mB.
+
+
+ Note: Matrix mB will be redimensioned to the size of the copied columns.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/copymatrixrows.html b/doc/doc_files/copymatrixrows.html
new file mode 100644
index 0000000..482687d
--- /dev/null
+++ b/doc/doc_files/copymatrixrows.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ CopyMatrixRows [RCBasic Doc]
+
+
+
+
function CopyMatrixRows(mA, mB, r, num_rows)
+
+ Copies the specified matrix rows from matrix mA to matrix mB.
+
+
+ Note: Matrix mB will be redimensioned to the size of the copied rows.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/cos.html b/doc/doc_files/cos.html
new file mode 100644
index 0000000..7d67e00
--- /dev/null
+++ b/doc/doc_files/cos.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Cos [RCBasic Doc]
+
+
+
+
function Cos(n)
+
+ Returns the Cosine of an angle
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createactoranimation.html b/doc/doc_files/createactoranimation.html
new file mode 100644
index 0000000..db707e9
--- /dev/null
+++ b/doc/doc_files/createactoranimation.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ CreateActorAnimation [RCBasic Doc]
+
+
+
+
Function CreateActorAnimation(actor, start_frame, end_frame, speed)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createanimatedactor.html b/doc/doc_files/createanimatedactor.html
new file mode 100644
index 0000000..1146adc
--- /dev/null
+++ b/doc/doc_files/createanimatedactor.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+ CreateAnimatedActor [RCBasic Doc]
+
+
+
+
function CreateAnimatedActor( mesh )
+
+ Returns a new animated actor composed of a mesh
+
+
+ The mesh can either be created using CreateMesh() or Loaded using LoadMesh()
+
+ Related:
+ CreateMesh
+ LoadMesh
+ LoadMeshFromAN8
+
+
+
+
+ Related:
+ CreateOctreeActor
+ CreateCubeActor
+ CreateSphereActor
+ CreateWaterActor
+ CreateLightActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createbillboardactor.html b/doc/doc_files/createbillboardactor.html
new file mode 100644
index 0000000..960d051
--- /dev/null
+++ b/doc/doc_files/createbillboardactor.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ CreateBillboardActor [RCBasic Doc]
+
+
+
+
function CreateBillboardActor( )
+
+ Returns a billboard actor
+
+
+ Billboard actors are flat textured planes that are always facing the camera.
+
+ Related:
+ CreateAnimatedActor
+ CreateOctreeActor
+ CreateSphereActor
+ CreateWaterActor
+ CreateLightActor
+ CreateCubeActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createconeconstraint.html b/doc/doc_files/createconeconstraint.html
new file mode 100644
index 0000000..4bc8256
--- /dev/null
+++ b/doc/doc_files/createconeconstraint.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+ CreateConeConstraint [RCBasic Doc]
+
+
+
+
function CreateConeConstraint( actorA, rbAFrame_matrix)
+
+ The Cone Constraint is a type of joint constraint used to simulate realistic rotational movement between two actors (or between an actor and the world) with specific angular limits. This constraint is especially useful for simulating ball-and-socket joints with some twisting freedom but restricted cone-like movement, such as human shoulders or robotic arms.
+
+
+ actorA = CreateCubeActor( 100 )
+
+ rbA = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( rbA, 4 )
+ SetMatrixTranslation( rbA, 0 , 40 , 0 )
+ SetMatrixRotation( rbA, 0 , 0 , 0 )
+
+ test_cone = CreateConeConstraint( actorA, rbA )
+
+
+ Note: It is recommended to use CreateConeConstraintEx() in most cases
+
+ Related:
+ CreateConeConstraintEx
+ SetIdentityMatrix
+ SetMatrixTranslation
+ SetMatrixRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createconeconstraintex.html b/doc/doc_files/createconeconstraintex.html
new file mode 100644
index 0000000..bfe5bc3
--- /dev/null
+++ b/doc/doc_files/createconeconstraintex.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ createConeConstraintEx [RCBasic Doc]
+
+
+
+
function createConeConstraintEx( actorA, actorB, rbAFrame_matrix, rbBFrame_matrix)
+
+ The Cone Constraint is a type of joint constraint used to simulate realistic rotational movement between two actors (or between an actor and the world) with specific angular limits. This constraint is especially useful for simulating ball-and-socket joints with some twisting freedom but restricted cone-like movement, such as human shoulders or robotic arms.
+
+
+ actorA = CreateCubeActor( 100 )
+ actorB = CreateCubeActor( 100 )
+
+ rbA = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( rbA, 4 )
+ SetMatrixTranslation( rbA, 0 , 40 , 0 )
+ SetMatrixRotation( rbA, 0 , 0 , 0 )
+
+ rbB = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( rbB, 4 )
+ SetMatrixTranslation( rbB, 0 , 40 , 0 )
+ SetMatrixRotation( rbB, 0 , 0 , 0 )
+
+ test_cone = CreateConeConstraint( actorA, rbA )
+
+ Related:
+ CreateConeConstraint
+ SetIdentityMatrix
+ SetMatrixTranslation
+ SetMatrixRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createcubeactor.html b/doc/doc_files/createcubeactor.html
new file mode 100644
index 0000000..b5bccbe
--- /dev/null
+++ b/doc/doc_files/createcubeactor.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ CreateCubeActor [RCBasic Doc]
+
+
+
+
function CreateCubeActor( cube_size )
+
+ Returns an actor with a cube mesh of the specified size ( cube_size x cube_size x cube_size )
+
+ Related:
+ CreateAnimatedActor
+ CreateOctreeActor
+ CreateSphereActor
+ CreateWaterActor
+ CreateLightActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createhingeconstraint.html b/doc/doc_files/createhingeconstraint.html
new file mode 100644
index 0000000..3b5cc44
--- /dev/null
+++ b/doc/doc_files/createhingeconstraint.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+ createHingeConstraint [RCBasic Doc]
+
+
+
+
function createHingeConstraint( actorA, frameA, useReferenceFrameA )
+
+ Simulates a hinge joint, which allows two actors (or an actor and the world) to rotate around a single axis while restricting movement along the other axes. This is similar to the way a door swings on its hinges or how an elbow joint functions in the human body.
+
+
+ actorA = CreateCubeActor( 100 )
+ frameA = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( frameA, 4 )
+ SetMatrixTranslation( frameA, 0 , 1 , 0 )
+ hinge = CreateHingeConstraint( actorA, frameA, true )
+
+
+ Note: It is recommended to use CreateSlideConstraintEx() in most cases
+
+ Related:
+ CreateHingeConstraintEx
+ SetIdentityMatrix
+ SetMatrixTranslation
+ SetMatrixRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createhingeconstraintex.html b/doc/doc_files/createhingeconstraintex.html
new file mode 100644
index 0000000..5f2467b
--- /dev/null
+++ b/doc/doc_files/createhingeconstraintex.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ createHingeConstraintEx [RCBasic Doc]
+
+
+
+
function createHingeConstraintEx( actorA, actorB, frameA, frameB, useReferenceFrameA)
+
+ Simulates a hinge joint, which allows two actors (or an actor and the world) to rotate around a single axis while restricting movement along the other axes. This is similar to the way a door swings on its hinges or how an elbow joint functions in the human body.
+
+
+ actorA = CreateCubeActor( 100 )
+ frameA = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( frameA, 4 )
+ SetMatrixTranslation( frameA, 0 , 1 , 0 )
+
+ actorB = CreateCubeActor( 100 )
+ frameB = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( frameB, 4 )
+ SetMatrixTranslation( frameB, 0 , 1 , 0 )
+
+ hinge = CreateHingeConstraint( actorA, actorB, frameA, frameB, true )
+
+
+ Note: It is recommended to use CreateHingeConstraintEx() in most cases
+
+ Related:
+ CreateHingeConstraint
+ SetIdentityMatrix
+ SetMatrixTranslation
+ SetMatrixRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createimage.html b/doc/doc_files/createimage.html
new file mode 100644
index 0000000..1bb8d4f
--- /dev/null
+++ b/doc/doc_files/createimage.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ CreateImage [RCBasic Doc]
+
+
+
+
function CreateImage(w, h, byref buffer)
+
+ Returns an image created from the buffer provided
+
+ Related:
+ CreateImageEx
+ LoadImage
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createimageex.html b/doc/doc_files/createimageex.html
new file mode 100644
index 0000000..ca754eb
--- /dev/null
+++ b/doc/doc_files/createimageex.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ createImageEx [RCBasic Doc]
+
+
+
+
function createImageEx(w, h, byref buffer, color)
+
+ Returns an image created from the buffer provided
+
+
+ The color parameter is a color key value to apply
+
+ Related:
+ CreateImage
+ LoadImage
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createlightactor.html b/doc/doc_files/createlightactor.html
new file mode 100644
index 0000000..46d9463
--- /dev/null
+++ b/doc/doc_files/createlightactor.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ CreateLightActor [RCBasic Doc]
+
+
+
+
function CreateLightActor( )
+
+ Returns a new light in the scene
+
+ Related:
+ CreateMeshActor
+ CreateMeshOctreeActor
+ CreateCubeActor
+ CreateSphereActor
+ CreateWaterPlaneActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/creatematerial.html b/doc/doc_files/creatematerial.html
new file mode 100644
index 0000000..262368d
--- /dev/null
+++ b/doc/doc_files/creatematerial.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ createMaterial [RCBasic Doc]
+
+
+
+
function createMaterial()
+
+ Returns a new material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createmesh.html b/doc/doc_files/createmesh.html
new file mode 100644
index 0000000..023391d
--- /dev/null
+++ b/doc/doc_files/createmesh.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CreateMesh [RCBasic Doc]
+
+
+
+
function CreateMesh( )
+
+ Returns a new mesh
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createmeshactor.html b/doc/doc_files/createmeshactor.html
new file mode 100644
index 0000000..7651833
--- /dev/null
+++ b/doc/doc_files/createmeshactor.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+ CreateAnimatedActor [RCBasic Doc]
+
+
+
+
function CreateAnimatedActor( mesh )
+
+ Returns a new animated actor composed of a mesh
+
+
+ The mesh can either be created using CreateMesh() or Loaded using LoadMesh()
+
+ Related:
+ CreateMesh
+ LoadMesh
+ LoadMeshFromAN8
+
+
+
+
+ Related:
+ CreateOctreeActor
+ CreateCubeActor
+ CreateSphereActor
+ CreateWaterPlaneActor
+ CreateLightActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createmeshoctreeactor.html b/doc/doc_files/createmeshoctreeactor.html
new file mode 100644
index 0000000..773d56a
--- /dev/null
+++ b/doc/doc_files/createmeshoctreeactor.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+ CreateMeshOctreeActor [RCBasic Doc]
+
+
+
+
function CreateMeshOctreeActor( mesh )
+
+ Returns a mesh actor optimized for large objects (such as levels)
+
+ Related:
+ CreateMesh
+ LoadMesh
+
+
+
+
+ Related:
+ CreateMeshActor
+ CreateCubeActor
+ CreateSphereActor
+ CreateWaterPlaneActor
+ CreateLightActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createoctreeactor.html b/doc/doc_files/createoctreeactor.html
new file mode 100644
index 0000000..f98ec0b
--- /dev/null
+++ b/doc/doc_files/createoctreeactor.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+ CreateOctreeActor [RCBasic Doc]
+
+
+
+
function CreateOctreeActor( mesh )
+
+ Returns a mesh actor optimized for large objects (such as levels)
+
+ Related:
+ CreateMesh
+ LoadMesh
+
+
+
+
+ Related:
+ CreateAnimatedActor
+ CreateCubeActor
+ CreateSphereActor
+ CreateWaterActor
+ CreateLightActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createparticleactor.html b/doc/doc_files/createparticleactor.html
new file mode 100644
index 0000000..df45f38
--- /dev/null
+++ b/doc/doc_files/createparticleactor.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+ CreateParticleActor [RCBasic Doc]
+
+
+
+
function CreateParticleActor( particle_type )
+
+ Returns a new particle actor
+
+
+ Possible Particle Types
+
+
+
+ PARTICLE_TYPE_POINT
+
+
+ PARTICLE_TYPE_BOX
+
+
+ PARTICLE_TYPE_SPHERE
+
+
+ PARTICLE_TYPE_CYLINDER
+
+
+ PARTICLE_TYPE_MESH
+
+
+ PARTICLE_TYPE_RING
+
+
+ Related:
+ CreateMeshOctreeActor
+ CreateCubeActor
+ CreateSphereActor
+ CreateWaterPlaneActor
+ CreateLightActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createplanemesh.html b/doc/doc_files/createplanemesh.html
new file mode 100644
index 0000000..3967e52
--- /dev/null
+++ b/doc/doc_files/createplanemesh.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ CreatePlaneMesh [RCBasic Doc]
+
+
+
+
Function CreatePlaneMesh( w, h, tileCount_w, tileCount_h )
+
+ Creates a flat plane
+
+
+
+ w, h - The width and height of the plane
+
+
+ tileCount_w, TileCount_h - The number of subdivisions across and down the plane
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createpointconstraint.html b/doc/doc_files/createpointconstraint.html
new file mode 100644
index 0000000..f9ecea7
--- /dev/null
+++ b/doc/doc_files/createpointconstraint.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ createPointConstraint [RCBasic Doc]
+
+
+
+
function createPointConstraint( actorA, pxA, pyA, pzA)
+
+ A type of constraint that allows two actors (or an actor and the world) to move freely relative to each other while ensuring that one point on each body remains coincident. Essentially, it ensures that the two actors stay connected at a single point, but without restricting their relative rotations. This kind of constraint is useful when you need a connection that allows full rotation in all directions, such as a pendulum, ball joint, or even some suspension systems.
+
+ Related:
+ CreatePointConstraintEx
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createpointconstraintex.html b/doc/doc_files/createpointconstraintex.html
new file mode 100644
index 0000000..b603e5d
--- /dev/null
+++ b/doc/doc_files/createpointconstraintex.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ createPointConstraintEx [RCBasic Doc]
+
+
+
+
function createPointConstraintEx( actorA, actorB, pxA, pyA, pzA, pxB, pyB, pzB)
+
+ A type of constraint that allows two actors (or an actor and the world) to move freely relative to each other while ensuring that one point on each body remains coincident. Essentially, it ensures that the two actors stay connected at a single point, but without restricting their relative rotations. This kind of constraint is useful when you need a connection that allows full rotation in all directions, such as a pendulum, ball joint, or even some suspension systems.
+
+ Related:
+ CreatePointConstraint
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createslideconstraint.html b/doc/doc_files/createslideconstraint.html
new file mode 100644
index 0000000..d1f8c1e
--- /dev/null
+++ b/doc/doc_files/createslideconstraint.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ createSlideConstraint [RCBasic Doc]
+
+
+
+
function createSlideConstraint( actorA, frameInB_matrix, useLinearReferenceFrameA)
+
+ A type of constraint that restricts the motion between two actors (or between an actor and the world) in such a way that they can slide along a specific axis and rotate around the same axis, while limiting or allowing movement along other axes. This constraint is similar to a prismatic joint with added rotational freedom, making it useful for simulating objects like pistons, sliding doors, or rail systems.
+
+
+ actorA = CreateCubeActor( 100 )
+ frameB = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( frameB, 4 )
+ SetMatrixTranslation( frameB, 0 , 50 , 0 )
+ SetMatrixRotation( frameB, 0 , 90 , 0 )
+ slide = CreateSlideConstraint( actorA, frameB, true )
+
+
+ Note: It is recommended to use CreateSlideConstraintEx() in most cases
+
+ Related:
+ CreateSlideConstraintEx
+ SetIdentityMatrix
+ SetMatrixTranslation
+ SetMatrixRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createslideconstraintex.html b/doc/doc_files/createslideconstraintex.html
new file mode 100644
index 0000000..00371f4
--- /dev/null
+++ b/doc/doc_files/createslideconstraintex.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ createSlideConstraintEx [RCBasic Doc]
+
+
+
+
function createSlideConstraintEx( actorA, actorB, frameInA_matrix, frameInB_matrix, useLinearReferenceFrameA)
+
+ A type of constraint that restricts the motion between two actors (or between an actor and the world) in such a way that they can slide along a specific axis and rotate around the same axis, while limiting or allowing movement along other axes. This constraint is similar to a prismatic joint with added rotational freedom, making it useful for simulating objects like pistons, sliding doors, or rail systems.
+
+
+ actorA = CreateCubeActor( 100 )
+ frameA = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( frameA, 4 )
+ SetMatrixTranslation( frameA, 0 , 0 , 0 )
+ SetMatrixRotation( frameA, 0 , 90 , 0 )
+
+ actorB = CreateCubeActor( 100 )
+ frameB = DimMatrix( 4 , 4 )
+ SetIdentityMatrix( frameB, 4 )
+ SetMatrixTranslation( frameB, 0 , 50 , 0 )
+ SetMatrixRotation( frameB, 0 , 90 , 0 )
+ slide = CreateSlideConstraintEx( actorA, actorB, frameA, frameB, true )
+
+
+ Note: It is recommended to use CreateSlideConstraintEx() in most cases
+
+ Related:
+ CreateSlideConstraint
+ SetIdentityMatrix
+ SetMatrixTranslation
+ SetMatrixRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createsound.html b/doc/doc_files/createsound.html
new file mode 100644
index 0000000..f0e836a
--- /dev/null
+++ b/doc/doc_files/createsound.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CreateSound [RCBasic Doc]
+
+
+
+
function CreateSound(byref buffer, buffer_size, vol)
+
+ Returns a new sound from a buffer of raw audio data
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createsphereactor.html b/doc/doc_files/createsphereactor.html
new file mode 100644
index 0000000..78b54cd
--- /dev/null
+++ b/doc/doc_files/createsphereactor.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ CreateSphereActor [RCBasic Doc]
+
+
+
+
function CreateSphereActor( radius )
+
+ Returns an actor composed of a sphere mesh
+
+ Related:
+ CreateAnimatedActor
+ CreateOctreeActor
+ CreateBillboardActor
+ CreateWaterActor
+ CreateLightActor
+ CreateCubeActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createsprite.html b/doc/doc_files/createsprite.html
new file mode 100644
index 0000000..d83eab9
--- /dev/null
+++ b/doc/doc_files/createsprite.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CreateSprite [RCBasic Doc]
+
+
+
+
function CreateSprite( img )
+
+ Returns new sprite
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createspriteanimation.html b/doc/doc_files/createspriteanimation.html
new file mode 100644
index 0000000..86e6406
--- /dev/null
+++ b/doc/doc_files/createspriteanimation.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ CreateSpriteAnimation [RCBasic Doc]
+
+
+
+
Function CreateSpriteAnimation(sprite, anim_length, speed)
+
+ Returns a new sprite animation id
+
+
+
+ anim_length - number of frames in the animation
+
+
+ speed - frames per second for the animation
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createstack_n.html b/doc/doc_files/createstack_n.html
new file mode 100644
index 0000000..0636ce1
--- /dev/null
+++ b/doc/doc_files/createstack_n.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CreateStack_N [RCBasic Doc]
+
+
+
+
function CreateStack_N( )
+
+ Returns a new number stack
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createstack_s.html b/doc/doc_files/createstack_s.html
new file mode 100644
index 0000000..5f954c2
--- /dev/null
+++ b/doc/doc_files/createstack_s.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CreateStack_S [RCBasic Doc]
+
+
+
+
function CreateStack_S()
+
+ Returns a new string stack
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createterrainactor.html b/doc/doc_files/createterrainactor.html
new file mode 100644
index 0000000..d100dea
--- /dev/null
+++ b/doc/doc_files/createterrainactor.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ CreateTerrainActor [RCBasic Doc]
+
+
+
+
function CreateTerrainActor( hmap_file$ )
+
+ Returns terrain generated from a height map
+
+
+ Note: Height Maps can be any supported image format
+
+ Related:
+ CreateAnimatedActor
+ CreateOctreeActor
+ CreateSphereActor
+ CreateWaterActor
+ CreateLightActor
+ CreateCubeActor
+ CreateBillboardActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createtilemap.html b/doc/doc_files/createtilemap.html
new file mode 100644
index 0000000..5e0604a
--- /dev/null
+++ b/doc/doc_files/createtilemap.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ CreateTileMap [RCBasic Doc]
+
+
+
+
Function CreateTileMap(tileset, widthInTiles, heightInTiles)
+
+ Returns a new tile map.
+
+
+ Parameters
+
+
+
+ tileset - A tileset Id. ( Tilesets are created with CreateTileSet() )
+
+
+ widthInTiles - The number of tiles wide ( Note: Not the pixel width but number of tiles )
+
+
+ widthInTiles - The number of tiles high ( Note: Not the pixel height but number of tiles )
+
+
+ Related:
+ CreateTileSet
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createtileset.html b/doc/doc_files/createtileset.html
new file mode 100644
index 0000000..170187a
--- /dev/null
+++ b/doc/doc_files/createtileset.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ CreateTileSet [RCBasic Doc]
+
+
+
+
Function CreateTileSet(img_id, tile_w, tile_h)
+
+ Return a new Tileset
+
+
+ Parameters:
+
+
+
+ img_id - A image to use as a tile sheet
+
+
+ tile_w - The width of each tile
+
+
+ tile_h - The height of each tile
+
+
+ Related:
+ CreateTileMap
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createwateractor.html b/doc/doc_files/createwateractor.html
new file mode 100644
index 0000000..2fbf096
--- /dev/null
+++ b/doc/doc_files/createwateractor.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ CreateWaterActor [RCBasic Doc]
+
+
+
+
function CreateWaterActor( mesh, waveHeight, waveSpeed, waveLength )
+
+ Creates an actor with water properties set on a base mesh
+
+ Related:
+ CreateAnimatedActor
+ CreateOctreeActor
+ CreateSphereActor
+ CreateCubeActor
+ CreateLightActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/createwaterplaneactor.html b/doc/doc_files/createwaterplaneactor.html
new file mode 100644
index 0000000..f5b50f6
--- /dev/null
+++ b/doc/doc_files/createwaterplaneactor.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ CreateWaterPlaneActor [RCBasic Doc]
+
+
+
+
function CreateWaterPlaneActor( w, h )
+
+ Returns a water plane actor
+
+ Related:
+ CreateMeshActor
+ CreateMeshOctreeActor
+ CreateCubeActor
+ CreateSphereActor
+ CreateLightActor
+ CreateBillboardActor
+ CreateTerrainActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/cubematrix.html b/doc/doc_files/cubematrix.html
new file mode 100644
index 0000000..fd8344c
--- /dev/null
+++ b/doc/doc_files/cubematrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ CubeMatrix [RCBasic Doc]
+
+
+
+
function CubeMatrix(mA, mB)
+
+ Returns matrix mA raised to the 3rd power
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/date.html b/doc/doc_files/date.html
new file mode 100644
index 0000000..4ce196c
--- /dev/null
+++ b/doc/doc_files/date.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Date$ [RCBasic Doc]
+
+
+
+
function Date$()
+
+ Returns the date in "MM-DD-YYYY" format
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/degrees.html b/doc/doc_files/degrees.html
new file mode 100644
index 0000000..8c331fc
--- /dev/null
+++ b/doc/doc_files/degrees.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Degrees [RCBasic Doc]
+
+
+
+
function Degrees(r)
+
+ Returns angle converted from radians to degrees
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deleteactor.html b/doc/doc_files/deleteactor.html
new file mode 100644
index 0000000..0695d93
--- /dev/null
+++ b/doc/doc_files/deleteactor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteActor [RCBasic Doc]
+
+
+
+
sub DeleteActor( actor )
+
+ Removes an actor from the scene and frees its memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deleteactoranimation.html b/doc/doc_files/deleteactoranimation.html
new file mode 100644
index 0000000..89436d3
--- /dev/null
+++ b/doc/doc_files/deleteactoranimation.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteActorAnimation [RCBasic Doc]
+
+
+
+
sub DeleteActorAnimation(actor, animation)
+
+ Deletes an actor's animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deleteconstraint.html b/doc/doc_files/deleteconstraint.html
new file mode 100644
index 0000000..d4ec770
--- /dev/null
+++ b/doc/doc_files/deleteconstraint.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ deleteConstraint [RCBasic Doc]
+
+
+
+
sub deleteConstraint( constraint_id)
+
+ Removes a constraint
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletefont.html b/doc/doc_files/deletefont.html
new file mode 100644
index 0000000..a4e5d82
--- /dev/null
+++ b/doc/doc_files/deletefont.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteFont [RCBasic Doc]
+
+
+
+
sub DeleteFont(font_id)
+
+ Frees a font from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deleteimage.html b/doc/doc_files/deleteimage.html
new file mode 100644
index 0000000..43ba22b
--- /dev/null
+++ b/doc/doc_files/deleteimage.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteImage [RCBasic Doc]
+
+
+
+
sub DeleteImage(img)
+
+ Removes an image from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletematerial.html b/doc/doc_files/deletematerial.html
new file mode 100644
index 0000000..7424dda
--- /dev/null
+++ b/doc/doc_files/deletematerial.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ deleteMaterial [RCBasic Doc]
+
+
+
+
sub deleteMaterial( material_id)
+
+ Removes a material from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletematrix.html b/doc/doc_files/deletematrix.html
new file mode 100644
index 0000000..3cd8f16
--- /dev/null
+++ b/doc/doc_files/deletematrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteMatrix [RCBasic Doc]
+
+
+
+
Sub DeleteMatrix(mA)
+
+ Frees a matrix from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletematrixcolumns.html b/doc/doc_files/deletematrixcolumns.html
new file mode 100644
index 0000000..1d62c02
--- /dev/null
+++ b/doc/doc_files/deletematrixcolumns.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ DeleteMatrixColumns [RCBasic Doc]
+
+
+
+
function DeleteMatrixColumns(mA, c, num_cols)
+
+ Removes the specified columns from a matrix
+
+
+ Returns false if column are outside matrix
+
+ Related:
+ DeleteMatrixRows
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletematrixrows.html b/doc/doc_files/deletematrixrows.html
new file mode 100644
index 0000000..9744bbd
--- /dev/null
+++ b/doc/doc_files/deletematrixrows.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ DeleteMatrixRows [RCBasic Doc]
+
+
+
+
function DeleteMatrixRows(mA, r, num_rows)
+
+ Removes the specified rows from a matrix
+
+
+ Returns false if rows are outside matrix
+
+ Related:
+ DeleteMatrixColumns
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletemesh.html b/doc/doc_files/deletemesh.html
new file mode 100644
index 0000000..97df4d5
--- /dev/null
+++ b/doc/doc_files/deletemesh.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteMesh [RCBasic Doc]
+
+
+
+
sub DeleteMesh( mesh )
+
+ Removes a mesh from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletemusic.html b/doc/doc_files/deletemusic.html
new file mode 100644
index 0000000..e4ce76d
--- /dev/null
+++ b/doc/doc_files/deletemusic.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteMusic [RCBasic Doc]
+
+
+
+
sub DeleteMusic()
+
+ Removes the current music track from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletesound.html b/doc/doc_files/deletesound.html
new file mode 100644
index 0000000..030955e
--- /dev/null
+++ b/doc/doc_files/deletesound.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteSound [RCBasic Doc]
+
+
+
+
sub DeleteSound(snd)
+
+ Removes a sound from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletesprite.html b/doc/doc_files/deletesprite.html
new file mode 100644
index 0000000..33b4ffd
--- /dev/null
+++ b/doc/doc_files/deletesprite.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteSprite [RCBasic Doc]
+
+
+
+
Sub DeleteSprite( sprite )
+
+ Removes a sprite from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletespriteanimation.html b/doc/doc_files/deletespriteanimation.html
new file mode 100644
index 0000000..b548c7b
--- /dev/null
+++ b/doc/doc_files/deletespriteanimation.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ DeleteSpriteAnimation [RCBasic Doc]
+
+
+
+
Sub DeleteSpriteAnimation(sprite, animation)
+
+ Delete's a sprite's animation
+
+ Related:
+ CreateSpriteAnimation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletestack_n.html b/doc/doc_files/deletestack_n.html
new file mode 100644
index 0000000..789e58c
--- /dev/null
+++ b/doc/doc_files/deletestack_n.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteStack_N [RCBasic Doc]
+
+
+
+
sub DeleteStack_N( num_stack )
+
+ Removes a number stack from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletestack_s.html b/doc/doc_files/deletestack_s.html
new file mode 100644
index 0000000..2ae26e7
--- /dev/null
+++ b/doc/doc_files/deletestack_s.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteStack_S [RCBasic Doc]
+
+
+
+
sub DeleteStack_S( str_stack )
+
+ Removes a string stack from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/deletevideo.html b/doc/doc_files/deletevideo.html
new file mode 100644
index 0000000..7367586
--- /dev/null
+++ b/doc/doc_files/deletevideo.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DeleteVideo [RCBasic Doc]
+
+
+
+
sub DeleteVideo()
+
+ Removes the current video track from memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/determinant.html b/doc/doc_files/determinant.html
new file mode 100644
index 0000000..3ea3bbc
--- /dev/null
+++ b/doc/doc_files/determinant.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Determinant [RCBasic Doc]
+
+
+
+
function Determinant(mA)
+
+ Returns the determinant of matrix mA
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/dimmatrix.html b/doc/doc_files/dimmatrix.html
new file mode 100644
index 0000000..3131ae5
--- /dev/null
+++ b/doc/doc_files/dimmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DimMatrix [RCBasic Doc]
+
+
+
+
function DimMatrix(m_rows, m_cols)
+
+ Returns a new matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/dir.html b/doc/doc_files/dir.html
new file mode 100644
index 0000000..bf59ec9
--- /dev/null
+++ b/doc/doc_files/dir.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Dir$ [RCBasic Doc]
+
+
+
+
function Dir$()
+
+ Returns the current working directory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/direxists.html b/doc/doc_files/direxists.html
new file mode 100644
index 0000000..ec8a462
--- /dev/null
+++ b/doc/doc_files/direxists.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DirExists [RCBasic Doc]
+
+
+
+
function DirExists(p$)
+
+ Returns true if a directory exists and false if not
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/dirfirst.html b/doc/doc_files/dirfirst.html
new file mode 100644
index 0000000..a78ca29
--- /dev/null
+++ b/doc/doc_files/dirfirst.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DirFirst$ [RCBasic Doc]
+
+
+
+
function DirFirst$()
+
+ Resets the directory list poll and returns the first item in the current working directory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/dirnext.html b/doc/doc_files/dirnext.html
new file mode 100644
index 0000000..7ed0d9a
--- /dev/null
+++ b/doc/doc_files/dirnext.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ DirNext$ [RCBasic Doc]
+
+
+
+
function DirNext$()
+
+ Returns the next item in the directory poll
+
+ Related:
+ DirFirst$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/distance2d.html b/doc/doc_files/distance2d.html
new file mode 100644
index 0000000..666e16a
--- /dev/null
+++ b/doc/doc_files/distance2d.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Distance2D [RCBasic Doc]
+
+
+
+
Function Distance2D(x1, y1, x2, y2)
+
+ Returns the distance between 2 points in 2d space
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/distance3d.html b/doc/doc_files/distance3d.html
new file mode 100644
index 0000000..d306216
--- /dev/null
+++ b/doc/doc_files/distance3d.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Distance3D [RCBasic Doc]
+
+
+
+
Function Distance3D(x1, y1, z1, x2, y2, z2)
+
+ Returns the distance between 2 points in 3d space
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage.html b/doc/doc_files/drawimage.html
new file mode 100644
index 0000000..1225ee6
--- /dev/null
+++ b/doc/doc_files/drawimage.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DrawImage [RCBasic Doc]
+
+
+
+
sub DrawImage(img, x, y)
+
+ Draws an image on the active canvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_blit.html b/doc/doc_files/drawimage_blit.html
new file mode 100644
index 0000000..05937c5
--- /dev/null
+++ b/doc/doc_files/drawimage_blit.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DrawImage_Blit [RCBasic Doc]
+
+
+
+
sub DrawImage_Blit(img, x, y, src_x, src_y, src_w, src_h)
+
+ Draws a portion of an image to the current canvas.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_blitex.html b/doc/doc_files/drawimage_blitex.html
new file mode 100644
index 0000000..3827d66
--- /dev/null
+++ b/doc/doc_files/drawimage_blitex.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ DrawImage_BlitEx [RCBasic Doc]
+
+
+
+
sub DrawImage_BlitEx(slot, x, y, w, h, src_x, src_y, src_w, src_h)
+
+ Draws a portion of an image to the current canvas scaled to a given width and height.
+
+ Related:
+ DrawImage_Blit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_flip.html b/doc/doc_files/drawimage_flip.html
new file mode 100644
index 0000000..b7ed61e
--- /dev/null
+++ b/doc/doc_files/drawimage_flip.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ DrawImage_Flip [RCBasic Doc]
+
+
+
+
sub DrawImage_Flip(slot, x, y, h, v)
+
+ Draws an image flipped horizontally or vertically.
+
+
+ Note: h and v are boolean values
+
+ Related:
+ DrawImage_FlipEx
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_flipex.html b/doc/doc_files/drawimage_flipex.html
new file mode 100644
index 0000000..dfa3595
--- /dev/null
+++ b/doc/doc_files/drawimage_flipex.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ DrawImage_FlipEx [RCBasic Doc]
+
+
+
+
sub DrawImage_FlipEx(slot, x, y, src_x, src_y, src_w, src_h, h, v)
+
+ Draws a portion of an image flipped horizontally or vertically.
+
+
+ Note: h and v are boolean values
+
+ Related:
+ DrawImage_Flip
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_rotate.html b/doc/doc_files/drawimage_rotate.html
new file mode 100644
index 0000000..363f5ef
--- /dev/null
+++ b/doc/doc_files/drawimage_rotate.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DrawImage_Rotate [RCBasic Doc]
+
+
+
+
sub DrawImage_Rotate(slot, x, y, angle)
+
+ Draws an image to the current canvas rotated by a given angle.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_rotateex.html b/doc/doc_files/drawimage_rotateex.html
new file mode 100644
index 0000000..305bcc7
--- /dev/null
+++ b/doc/doc_files/drawimage_rotateex.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DrawImage_RotateEx [RCBasic Doc]
+
+
+
+
sub DrawImage_RotateEx(slot, x, y, src_x, src_y, src_w, src_h, angle)
+
+ Draws a portion of an image to the current canvas rotated by a given angle.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_rotozoom.html b/doc/doc_files/drawimage_rotozoom.html
new file mode 100644
index 0000000..a9069ae
--- /dev/null
+++ b/doc/doc_files/drawimage_rotozoom.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DrawImage_Rotozoom [RCBasic Doc]
+
+
+
+
sub DrawImage_Rotozoom(slot, x, y, angle, zx, zy)
+
+ Draws an image to the current canvas rotated and scaled
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_rotozoomex.html b/doc/doc_files/drawimage_rotozoomex.html
new file mode 100644
index 0000000..880cf70
--- /dev/null
+++ b/doc/doc_files/drawimage_rotozoomex.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DrawImage_RotozoomEx [RCBasic Doc]
+
+
+
+
sub DrawImage_RotozoomEx(slot, x, y, src_x, src_y, src_w, src_h, angle, zx, zy)
+
+ Draws a portion of an image to the current canvas rotated and scaled
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_zoom.html b/doc/doc_files/drawimage_zoom.html
new file mode 100644
index 0000000..71dbd06
--- /dev/null
+++ b/doc/doc_files/drawimage_zoom.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ DrawImage_Zoom [RCBasic Doc]
+
+
+
+
sub DrawImage_Zoom(slot, x, y, zx, zy)
+
+ Draws an image to the current canvas scaled by a given factor
+
+ Related:
+ DrawImage_ZoomEx
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawimage_zoomex.html b/doc/doc_files/drawimage_zoomex.html
new file mode 100644
index 0000000..49eb29b
--- /dev/null
+++ b/doc/doc_files/drawimage_zoomex.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ DrawImage_ZoomEx [RCBasic Doc]
+
+
+
+
sub DrawImage_ZoomEx(slot, x, y, src_x, src_y, src_w, src_h, zx, zy)
+
+ Draws a portion of an Image to the current canvas scaled by a given factor
+
+ Related:
+ DrawImage_Zoom
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawtext.html b/doc/doc_files/drawtext.html
new file mode 100644
index 0000000..f48e389
--- /dev/null
+++ b/doc/doc_files/drawtext.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ DrawText [RCBasic Doc]
+
+
+
+
sub DrawText(txt$, x, y)
+
+ Draws text to the current canvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/drawtilemap.html b/doc/doc_files/drawtilemap.html
new file mode 100644
index 0000000..460bc56
--- /dev/null
+++ b/doc/doc_files/drawtilemap.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+ DrawTileMap [RCBasic Doc]
+
+
+
+
Sub DrawTileMap(tilemap, x, y, w, h, offset_x, offset_y)
+
+ Draws a tile map
+
+
+ Note: Can only be drawn on a regular 2D canvas
+
+
+ Parameters:
+
+
+
+ tilemap - the tilemap to draw
+
+
+ x, y - Where to draw the map on the active canvas
+
+
+ w, h - The size of the tilemap viewport
+
+
+ offset_x, offset_y - The location in the tilemap to start drawing from
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/easter.html b/doc/doc_files/easter.html
new file mode 100644
index 0000000..eea5013
--- /dev/null
+++ b/doc/doc_files/easter.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Easter$ [RCBasic Doc]
+
+
+
+
function Easter$(year)
+
+ Returns easter of the year passed to it.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/ellipse.html b/doc/doc_files/ellipse.html
new file mode 100644
index 0000000..a0ceccf
--- /dev/null
+++ b/doc/doc_files/ellipse.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Ellipse [RCBasic Doc]
+
+
+
+
sub Ellipse(x,y,rx,ry)
+
+ Draws an ellipse on the current canvas.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/ellipsefill.html b/doc/doc_files/ellipsefill.html
new file mode 100644
index 0000000..c1d01d5
--- /dev/null
+++ b/doc/doc_files/ellipsefill.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ EllipseFill [RCBasic Doc]
+
+
+
+
sub EllipseFill(x,y,rx,ry)
+
+ Draws a filled ellipse on the current canvas.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/env.html b/doc/doc_files/env.html
new file mode 100644
index 0000000..f6c9178
--- /dev/null
+++ b/doc/doc_files/env.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Env$ [RCBasic Doc]
+
+
+
+
function Env$(v$)
+
+ Returns the value of the environment variable passed to it.
+
+ Related:
+ SetEnv
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/eof.html b/doc/doc_files/eof.html
new file mode 100644
index 0000000..32196f9
--- /dev/null
+++ b/doc/doc_files/eof.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ EOF [RCBasic Doc]
+
+
+
+
function EOF(stream)
+
+ Returns true when end of file is reached
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/escape_char.html b/doc/doc_files/escape_char.html
new file mode 100644
index 0000000..ed382e6
--- /dev/null
+++ b/doc/doc_files/escape_char.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+ RC BASIC Escape Characters
+
+
+
+
+
+ ESCAPE CHARACTER
+ DESCRIPTION
+
+
+ \\
+ INSERTS A "\" INTO A STRING
+
+
+ \n
+ INSERTS A NEW-LINE INTO A STRING
+
+
+ \b
+ INSERTS A BACKSPACE INTO A STRING
+
+
+ \" | \q
+ INSERTS A QUOTATION MARK INTO A STRING
+
+
+ \t
+ INSERTS A TAB INTO A STRING
+
+
+ \0
+ INSERTS A NULL CHARACTER INTO A STRING
+
+
+ \a
+ INSERTS AN ALERT BELL INTO A STRING
+
+
+ \v
+ INSERTS A VERTICAL TAB INTO A STRING
+
+
+ \f
+ INSERTS A FORM FEED INTO A STRING
+
+
+ \r
+ INSERTS A CARRIAGE RETURN
+
+
+
+
+
diff --git a/doc/doc_files/evaljs.html b/doc/doc_files/evaljs.html
new file mode 100644
index 0000000..1aece3f
--- /dev/null
+++ b/doc/doc_files/evaljs.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ EvalJS$ [RCBasic Doc]
+
+
+
+
Function EvalJS$(js_code$) 'Only useable in Emscripten
+
+ Runs javascript code
+
+
+ Returns the return value of the javascript code
+
+
+ NOTE: ONLY WORKS IN WEB PORT
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/exp.html b/doc/doc_files/exp.html
new file mode 100644
index 0000000..2939f85
--- /dev/null
+++ b/doc/doc_files/exp.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Exp [RCBasic Doc]
+
+
+
+
function Exp(n)
+
+ Returns the exponential function of a number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fademusicin.html b/doc/doc_files/fademusicin.html
new file mode 100644
index 0000000..75dd72d
--- /dev/null
+++ b/doc/doc_files/fademusicin.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FadeMusicIn [RCBasic Doc]
+
+
+
+
sub FadeMusicIn(fade_time, loops)
+
+ Fades music in
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fademusicout.html b/doc/doc_files/fademusicout.html
new file mode 100644
index 0000000..6caa49a
--- /dev/null
+++ b/doc/doc_files/fademusicout.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FadeMusicOut [RCBasic Doc]
+
+
+
+
sub FadeMusicOut(fade_time)
+
+ Fades music out
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fileexists.html b/doc/doc_files/fileexists.html
new file mode 100644
index 0000000..2e68cd1
--- /dev/null
+++ b/doc/doc_files/fileexists.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FileExists [RCBasic Doc]
+
+
+
+
function FileExists(fileName$)
+
+ Returns true if a file exists
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/filelength.html b/doc/doc_files/filelength.html
new file mode 100644
index 0000000..d7bcb5a
--- /dev/null
+++ b/doc/doc_files/filelength.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FileLength [RCBasic Doc]
+
+
+
+
function FileLength(fileName$)
+
+ Returns the size of a file in bytes.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fillmatrix.html b/doc/doc_files/fillmatrix.html
new file mode 100644
index 0000000..d2bf669
--- /dev/null
+++ b/doc/doc_files/fillmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FillMatrix [RCBasic Doc]
+
+
+
+
sub FillMatrix(mA, v)
+
+ Fills matrix with the given value
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fillmatrixcolumns.html b/doc/doc_files/fillmatrixcolumns.html
new file mode 100644
index 0000000..7af2be5
--- /dev/null
+++ b/doc/doc_files/fillmatrixcolumns.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FillMatrixColumns [RCBasic Doc]
+
+
+
+
function FillMatrixColumns(mA, c, num_cols, v)
+
+ Fills matrix columns with the given value starting at the given column
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fillmatrixrows.html b/doc/doc_files/fillmatrixrows.html
new file mode 100644
index 0000000..1f2d4cb
--- /dev/null
+++ b/doc/doc_files/fillmatrixrows.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FillMatrixRows [RCBasic Doc]
+
+
+
+
function FillMatrixRows(mA, r, num_rows, v)
+
+ Fills matrix rows with the given value starting at the given row
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/filltile.html b/doc/doc_files/filltile.html
new file mode 100644
index 0000000..b42757e
--- /dev/null
+++ b/doc/doc_files/filltile.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FillTile [RCBasic Doc]
+
+
+
+
Sub FillTile(tilemap, tile, x, y, widthInTiles, heightInTiles)
+
+ Fills an area of a tile map with a specified tile
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/flashwindow.html b/doc/doc_files/flashwindow.html
new file mode 100644
index 0000000..a1df02e
--- /dev/null
+++ b/doc/doc_files/flashwindow.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ FlashWindow [RCBasic Doc]
+
+
+
+
function FlashWindow( flag )
+
+ Flashes a window to specify an alert
+
+
+ Returns 0 on success and a negative number on failure
+
+
+ Possible flag values:
+
+
+
+ FLASH_CANCEL
+
+
+ FLASH_BRIEFLY
+
+
+ FLASH_UNTIL_FOCUSED
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/floodfill.html b/doc/doc_files/floodfill.html
new file mode 100644
index 0000000..ac60db3
--- /dev/null
+++ b/doc/doc_files/floodfill.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FloodFill [RCBasic Doc]
+
+
+
+
sub FloodFill(x,y)
+
+ Fills a closed shape in with the current draw color
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fontexists.html b/doc/doc_files/fontexists.html
new file mode 100644
index 0000000..fa30d61
--- /dev/null
+++ b/doc/doc_files/fontexists.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FontExists [RCBasic Doc]
+
+
+
+
Function FontExists(fnt_id)
+
+ Returns True if the specified font id is associated with a loaded font
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fprint.html b/doc/doc_files/fprint.html
new file mode 100644
index 0000000..28a21af
--- /dev/null
+++ b/doc/doc_files/fprint.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Fprint [RCBasic Doc]
+
+
+
+
sub Fprint(txt$)
+
+ Outputs text to the console
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/fps.html b/doc/doc_files/fps.html
new file mode 100644
index 0000000..4636022
--- /dev/null
+++ b/doc/doc_files/fps.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ FPS [RCBasic Doc]
+
+
+
+
function FPS()
+
+ Returns the number of frames being rendered per second
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/frac.html b/doc/doc_files/frac.html
new file mode 100644
index 0000000..31297cd
--- /dev/null
+++ b/doc/doc_files/frac.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Frac [RCBasic Doc]
+
+
+
+
function Frac(n)
+
+ Returns the decimal portion of a number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/func_sub.html b/doc/doc_files/func_sub.html
new file mode 100644
index 0000000..721896f
--- /dev/null
+++ b/doc/doc_files/func_sub.html
@@ -0,0 +1,161 @@
+
+
+
+
+
+ RCBasic Functions and Sub Routines [RCBasic Doc]
+
+
+
+
FUNCTIONS AND SUB ROUTINES
+
+ Functions and Sub Routines are blocks of code that can be executed any where in your program.
+
+
+ The biggest difference between Functions and Sub Routines is that Functions can return a value. Basically Functions and be used as a string or number value in an expression. RCBASIC has several built-in functions to perform different task such as compute square roots, get the time, etc. Functions are either numbers or strings just like variables and arrays. As such, functions can be used anywhere a variable or array can be used. Look at the following:
+
+
+ Dim x[ 2 ]
+ x[ 0 ] = Sqrt( 25 )
+ x[ 1 ] = Sqrt( 36 )
+ Print "THE SQUARE ROOT OF 25 IS " ; x[ 0 ]
+ Print "THE SQUARE ROOT OF 36 IS " ; x[ 1 ]
+
+
+ The above code creates a number array called X with 2 elements in it. It stores the square root of 25 in the first index and stores the square root of 36 in the second index. It then outputs both values to the console. The output should look like this:
+
+
+ THE SQUARE ROOT OF 25 IS 5 THE SQUARE ROOT OF 36 IS 6
+
+
+ String functions can be used in a string expression just like number functions can be used in a number expression. Look at the following code:
+
+
+ B$ = Mid$( "HELLO WORLD" , 0 , 2 )
+ Print "THE FIRST TWO CHARACTERS IN HELLO WORLD ARE " ;B$
+
+
+ The above code creates a string variable called B and stores 2 characters starting from position 0 in the string HELLO WORLD. It then outputs the value to the console. The output should look like the following:
+
+
+ THE FIRST TWO CHARACTERS IN HELLO WORLD ARE HE
+
+
+ Sub Routines can execute code in other parts of your program just like a function. However Sub Routines cannot return values and cannot be used in expressions. So why would you want to use a Sub Routine over a function? Well Sub Routines have less over head since it does not have to internally push a value onto the stack like a function does. So in cases where you do not need to return a value you should use a Sub Routine. RC BASIC has several built-in Sub Routines to perform task where a return value is not necessary. Look at the following:
+
+
+ FPrint( "test" )
+
+
+ FPrint is a Sub Routine that outputs text to the console. Since FPrint doesn't perform calculations of any kind it did not need to be implemented as a Function.
+
+
+ In addition to the built-in Functions and Sub Routines RCBASIC also allows programmers to build there own Functions and Sub Routines. You do this using the FUNCTION or SUB keywords.
+
+
+ Function MyFunc( a, b)
+ c = a + b
+ Return c
+ End Function
+
+
+ The above code creates a function called MyFunc which takes in two arguments: a and b. To use this function you would call it like this:
+
+
+ MyFunc( 3 , 4 )
+
+
+ The code above will pass 3 and 4 to the variables A and B in MYFUNC respectively. The function creates a variable called C and sets it equal to the sum of 3 + 4. It then returns C. So the function equals 7. Since this is a number function you could store the value in a number variable or use PRINT to output the value to the console.
+
+
+ To make a string function you simply add $ to the end of the function name when you create it just like with variables and arrays.
+
+
+ Function MyString$ ( G$ )
+ Return "YOU ENTERED " + G$
+ End Function
+
+ Print MyString( "SOMETHING" )
+
+
+ The above code should output the following:
+
+
+ YOU ENTERED SOMETHING
+
+
+ Functions can also return a UDT(User Defined Type) as well. Look at the following:
+
+
+ Type test_type
+ Dim a$
+ Dim b
+ End Type
+
+ Function test( a$, b) As test_type
+ Dim ret_val As test_type
+ ret_val.a = a
+ ret_val.b = b
+ Return ret_val
+ End Function
+
+ Dim myVar as test_type
+
+ myVar = test( "hello" , 42 )
+
+
+ You can also have a UDT as a parameter in a function:
+
+
+ Function 2 ( n as test_type, j)
+ Return 0
+ End Function
+
+
+ Sub Routines are created using the SUB keyword. Look at the following:
+
+
+ Sub MySub ( )
+ For i = 1 To 5
+ Print i
+ Next
+ End Sub
+
+ MySub ( )
+
+
+ The code above creates a Sub Routine called MYSUB which uses a FOR loop to output the numbers 1 to 5 to the console.
+
+
+ Functions and Sub Routines pass variables by value by default. Look at the following:
+
+
+ Sub MySub ( a )
+ a = 5
+ End Sub
+
+ n = 0
+
+ MySub ( n )
+ Print n
+
+
+ In the above code the Sub Routine has a variable called A as an argument. It sets A equal to 5. Then we create a variable called N outside of the Sub Routine and set N equal to 0. N is passed as an argument to MYSUB. Then N is output to the console. This will output 0 to the console. That is because only the value of N is passed to MYSUB so MYSUB is not able to change N itself. In order to allow MYSUB to change N we must have MYSUB accept an argument by Reference. To do this we will use the BYREF keyword.
+
+
+ Sub MySub ( ByRef a )
+ a = 5
+ End Sub
+
+ n = 0
+
+ MySub ( n )
+ Print n
+
+
+ The above code is the same as the previous example except that now we use the BYREF keyword to change a to a reference rather than a value. This means the when we pass the variable N to MYSUB, instead of the value stored in N being used as A, whatever we do to A will be done to N directly. This example will output 5 to the console.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getaccel.html b/doc/doc_files/getaccel.html
new file mode 100644
index 0000000..8dc1245
--- /dev/null
+++ b/doc/doc_files/getaccel.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetAccel [RCBasic Doc]
+
+
+
+
sub GetAccel(accel_num, ByRef x, ByRef y, ByRef z)
+
+ Gets the axis values for an accelerometer.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactoraabb.html b/doc/doc_files/getactoraabb.html
new file mode 100644
index 0000000..731d36b
--- /dev/null
+++ b/doc/doc_files/getactoraabb.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getActorAABB [RCBasic Doc]
+
+
+
+
sub getActorAABB( actor, ByRef min_x, ByRef min_y, ByRef min_z, ByRef max_x, ByRef max_y, ByRef max_z)
+
+ Gets the bounding box for an actor.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorangulardamping.html b/doc/doc_files/getactorangulardamping.html
new file mode 100644
index 0000000..b3c9a36
--- /dev/null
+++ b/doc/doc_files/getactorangulardamping.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ GetActorAngularDamping [RCBasic Doc]
+
+
+
+
function GetActorAngularDamping( actor)
+
+ Returns the amount of angular damping set on the actor
+
+ Related:
+ SetActorDamping
+ ApplyActorDamping
+ GetActorLinearDamping
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorangularfactor.html b/doc/doc_files/getactorangularfactor.html
new file mode 100644
index 0000000..d8d307e
--- /dev/null
+++ b/doc/doc_files/getactorangularfactor.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ getActorAngularFactor [RCBasic Doc]
+
+
+
+
sub getActorAngularFactor( actor, ByRef x, ByRef y, ByRef z)
+
+ Returns the angular factor set on an actor
+
+ Related:
+ SetActorAngularFactor
+ GetActorLinearFactor
+ SetActorLinearFactor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorangularsleepthreshold.html b/doc/doc_files/getactorangularsleepthreshold.html
new file mode 100644
index 0000000..79b82a2
--- /dev/null
+++ b/doc/doc_files/getactorangularsleepthreshold.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetActorAngularSleepThreshold [RCBasic Doc]
+
+
+
+
function GetActorAngularSleepThreshold( actor)
+
+ Returns the Angular deactivation threshold for the actor
+
+ Related:
+ SetActorSleepThresholds
+ GetActorLinearSleepThreshold
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorangularvelocitylocal.html b/doc/doc_files/getactorangularvelocitylocal.html
new file mode 100644
index 0000000..4983a8e
--- /dev/null
+++ b/doc/doc_files/getactorangularvelocitylocal.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ getActorAngularVelocityLocal [RCBasic Doc]
+
+
+
+
sub getActorAngularVelocityLocal( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets an actor's Angular Velocity
+
+ Related:
+ GetActorAngularVelocityWorld
+ SetActorAngularVelocityLocal
+ SetActorAngularVelocityWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorangularvelocityworld.html b/doc/doc_files/getactorangularvelocityworld.html
new file mode 100644
index 0000000..897f6fd
--- /dev/null
+++ b/doc/doc_files/getactorangularvelocityworld.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ getActorAngularVelocityWorld [RCBasic Doc]
+
+
+
+
sub getActorAngularVelocityWorld( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets an actor's Angular Velocity
+
+ Related:
+ GetActorAngularVelocityLocal
+ SetActorAngularVelocityLocal
+ SetActorAngularVelocityWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactoranimationendframe.html b/doc/doc_files/getactoranimationendframe.html
new file mode 100644
index 0000000..8f983c1
--- /dev/null
+++ b/doc/doc_files/getactoranimationendframe.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorAnimationEndFrame [RCBasic Doc]
+
+
+
+
Function GetActorAnimationEndFrame(actor, animation)
+
+ Returns the last frame in an actor's animation
+
+ Related:
+ SetActorAnimationFrames
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactoranimationspeed.html b/doc/doc_files/getactoranimationspeed.html
new file mode 100644
index 0000000..2356721
--- /dev/null
+++ b/doc/doc_files/getactoranimationspeed.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorAnimationSpeed [RCBasic Doc]
+
+
+
+
function GetActorAnimationSpeed( actor, animation )
+
+ Returns actor's animation speed in frames per second
+
+ Related:
+ SetActorAnimationSpeed
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactoranimationstartframe.html b/doc/doc_files/getactoranimationstartframe.html
new file mode 100644
index 0000000..cdde7d3
--- /dev/null
+++ b/doc/doc_files/getactoranimationstartframe.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorAnimationStartFrame [RCBasic Doc]
+
+
+
+
Function GetActorAnimationStartFrame(actor, animation)
+
+ Returns the first frame in an actor's animation
+
+ Related:
+ SetActorAnimationFrames
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorautoculling.html b/doc/doc_files/getactorautoculling.html
new file mode 100644
index 0000000..98d2667
--- /dev/null
+++ b/doc/doc_files/getactorautoculling.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ GetActorAutoCulling [RCBasic Doc]
+
+
+
+
function GetActorAutoCulling( actor )
+
+ Returns the automatic culling state for an actor
+
+
+ Possible Culling States
+
+
+
+ AUTOCULLING_OFF
+
+
+ AUTOCULLING_BOX
+
+
+ AUTOCULLING_FRUSTUM_BOX
+
+
+ AUTOCULLING_FRUSTUM_SPHERE
+
+
+ AUTOCULLING_OCC_QUERY
+
+
+ Related:
+ SetActorAutoCulling
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorcollision.html b/doc/doc_files/getactorcollision.html
new file mode 100644
index 0000000..39726d8
--- /dev/null
+++ b/doc/doc_files/getactorcollision.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorCollision [RCBasic Doc]
+
+
+
+
function GetActorCollision(actor1, actor2)
+
+ Returns true if 2 actors collide
+
+
+ Note: This function will work with solid and non solid actors
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorcollisionshape.html b/doc/doc_files/getactorcollisionshape.html
new file mode 100644
index 0000000..e920a80
--- /dev/null
+++ b/doc/doc_files/getactorcollisionshape.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+ GetActorCollisionShape [RCBasic Doc]
+
+
+
+
function GetActorCollisionShape(actor)
+
+ Returns the actor's collision shape
+
+
+ Possible values:
+
+
+
+ SHAPE_TYPE_NONE
+
+
+ SHAPE_TYPE_BOX
+
+
+ SHAPE_TYPE_SPHERE
+
+
+ SHAPE_TYPE_CYLINDER
+
+
+ SHAPE_TYPE_CAPSULE
+
+
+ SHAPE_TYPE_CONE
+
+
+ SHAPE_TYPE_CONVEXHULL
+
+
+ SHAPE_TYPE_TRIMESH
+
+
+ Related:
+ SetActorCollisionShape
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorcomposition.html b/doc/doc_files/getactorcomposition.html
new file mode 100644
index 0000000..10b7361
--- /dev/null
+++ b/doc/doc_files/getactorcomposition.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getActorCOMPosition [RCBasic Doc]
+
+
+
+
sub getActorCOMPosition( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets an actor's center of mass position. This is useful for setting the origin of constraints.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorcurrentanimation.html b/doc/doc_files/getactorcurrentanimation.html
new file mode 100644
index 0000000..e1b09e7
--- /dev/null
+++ b/doc/doc_files/getactorcurrentanimation.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ GetActorCurrentAnimation [RCBasic Doc]
+
+
+
+
Function GetActorCurrentAnimation(actor)
+
+ Returns the current animation set on an actor
+
+
+ Note: Current animation will be 0 if the actor's frame was set with SetActorFrame()
+
+ Related:
+ SetActorAnimation
+ SetActorFrame
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorcurrentframe.html b/doc/doc_files/getactorcurrentframe.html
new file mode 100644
index 0000000..b9e3af6
--- /dev/null
+++ b/doc/doc_files/getactorcurrentframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetActorCurrentFrame [RCBasic Doc]
+
+
+
+
function GetActorCurrentFrame( actor )
+
+ Returns an actor's current frame of animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorendframe.html b/doc/doc_files/getactorendframe.html
new file mode 100644
index 0000000..2922a77
--- /dev/null
+++ b/doc/doc_files/getactorendframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetActorEndFrame [RCBasic Doc]
+
+
+
+
function GetActorEndFrame( actor )
+
+ Returns the last frame of an actor's animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorframe.html b/doc/doc_files/getactorframe.html
new file mode 100644
index 0000000..6ac58ee
--- /dev/null
+++ b/doc/doc_files/getactorframe.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetActorFrame [RCBasic Doc]
+
+
+
+
function GetActorFrame(actor)
+
+ Returns the current frame number an actor is currently rendering
+
+ Related:
+ SetActorFrame
+ GetActorAnimationFrame
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorgravity.html b/doc/doc_files/getactorgravity.html
new file mode 100644
index 0000000..b437ee9
--- /dev/null
+++ b/doc/doc_files/getactorgravity.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorGravity [RCBasic Doc]
+
+
+
+
sub GetActorGravity( actor, ByRef x, ByRef y, ByRef z )
+
+ Gets the gravity of an actor along each access.
+
+ Related:
+ SetActorGravity
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorinverseinertiadiaglocal.html b/doc/doc_files/getactorinverseinertiadiaglocal.html
new file mode 100644
index 0000000..b3c1c4d
--- /dev/null
+++ b/doc/doc_files/getactorinverseinertiadiaglocal.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getActorInverseInertiaDiagLocal [RCBasic Doc]
+
+
+
+
sub getActorInverseInertiaDiagLocal( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets the inverse of the inertia tensor's diagonal components in the local space. This is used to compute how the actor reacts to rotational forces (torques) applied to it.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorinversemass.html b/doc/doc_files/getactorinversemass.html
new file mode 100644
index 0000000..71e2b9d
--- /dev/null
+++ b/doc/doc_files/getactorinversemass.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getActorInverseMass [RCBasic Doc]
+
+
+
+
function getActorInverseMass( actor)
+
+ Returns an actor's inverse mass
+
+ Related:
+ SetActorMassProperties
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorlineardamping.html b/doc/doc_files/getactorlineardamping.html
new file mode 100644
index 0000000..bb9851a
--- /dev/null
+++ b/doc/doc_files/getactorlineardamping.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetActorLinearDamping [RCBasic Doc]
+
+
+
+
function GetActorLinearDamping( actor)
+
+ Return's an actor's linear damping
+
+ Related:
+ SetActorDamping
+ GetActorAngularDamping
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorlinearfactor.html b/doc/doc_files/getactorlinearfactor.html
new file mode 100644
index 0000000..7f5f7bd
--- /dev/null
+++ b/doc/doc_files/getactorlinearfactor.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ GetActorLinearFactor [RCBasic Doc]
+
+
+
+
sub GetActorLinearFactor( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets an actor's linear factor
+
+ Related:
+ SetActorLinearFactor
+ GetActorAngularFactor
+ SetActorAngularFactor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorlinearsleepthreshold.html b/doc/doc_files/getactorlinearsleepthreshold.html
new file mode 100644
index 0000000..9676069
--- /dev/null
+++ b/doc/doc_files/getactorlinearsleepthreshold.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetActorLinearSleepThreshold [RCBasic Doc]
+
+
+
+
function GetActorLinearSleepThreshold( actor)
+
+ Returns the linear deactivation threshold for the actor
+
+ Related:
+ SetActorSleepThresholds
+ GetActorAngularSleepThreshold
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorlinearvelocitylocal.html b/doc/doc_files/getactorlinearvelocitylocal.html
new file mode 100644
index 0000000..70e34d1
--- /dev/null
+++ b/doc/doc_files/getactorlinearvelocitylocal.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetActorLinearVelocityLocal [RCBasic Doc]
+
+
+
+
sub GetActorLinearVelocityLocal( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets actor's linear velocity
+
+ Related:
+ SetActorLinearVelocityLocal
+ SetActorLinearVelocityWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorlinearvelocityworld.html b/doc/doc_files/getactorlinearvelocityworld.html
new file mode 100644
index 0000000..12fef83
--- /dev/null
+++ b/doc/doc_files/getactorlinearvelocityworld.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ getActorLinearVelocityWorld [RCBasic Doc]
+
+
+
+
sub getActorLinearVelocityWorld( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets actor's linear velocity
+
+ Related:
+ SetActorLinearVelocityLocal
+ SetActorLinearVelocityWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorlocalinertia.html b/doc/doc_files/getactorlocalinertia.html
new file mode 100644
index 0000000..a55428b
--- /dev/null
+++ b/doc/doc_files/getactorlocalinertia.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetActorLocalInertia [RCBasic Doc]
+
+
+
+
sub GetActorLocalInertia( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets the local inertia tensor of an actor. The inertia tensor describes how an actor resists rotational motion depending on its mass distribution relative to its center of mass.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorlocalpointvelocity.html b/doc/doc_files/getactorlocalpointvelocity.html
new file mode 100644
index 0000000..ae085aa
--- /dev/null
+++ b/doc/doc_files/getactorlocalpointvelocity.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getActorLocalPointVelocity [RCBasic Doc]
+
+
+
+
sub getActorLocalPointVelocity( actor, rel_x, rel_y, rel_z, ByRef x, ByRef y, ByRef z)
+
+ Gets the linear velocity of a specific point on an actor, given its position in the actor's local coordinate space. This is useful for determining how fast and in what direction a particular point on the actor is moving, accounting for both the body's linear velocity and its rotational motion (angular velocity).
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactormaterial.html b/doc/doc_files/getactormaterial.html
new file mode 100644
index 0000000..f7d3f92
--- /dev/null
+++ b/doc/doc_files/getactormaterial.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getActorMaterial [RCBasic Doc]
+
+
+
+
function getActorMaterial( actor, material_num)
+
+ Returns an actor's material id.
+
+
+ Actor's can have multiple materials but generally you want material 0 for most Actor's.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactormaterialcount.html b/doc/doc_files/getactormaterialcount.html
new file mode 100644
index 0000000..c01310d
--- /dev/null
+++ b/doc/doc_files/getactormaterialcount.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getActorMaterialCount [RCBasic Doc]
+
+
+
+
function getActorMaterialCount( actor)
+
+ Returns the number of materials for an actor.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactormaterialflag.html b/doc/doc_files/getactormaterialflag.html
new file mode 100644
index 0000000..37298d0
--- /dev/null
+++ b/doc/doc_files/getactormaterialflag.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+ getActorMaterialFlag [RCBasic Doc]
+
+
+
+
function getActorMaterialFlag( actor, material, flag)
+
+ Returns the value of the specified material flag
+
+
+ Possible values for flag:
+
+
+
+ MATERIAL_FLAG_WIREFRAME
+
+
+ MATERIAL_FLAG_POINTCLOUD
+
+
+ MATERIAL_FLAG_GOURAUD_SHADING
+
+
+ MATERIAL_FLAG_LIGHTING
+
+
+ MATERIAL_FLAG_ZBUFFER
+
+
+ MATERIAL_FLAG_ZWRITE_ENABLE
+
+
+ MATERIAL_FLAG_BACK_FACE_CULLING
+
+
+ MATERIAL_FLAG_FRONT_FACE_CULLING
+
+
+ MATERIAL_FLAG_BILINEAR_FILTER
+
+
+ MATERIAL_FLAG_TRILINEAR_FILTER
+
+
+ MATERIAL_FLAG_ANISOTROPIC_FILTER
+
+
+ MATERIAL_FLAG_FOG_ENABLE
+
+
+ MATERIAL_FLAG_NORMALIZE_NORMALS
+
+
+ MATERIAL_FLAG_TEXTURE_WRAP
+
+
+ MATERIAL_FLAG_ANTI_ALIASING
+
+
+ MATERIAL_FLAG_COLOR_MASK
+
+
+ MATERIAL_FLAG_COLOR_MATERIAL
+
+
+ MATERIAL_FLAG_USE_MIP_MAPS
+
+
+ MATERIAL_FLAG_BLEND_OPERATION
+
+
+ MATERIAL_FLAG_POLYGON_OFFSET
+
+
+ Related:
+ GetMaterialFlag
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactormaterialtype.html b/doc/doc_files/getactormaterialtype.html
new file mode 100644
index 0000000..ae96d78
--- /dev/null
+++ b/doc/doc_files/getactormaterialtype.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+ GetActorMaterialType [RCBasic Doc]
+
+
+
+
function GetActorMaterialType( actor, material )
+
+ Returns the material type of an actor material
+
+
+ Possible material types
+
+
+
+ MATERIAL_TYPE_SOLID
+
+
+ MATERIAL_TYPE_SOLID_2_LAYER
+
+
+ MATERIAL_TYPE_LIGHTMAP
+
+
+ MATERIAL_TYPE_LIGHTMAP_ADD
+
+
+ MATERIAL_TYPE_LIGHTMAP_M2
+
+
+ MATERIAL_TYPE_LIGHTMAP_M4
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING_M2
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING_M4
+
+
+ MATERIAL_TYPE_DETAIL_MAP
+
+
+ MATERIAL_TYPE_SPHERE_MAP
+
+
+ MATERIAL_TYPE_REFLECTION_2_LAYER
+
+
+ MATERIAL_TYPE_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL
+
+
+ MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL_REF
+
+
+ MATERIAL_TYPE_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_TRANSPARENT_REFLECTION_2_LAYER
+
+
+ MATERIAL_TYPE_NORMAL_MAP_SOLID
+
+
+ MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_SOLID
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_ONETEXTURE_BLEND
+
+
+ MATERIAL_TYPE_FORCE_32BIT
+
+
+ Related:
+ SetActorMaterialType
+ GetMaterialType
+ SetMaterialType
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorposition.html b/doc/doc_files/getactorposition.html
new file mode 100644
index 0000000..f4d8fa5
--- /dev/null
+++ b/doc/doc_files/getactorposition.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorPosition [RCBasic Doc]
+
+
+
+
sub GetActorPosition( actor, ByRef x, ByRef y, ByRef z )
+
+ Gets the actors position
+
+ Related:
+ SetActorPosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorrotation.html b/doc/doc_files/getactorrotation.html
new file mode 100644
index 0000000..84d704a
--- /dev/null
+++ b/doc/doc_files/getactorrotation.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorRotation [RCBasic Doc]
+
+
+
+
sub GetActorRotation( actor, ByRef x, ByRef y, ByRef z )
+
+ Gets the actors rotation on each axis
+
+ Related:
+ SetActorRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorrotationq.html b/doc/doc_files/getactorrotationq.html
new file mode 100644
index 0000000..f79bb42
--- /dev/null
+++ b/doc/doc_files/getactorrotationq.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ GetActorRotationQ [RCBasic Doc]
+
+
+
+
sub GetActorRotationQ( actor, ByRef x, ByRef y, ByRef z, ByRef w)
+
+ Gets the actors rotation as a quaternion.
+
+
+ Note: This is useful for calculations that require quaternion but most developers should just use GetActorRotation()
+
+ Related:
+ GetActorRotation
+ SetActorRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorscale.html b/doc/doc_files/getactorscale.html
new file mode 100644
index 0000000..505640a
--- /dev/null
+++ b/doc/doc_files/getactorscale.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorScale [RCBasic Doc]
+
+
+
+
sub GetActorScale( actor, ByRef x, ByRef y, ByRef z )
+
+ Gets an actor's scale
+
+ Related:
+ SetActorScale
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactorstartframe.html b/doc/doc_files/getactorstartframe.html
new file mode 100644
index 0000000..66c338d
--- /dev/null
+++ b/doc/doc_files/getactorstartframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetActorStartFrame [RCBasic Doc]
+
+
+
+
function GetActorStartFrame( actor )
+
+ Returns the start frame of an actor's animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactortotalforce.html b/doc/doc_files/getactortotalforce.html
new file mode 100644
index 0000000..a62fbe7
--- /dev/null
+++ b/doc/doc_files/getactortotalforce.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorTotalForce [RCBasic Doc]
+
+
+
+
sub GetActorTotalForce( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets the total net force currently acting on an actor. This force is the sum of all external forces applied to the actor at a given point in time, including forces like gravity, applied forces, and other interactions such as contact or collision forces.
+
+ Related:
+ GetActorTotalTorque
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactortotaltorque.html b/doc/doc_files/getactortotaltorque.html
new file mode 100644
index 0000000..fe938cd
--- /dev/null
+++ b/doc/doc_files/getactortotaltorque.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetActorTotalTorque [RCBasic Doc]
+
+
+
+
sub GetActorTotalTorque( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets the total net torque currently acting on an actor. Torque represents the rotational equivalent of force, describing how different forces applied to the actor cause it to rotate. The total torque is the sum of all external torques acting on the actor, which determine how the actor will rotate or change its angular velocity.
+
+ Related:
+ GetTotalForces
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactortransform.html b/doc/doc_files/getactortransform.html
new file mode 100644
index 0000000..dc777a7
--- /dev/null
+++ b/doc/doc_files/getactortransform.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetActorTransform [RCBasic Doc]
+
+
+
+
sub GetActorTransform( actor, matrix )
+
+ Stores the actors absolute transformation in the given matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getactortransitiontime.html b/doc/doc_files/getactortransitiontime.html
new file mode 100644
index 0000000..c01ae02
--- /dev/null
+++ b/doc/doc_files/getactortransitiontime.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ GetActorTransitionTime [RCBasic Doc]
+
+
+
+
function GetActorTransitionTime( actor )
+
+ Returns the total transition time of an actor transitioning between animations
+
+
+ Note: Time returned is in seconds
+
+ Related:
+ StartActorTransition
+ StopActorTransition
+ ActorIsInTransition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getan8scenename.html b/doc/doc_files/getan8scenename.html
new file mode 100644
index 0000000..db39c07
--- /dev/null
+++ b/doc/doc_files/getan8scenename.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetAN8SceneName$ [RCBasic Doc]
+
+
+
+
Function GetAN8SceneName$(an8_project, scene_num)
+
+ Returns the name of a scene in an an8 project
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getbilinearfilter.html b/doc/doc_files/getbilinearfilter.html
new file mode 100644
index 0000000..0705660
--- /dev/null
+++ b/doc/doc_files/getbilinearfilter.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetBilinearFilter [RCBasic Doc]
+
+
+
+
function GetBilinearFilter()
+
+ Returns true if bilinear filtering is enabled
+
+ Related:
+ SetBilinearFilter
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getblendmode.html b/doc/doc_files/getblendmode.html
new file mode 100644
index 0000000..bf79e94
--- /dev/null
+++ b/doc/doc_files/getblendmode.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+ GetBlendMode [RCBasic Doc]
+
+
+
+
function GetBlendMode( )
+
+ Returns the current blend mode
+
+
+ Note: Only applies to 2D image drawing commands
+
+
+ Possible Blend Modes
+
+
+
+ BLEND_MODE_NONE
+
+
+ BLEND_MODE_ADD
+
+
+ BLEND_MODE_SUBTRACT
+
+
+ BLEND_MODE_REVSUBTRACT
+
+
+ BLEND_MODE_MIN
+
+
+ BLEND_MODE_MAX
+
+
+ BLEND_MODE_MIN_FACTOR
+
+
+ BLEND_MODE_MAX_FACTOR
+
+
+ BLEND_MODE_MIN_ALPHA
+
+
+ BLEND_MODE_MAX_ALPHA
+
+
+ Related:
+ SetBlendMode
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcameraaspectratio.html b/doc/doc_files/getcameraaspectratio.html
new file mode 100644
index 0000000..a3a71a9
--- /dev/null
+++ b/doc/doc_files/getcameraaspectratio.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetCameraAspectRatio [RCBasic Doc]
+
+
+
+
function GetCameraAspectRatio( )
+
+ Returns the camera aspect ratio for the active canvas
+
+ Related:
+ SetCameraAspectRatio
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcamerafarvalue.html b/doc/doc_files/getcamerafarvalue.html
new file mode 100644
index 0000000..2b4b533
--- /dev/null
+++ b/doc/doc_files/getcamerafarvalue.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetCameraFarValue [RCBasic Doc]
+
+
+
+
function GetCameraFarValue( )
+
+ Returns the far plane of the camera on the active canvas
+
+ Related:
+ GetCameraNearValue
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcamerafov.html b/doc/doc_files/getcamerafov.html
new file mode 100644
index 0000000..8615370
--- /dev/null
+++ b/doc/doc_files/getcamerafov.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetCameraFOV [RCBasic Doc]
+
+
+
+
function GetCameraFOV( )
+
+ Returns the field of view of the camera on the active canvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcameranearvalue.html b/doc/doc_files/getcameranearvalue.html
new file mode 100644
index 0000000..dbce0a2
--- /dev/null
+++ b/doc/doc_files/getcameranearvalue.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetCameraNearValue [RCBasic Doc]
+
+
+
+
function GetCameraNearValue( )
+
+ Returns the near plane of the camera on the active canvas
+
+ Related:
+ GetCameraFarValue
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcameraposition.html b/doc/doc_files/getcameraposition.html
new file mode 100644
index 0000000..a36f7d7
--- /dev/null
+++ b/doc/doc_files/getcameraposition.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetCameraPosition [RCBasic Doc]
+
+
+
+
sub GetCameraPosition(ByRef x, ByRef y, ByRef z)
+
+ Gets the position of the camera
+
+ Related:
+ SetCameraPosition
+ TranslateCamera
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcamerarotation.html b/doc/doc_files/getcamerarotation.html
new file mode 100644
index 0000000..7820621
--- /dev/null
+++ b/doc/doc_files/getcamerarotation.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetCameraRotation [RCBasic Doc]
+
+
+
+
sub GetCameraRotation(ByRef x, ByRef y, ByRef z)
+
+ Gets the rotation of the camera on each axis
+
+ Related:
+ SetCameraRotation
+ RotateCamera
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcanvasalpha.html b/doc/doc_files/getcanvasalpha.html
new file mode 100644
index 0000000..c8a8d9a
--- /dev/null
+++ b/doc/doc_files/getcanvasalpha.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetCanvasAlpha [RCBasic Doc]
+
+
+
+
function GetCanvasAlpha(c_num)
+
+ Returns the alpha blend value of a canvas
+
+ Related:
+ SetCanvasAlpha
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcanvascolormod.html b/doc/doc_files/getcanvascolormod.html
new file mode 100644
index 0000000..706be0a
--- /dev/null
+++ b/doc/doc_files/getcanvascolormod.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetCanvasColorMod [RCBasic Doc]
+
+
+
+
function GetCanvasColorMod(c_num)
+
+ Returns the color modulation of a canvas
+
+ Related:
+ SetCanvasColorMod
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcanvasoffset.html b/doc/doc_files/getcanvasoffset.html
new file mode 100644
index 0000000..12119ea
--- /dev/null
+++ b/doc/doc_files/getcanvasoffset.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetCanvasOffset [RCBasic Doc]
+
+
+
+
sub GetCanvasOffset(c_num, byref x, byref y)
+
+ Returns view offset of a canvas
+
+ Related:
+ SetCanvasOffset
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcanvassize.html b/doc/doc_files/getcanvassize.html
new file mode 100644
index 0000000..4d9f59e
--- /dev/null
+++ b/doc/doc_files/getcanvassize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetCanvasSize [RCBasic Doc]
+
+
+
+
sub GetCanvasSize(c_num, byref w, byref h)
+
+ Gets the size of a canvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcanvasviewport.html b/doc/doc_files/getcanvasviewport.html
new file mode 100644
index 0000000..72831b7
--- /dev/null
+++ b/doc/doc_files/getcanvasviewport.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetCanvasViewport [RCBasic Doc]
+
+
+
+
sub GetCanvasViewport(c_num, byref x, byref y, byref w, byref h)
+
+ Gets the position and size of a canvas viewport
+
+ Related:
+ OpenCanvas
+ SetCanvasViewport
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcanvasz.html b/doc/doc_files/getcanvasz.html
new file mode 100644
index 0000000..ceb0b39
--- /dev/null
+++ b/doc/doc_files/getcanvasz.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ GetCanvasZ [RCBasic Doc]
+
+
+
+
function GetCanvasZ(c_num)
+
+ Returns the Canvas Z Order.
+
+
+ Note: Canvases with a lower Z order are drawn first and those with higher values will be drawn on top
+
+ Related:
+ SetCanvasZ
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getchannelvolume.html b/doc/doc_files/getchannelvolume.html
new file mode 100644
index 0000000..db50d41
--- /dev/null
+++ b/doc/doc_files/getchannelvolume.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetChannelVolume [RCBasic Doc]
+
+
+
+
function GetChannelVolume(channel)
+
+ Returns the volume of the audio on a channel
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getcirclelineintersection.html b/doc/doc_files/getcirclelineintersection.html
new file mode 100644
index 0000000..74a0ab2
--- /dev/null
+++ b/doc/doc_files/getcirclelineintersection.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetCircleLineIntersection [RCBasic Doc]
+
+
+
+
function GetCircleLineIntersection(circle_x, circle_y, radius, x1, y1, x2, y2, ByRef ix1, ByRef iy1, ByRef ix2, ByRef iy2)
+
+ Calculates the points where a circle and line intersect and stores the intersection points in (ix1, iy1) and (ix2, iy2)
+
+
+ NOTE: This function returns 0 if there is no intersection and 1 or 2 if there is 1 or 2 intersection points. If it only returns 1 then only (ix1, iy1) will be set.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getclipboardtext.html b/doc/doc_files/getclipboardtext.html
new file mode 100644
index 0000000..58412a4
--- /dev/null
+++ b/doc/doc_files/getclipboardtext.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetClipboardText$ [RCBasic Doc]
+
+
+
+
function GetClipboardText$( )
+
+ Returns the clipboard text.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconeanglepoint.html b/doc/doc_files/getconeanglepoint.html
new file mode 100644
index 0000000..6a5b905
--- /dev/null
+++ b/doc/doc_files/getconeanglepoint.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConeAnglePoint [RCBasic Doc]
+
+
+
+
sub getConeAnglePoint( constraint_id, angle, c_len, ByRef x, ByRef y, ByRef z)
+
+ Computes or retrieves a point based on a given angle relative to the constraint’s twist axis.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconebiasfactor.html b/doc/doc_files/getconebiasfactor.html
new file mode 100644
index 0000000..478bc1b
--- /dev/null
+++ b/doc/doc_files/getconebiasfactor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConeBiasFactor [RCBasic Doc]
+
+
+
+
function getConeBiasFactor( constraint_id)
+
+ Returns the bias factor used to correct constraint violations (such as small positional or angular errors) during the simulation. The bias factor helps ensure that the constrained actors return to their intended positions or orientations over time by applying corrective forces or impulses.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconedamping.html b/doc/doc_files/getconedamping.html
new file mode 100644
index 0000000..ef38697
--- /dev/null
+++ b/doc/doc_files/getconedamping.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConeDamping [RCBasic Doc]
+
+
+
+
function getConeDamping( constraint_id)
+
+ Returns the damping factor applied to the constraint. Damping is used to reduce the amount of oscillation or unwanted movement (such as excessive rotation or swinging) around the constrained actor's axes.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconefixthresh.html b/doc/doc_files/getconefixthresh.html
new file mode 100644
index 0000000..b022227
--- /dev/null
+++ b/doc/doc_files/getconefixthresh.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getConeFixThresh [RCBasic Doc]
+
+
+
+
function getConeFixThresh( constraint_id)
+
+ Returns the fix threshold value associated with that constraint. This threshold is used to control how the constraint behaves when the angle of the rotation between the actors approaches the limits defined by the cone twist constraint.
+
+
+ The fix threshold defines a limit or tolerance for how closely the angle between the two actors can approach the constraint's limits before corrective actions are taken. When the angular motion exceeds this threshold, the constraint applies corrective forces to bring the motion back within the allowed range.
+
+ Related:
+ SetConeFixThresh
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconelimit.html b/doc/doc_files/getconelimit.html
new file mode 100644
index 0000000..54fa5d1
--- /dev/null
+++ b/doc/doc_files/getconelimit.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ getConeLimit [RCBasic Doc]
+
+
+
+
function getConeLimit( constraint_id, limit_index)
+
+ Returns the angular limit associated with a specific degree of freedom in the cone constraint. This limit defines the range of motion allowed around a given axis (twist, swing1, or swing2) for the constrained actors.
+
+
+ limitIndex is an integer that indicates which limit to retrieve. It typically takes values corresponding to the type of limit:
+
+
+
+ 0: Limit for the twist axis.
+
+
+ 1: Limit for the swing1 axis.
+
+
+ 2: Limit for the swing2 axis.
+
+
+
+ Returns value is the maximum angle or range allowed for the specified degree of freedom (twist, swing1, or swing2)
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconesolveswinglimit.html b/doc/doc_files/getconesolveswinglimit.html
new file mode 100644
index 0000000..ad38bce
--- /dev/null
+++ b/doc/doc_files/getconesolveswinglimit.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getConeSolveSwingLimit [RCBasic Doc]
+
+
+
+
function getConeSolveSwingLimit( constraint_id)
+
+ Returns whether the swing limit of the constraint is currently being enforced during the simulation.
+
+
+ The swing limit defines the boundary within which the connected actors can swing. When the bodies approach or exceed this limit, the physics engine enforces a constraint to prevent further motion. If the swing limit is exceeded during simulation, corrective forces are applied to bring the actors back within the allowed range.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconesolvetwistlimit.html b/doc/doc_files/getconesolvetwistlimit.html
new file mode 100644
index 0000000..36d8535
--- /dev/null
+++ b/doc/doc_files/getconesolvetwistlimit.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getConeSolveTwistLimit [RCBasic Doc]
+
+
+
+
function getConeSolveTwistLimit( constraint_id)
+
+ Returns whether the twist limit is currently being enforced during the simulation.
+
+
+ The twist limit controls how much the connected actors can rotate around the central axis of the joint (the "twist" axis). When the actors rotate beyond this allowed limit, the physics engine applies corrective forces to keep the rotation within the defined twist range.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconeswingspan1.html b/doc/doc_files/getconeswingspan1.html
new file mode 100644
index 0000000..3a3f8fe
--- /dev/null
+++ b/doc/doc_files/getconeswingspan1.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getConeSwingSpan1 [RCBasic Doc]
+
+
+
+
function getConeSwingSpan1( constraint_id)
+
+ Returns the maximum allowed rotation angle (or "span") for the first swing axis. This swing axis is one of the two orthogonal axes around which the constrained actors are allowed to swing, forming a cone-shaped range of motion.
+
+
+ There are two swing spans, swing span 1 and swing span 2, corresponding to the maximum allowable swing angles around each of the two swing axes.
+
+ Related:
+ GetConeSwingSpan2
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconeswingspan2.html b/doc/doc_files/getconeswingspan2.html
new file mode 100644
index 0000000..0387226
--- /dev/null
+++ b/doc/doc_files/getconeswingspan2.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getConeSwingSpan2 [RCBasic Doc]
+
+
+
+
function getConeSwingSpan2( constraint_id)
+
+ Returns the maximum allowed rotation angle (or "span") for the second swing axis. This swing axis is one of the two orthogonal axes around which the constrained actors are allowed to swing, forming a cone-shaped range of motion.
+
+
+ There are two swing spans, swing span 1 and swing span 2, corresponding to the maximum allowable swing angles around each of the two swing axes.
+
+ Related:
+ GetConeSwingSpan1
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconetwistangle.html b/doc/doc_files/getconetwistangle.html
new file mode 100644
index 0000000..df774fd
--- /dev/null
+++ b/doc/doc_files/getconetwistangle.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ getConeTwistAngle [RCBasic Doc]
+
+
+
+
function getConeTwistAngle( constraint_id)
+
+ Returns the current twist angle between the two actors connected by the constraint
+
+
+
+ The twist angle is the current rotational angle between the two actors around the primary twist axis.
+
+
+ It represents how much the actors have rotated relative to each other around the axis, which is the same axis that the twist limit is applied to.
+
+
+ The twist angle can be compared to the twist limit to determine if the constraint is approaching or exceeding the allowed range of rotation.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconetwistlimitsign.html b/doc/doc_files/getconetwistlimitsign.html
new file mode 100644
index 0000000..0300b03
--- /dev/null
+++ b/doc/doc_files/getconetwistlimitsign.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ getConeTwistLimitSign [RCBasic Doc]
+
+
+
+
function getConeTwistLimitSign( constraint_id)
+
+ Returns the sign of the twist limit, which indicates the direction of the twist limit enforcement around the twist axis.
+
+
+
+ The twist limit sign determines the direction in which the twist limit is applied.
+
+
+ A positive sign typically indicates a counterclockwise rotation is allowed, while a negative sign indicates a clockwise rotation is allowed.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconetwistspan.html b/doc/doc_files/getconetwistspan.html
new file mode 100644
index 0000000..8ea78b9
--- /dev/null
+++ b/doc/doc_files/getconetwistspan.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConeTwistSpan [RCBasic Doc]
+
+
+
+
function getConeTwistSpan( constraint_id)
+
+ Returns the maximum allowed twist angle for the constraint, which determines how far the connected bodies can rotate around the twist axis before the constraint enforces limits.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintactora.html b/doc/doc_files/getconstraintactora.html
new file mode 100644
index 0000000..4eb3aa2
--- /dev/null
+++ b/doc/doc_files/getconstraintactora.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConstraintActorA [RCBasic Doc]
+
+
+
+
function getConstraintActorA( constraint_id)
+
+ Returns the first actor in a constraint
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintactorb.html b/doc/doc_files/getconstraintactorb.html
new file mode 100644
index 0000000..41c5436
--- /dev/null
+++ b/doc/doc_files/getconstraintactorb.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConstraintActorB [RCBasic Doc]
+
+
+
+
function getConstraintActorB( constraint_id)
+
+ Returns the second actor in a constraint
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintaframe.html b/doc/doc_files/getconstraintaframe.html
new file mode 100644
index 0000000..0adfb04
--- /dev/null
+++ b/doc/doc_files/getconstraintaframe.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ GetConstraintAFrame [RCBasic Doc]
+
+
+
+
function GetConstraintAFrame( constraint_id, mA)
+
+ Stores the transform of the first actor in a constraint in mA
+
+
+ Note: Only applies to cone and hinge constraints
+
+ Related:
+ GetConstraintBFrame
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintangularonly.html b/doc/doc_files/getconstraintangularonly.html
new file mode 100644
index 0000000..fbdc3f3
--- /dev/null
+++ b/doc/doc_files/getconstraintangularonly.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getConstraintAngularOnly [RCBasic Doc]
+
+
+
+
function getConstraintAngularOnly( constraint_id)
+
+ Returns true if the hinge constraint is set to limit only angular motion while allowing unrestricted linear (translational) motion.
+
+
+ Note: Applies to Cone and Hinge constraints
+
+ Related:
+ SetConstraintAngularOnly
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintappliedimpulse.html b/doc/doc_files/getconstraintappliedimpulse.html
new file mode 100644
index 0000000..1cd03f1
--- /dev/null
+++ b/doc/doc_files/getconstraintappliedimpulse.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConstraintAppliedImpulse [RCBasic Doc]
+
+
+
+
function getConstraintAppliedImpulse( constraint_id)
+
+ Returns the impulse applied to a constraint during the last simulation step. This impulse is the force integrated over a small time step (impulse = force × time) and is applied to resolve the constraint and maintain its behavior, such as keeping two objects connected or restricting movement.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintbframe.html b/doc/doc_files/getconstraintbframe.html
new file mode 100644
index 0000000..3762259
--- /dev/null
+++ b/doc/doc_files/getconstraintbframe.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ GetConstraintBFrame [RCBasic Doc]
+
+
+
+
function GetConstraintBFrame( constraint_id, mA)
+
+ Stores the transform of the second actor in a constraint in mA
+
+
+ Note: Only applies to cone and hinge constraints
+
+ Related:
+ GetConstraintAFrame
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintbreakingimpulsethreshold.html b/doc/doc_files/getconstraintbreakingimpulsethreshold.html
new file mode 100644
index 0000000..4a857de
--- /dev/null
+++ b/doc/doc_files/getconstraintbreakingimpulsethreshold.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getConstraintBreakingImpulseThreshold [RCBasic Doc]
+
+
+
+
function getConstraintBreakingImpulseThreshold( constraint_id)
+
+ Returns the breaking impulse threshold for a given constraint. The breaking impulse threshold defines the maximum force (impulse) a constraint can withstand before it "breaks," meaning that the constraint will be deactivated and no longer enforce its rules.
+
+ Related:
+ SetConstraintBreakingImpulseThreshold
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintfixedactor.html b/doc/doc_files/getconstraintfixedactor.html
new file mode 100644
index 0000000..7bcee13
--- /dev/null
+++ b/doc/doc_files/getconstraintfixedactor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConstraintFixedActor [RCBasic Doc]
+
+
+
+
function getConstraintFixedActor( constraint_id)
+
+ Returns the actor that is associated with a specific constraint. This is primarily applicable in constraints that involve one actor being constrained to another or to a static point in the simulation.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintframeoffseta.html b/doc/doc_files/getconstraintframeoffseta.html
new file mode 100644
index 0000000..c3f63fe
--- /dev/null
+++ b/doc/doc_files/getconstraintframeoffseta.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getConstraintFrameOffsetA [RCBasic Doc]
+
+
+
+
sub getConstraintFrameOffsetA( constraint_id, ByRef x, ByRef y, ByRef z, ByRef rx, ByRef ry, ByRef rz)
+
+ Gets the frame offset for actor A associated with a particular constraint. This frame offset defines the position and orientation of actor A relative to the constraint's anchor point.
+
+ Related:
+ GetConstraintFrameOffsetB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintframeoffsetb.html b/doc/doc_files/getconstraintframeoffsetb.html
new file mode 100644
index 0000000..c8d92c5
--- /dev/null
+++ b/doc/doc_files/getconstraintframeoffsetb.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getConstraintFrameOffsetB [RCBasic Doc]
+
+
+
+
sub getConstraintFrameOffsetB( constraint_id, ByRef x, ByRef y, ByRef z, ByRef rx, ByRef ry, ByRef rz)
+
+ Gets the frame offset for actor B associated with a particular constraint. This frame offset defines the position and orientation of actor B relative to the constraint's anchor point.
+
+ Related:
+ GetConstraintFrameOffsetA
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintlimitsoftness.html b/doc/doc_files/getconstraintlimitsoftness.html
new file mode 100644
index 0000000..08649a7
--- /dev/null
+++ b/doc/doc_files/getconstraintlimitsoftness.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+ getConstraintLimitSoftness [RCBasic Doc]
+
+
+
+
function getConstraintLimitSoftness( constraint_id)
+
+ Returns the softness parameter associated with the limits of the constraint. This softness affects how the constraint behaves when the angular motion of the connected actors approaches their defined limits.
+
+
+
+ Hard Limits: If the softness value is set to 1.0, it means the limits are treated as hard constraints. The physics engine will enforce these limits strictly, applying strong corrective forces to keep the motion within the limits.
+
+
+ Soft Limits: A softness value less than 1.0 allows for some flexibility in the motion. The actors can "push" against the limits without an immediate strong corrective force, leading to a more gradual response when approaching the limits.
+
+
+ Related:
+ SetConstraintSoftnessDirAng
+ SetConstraintSoftnessDirLin
+ SetConstraintSoftnessLimAng
+ SetConstraintSoftnessLimLin
+ SetConstraintSoftnessOrthoAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getconstraintsolveriterations.html b/doc/doc_files/getconstraintsolveriterations.html
new file mode 100644
index 0000000..ca94897
--- /dev/null
+++ b/doc/doc_files/getconstraintsolveriterations.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getConstraintSolverIterations [RCBasic Doc]
+
+
+
+
function getConstraintSolverIterations( constraint_id)
+
+ Returns the value for the number of solver iterations that have been overridden for a specific constraint or actor. Solver iterations refer to the number of times the physics engine solves for constraint forces during each simulation step.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getdesktopdisplaymode.html b/doc/doc_files/getdesktopdisplaymode.html
new file mode 100644
index 0000000..99d7a60
--- /dev/null
+++ b/doc/doc_files/getdesktopdisplaymode.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ GetDesktopDisplayMode [RCBasic Doc]
+
+
+
+
Sub GetDesktopDisplayMode(index, ByRef w, ByRef h, ByRef freq)
+
+ Gets the resolution and refresh rate of a display
+
+
+
+ index - The display index (ie. if you have 3 displays then index could be 0, 1, or 2)
+
+
+ w, h - The width and height of the display will be stored in these variables
+
+
+ freq - The refresh rate will be stored in this variable
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getglobalmouse.html b/doc/doc_files/getglobalmouse.html
new file mode 100644
index 0000000..b309a3d
--- /dev/null
+++ b/doc/doc_files/getglobalmouse.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetGlobalMouse [RCBasic Doc]
+
+
+
+
sub GetGlobalMouse(ByRef x, ByRef y, ByRef mb1, ByRef mb2, ByRef mb3)
+
+ Gets the global mouse position and button state
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getgravity3d.html b/doc/doc_files/getgravity3d.html
new file mode 100644
index 0000000..4d9e61b
--- /dev/null
+++ b/doc/doc_files/getgravity3d.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetGravity3D [RCBasic Doc]
+
+
+
+
sub GetGravity3D(ByRef x, ByRef y, ByRef z)
+
+ Gets the world gravity
+
+ Related:
+ SetGravity3D
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getgyro.html b/doc/doc_files/getgyro.html
new file mode 100644
index 0000000..3a94566
--- /dev/null
+++ b/doc/doc_files/getgyro.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetGyro [RCBasic Doc]
+
+
+
+
sub GetGyro(gyro_num, ByRef x, ByRef y, ByRef z)
+
+ Gets the values of a Gyro sensor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gethingeangle.html b/doc/doc_files/gethingeangle.html
new file mode 100644
index 0000000..266b555
--- /dev/null
+++ b/doc/doc_files/gethingeangle.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getHingeAngle [RCBasic Doc]
+
+
+
+
function getHingeAngle( constraint_id)
+
+ Returns the angle of a hinge constraint
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gethingeangleex.html b/doc/doc_files/gethingeangleex.html
new file mode 100644
index 0000000..9b57eab
--- /dev/null
+++ b/doc/doc_files/gethingeangleex.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getHingeAngleEx [RCBasic Doc]
+
+
+
+
function getHingeAngleEx( constraint_id, t_matrixA, t_matrixB)
+
+ Returns the transforms of the 2 actors in a hinge constraint
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gethingelimitbiasfactor.html b/doc/doc_files/gethingelimitbiasfactor.html
new file mode 100644
index 0000000..ea7f555
--- /dev/null
+++ b/doc/doc_files/gethingelimitbiasfactor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getHingeLimitBiasFactor [RCBasic Doc]
+
+
+
+
function getHingeLimitBiasFactor( constraint_id)
+
+ Returns the bias factor associated with the limits of the hinge constraint. This bias factor affects how the constraint corrects errors when the angular position of the constrained actors approaches or exceeds the defined limits.
+
+
+ The bias factor is a parameter that influences how aggressively the constraint corrects the position when the angular motion reaches the limits. A higher bias factor results in a stronger corrective force, helping to pull the constrained bodies back within their limits more quickly.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gethingelimitrelaxationfactor.html b/doc/doc_files/gethingelimitrelaxationfactor.html
new file mode 100644
index 0000000..dad9624
--- /dev/null
+++ b/doc/doc_files/gethingelimitrelaxationfactor.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ getHingeLimitRelaxationFactor [RCBasic Doc]
+
+
+
+
function getHingeLimitRelaxationFactor( constraint_id)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gethingelimitsign.html b/doc/doc_files/gethingelimitsign.html
new file mode 100644
index 0000000..f2b8d70
--- /dev/null
+++ b/doc/doc_files/gethingelimitsign.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getHingeLimitSign [RCBasic Doc]
+
+
+
+
function getHingeLimitSign( constraint_id)
+
+ Returns the limit sign for the hinge constraint. This value indicates the direction in which the hinge limit is applied, which can be crucial for understanding the behavior of the hinge in relation to its limits.
+
+
+ The limit sign determines whether the hinge's limits are applied in a positive or negative direction. It essentially indicates the side of the limit that is considered "active" during the simulation.
+
+ Related:
+ SetHingeLimit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gethingesolvelimit.html b/doc/doc_files/gethingesolvelimit.html
new file mode 100644
index 0000000..ae09066
--- /dev/null
+++ b/doc/doc_files/gethingesolvelimit.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getHingeSolveLimit [RCBasic Doc]
+
+
+
+
function getHingeSolveLimit( constraint_id)
+
+ Checks whether the hinge has reached or exceeded its angular limit during the simulation. It returns a boolean or an integer value that indicates whether the current angular position is within the constraint's angular limits or if corrective forces need to be applied.
+
+
+ The "solve limit" refers to whether the current angular position is close to or outside the defined angular limits. If the constraint detects that the hinge is at the limit, it enters a solving state, where it applies corrective forces to keep the rotation within the allowed range.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getimagealpha.html b/doc/doc_files/getimagealpha.html
new file mode 100644
index 0000000..f411c76
--- /dev/null
+++ b/doc/doc_files/getimagealpha.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetImageAlpha [RCBasic Doc]
+
+
+
+
function GetImageAlpha( img_id )
+
+ Returns the alpha blend value of an image
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getimagecolormod.html b/doc/doc_files/getimagecolormod.html
new file mode 100644
index 0000000..37be61e
--- /dev/null
+++ b/doc/doc_files/getimagecolormod.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetImageColorMod [RCBasic Doc]
+
+
+
+
function GetImageColorMod(img)
+
+ Returns the color modulation of an image
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getimagesize.html b/doc/doc_files/getimagesize.html
new file mode 100644
index 0000000..19288b5
--- /dev/null
+++ b/doc/doc_files/getimagesize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetImageSize [RCBasic Doc]
+
+
+
+
sub GetImageSize(slot, byref w, byref h)
+
+ Gets the Size of an image
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getjoytrackball.html b/doc/doc_files/getjoytrackball.html
new file mode 100644
index 0000000..41455b1
--- /dev/null
+++ b/doc/doc_files/getjoytrackball.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetJoyTrackBall [RCBasic Doc]
+
+
+
+
sub GetJoyTrackBall(joy_num, ball, byref dx, byref dy)
+
+ Gets the axis values of a track ball
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlightambientcolor.html b/doc/doc_files/getlightambientcolor.html
new file mode 100644
index 0000000..8f12635
--- /dev/null
+++ b/doc/doc_files/getlightambientcolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetLightAmbientColor [RCBasic Doc]
+
+
+
+
function GetLightAmbientColor( actor )
+
+ Returns the ambient color of a light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlightattenuation.html b/doc/doc_files/getlightattenuation.html
new file mode 100644
index 0000000..49d93ca
--- /dev/null
+++ b/doc/doc_files/getlightattenuation.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetLightAttenuation [RCBasic Doc]
+
+
+
+
sub GetLightAttenuation( actor, ByRef constant, ByRef linear, ByRef quadratic)
+
+ Gets the strength of the light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlightdiffusecolor.html b/doc/doc_files/getlightdiffusecolor.html
new file mode 100644
index 0000000..60ded82
--- /dev/null
+++ b/doc/doc_files/getlightdiffusecolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetLightDiffuseColor [RCBasic Doc]
+
+
+
+
function GetLightDiffuseColor( actor )
+
+ Returns the diffuse color of the light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlightfalloff.html b/doc/doc_files/getlightfalloff.html
new file mode 100644
index 0000000..f2c918f
--- /dev/null
+++ b/doc/doc_files/getlightfalloff.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetLightFalloff [RCBasic Doc]
+
+
+
+
function GetLightFalloff( actor )
+
+ Returns the strength decrease between the inner and outer cone of a light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlightinnercone.html b/doc/doc_files/getlightinnercone.html
new file mode 100644
index 0000000..e239a92
--- /dev/null
+++ b/doc/doc_files/getlightinnercone.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetLightInnerCone [RCBasic Doc]
+
+
+
+
function GetLightInnerCone( actor )
+
+ Returns the inner cone of a spot light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlightoutercone.html b/doc/doc_files/getlightoutercone.html
new file mode 100644
index 0000000..1ed16fb
--- /dev/null
+++ b/doc/doc_files/getlightoutercone.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetLightOuterCone [RCBasic Doc]
+
+
+
+
function GetLightOuterCone( actor )
+
+ Returns the outer cone of a spot light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlightradius.html b/doc/doc_files/getlightradius.html
new file mode 100644
index 0000000..a5a1b6e
--- /dev/null
+++ b/doc/doc_files/getlightradius.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getLightRadius [RCBasic Doc]
+
+
+
+
function getLightRadius( actor )
+
+ Returns the radius of the light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlightspecularcolor.html b/doc/doc_files/getlightspecularcolor.html
new file mode 100644
index 0000000..af93eb7
--- /dev/null
+++ b/doc/doc_files/getlightspecularcolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetLightSpecularColor [RCBasic Doc]
+
+
+
+
function GetLightSpecularColor( actor )
+
+ Returns the specular color of a light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlighttype.html b/doc/doc_files/getlighttype.html
new file mode 100644
index 0000000..bc32006
--- /dev/null
+++ b/doc/doc_files/getlighttype.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ GetLightType [RCBasic Doc]
+
+
+
+
function GetLightType( actor )
+
+ Returns the type of light
+
+
+ Returns -1 if it does not have a type (ie. its not a light)
+
+
+ Possible Light Types
+
+
+
+ LIGHT_TYPE_POINT
+
+
+ LIGHT_TYPE_POINT
+
+
+ LIGHT_TYPE_POINT
+ Related:
+ SetLightType
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlineintersection.html b/doc/doc_files/getlineintersection.html
new file mode 100644
index 0000000..6aa0219
--- /dev/null
+++ b/doc/doc_files/getlineintersection.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetLineIntersection [RCBasic Doc]
+
+
+
+
Function GetLineIntersection(p0_x, p0_y, p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, ByRef i_x, ByRef i_y)
+
+ Sets (i_x, i_y) to the intersection of lines p0-p1 and p2-p3
+
+
+ Returns true if there is a collision and false if not
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getlineplaneintersection.html b/doc/doc_files/getlineplaneintersection.html
new file mode 100644
index 0000000..4ad04a5
--- /dev/null
+++ b/doc/doc_files/getlineplaneintersection.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ GetLinePlaneIntersection [RCBasic Doc]
+
+
+
+
function GetLinePlaneIntersection(ByRef line_point, ByRef line_direction, ByRef plane_point_1, ByRef plane_point_2, ByRef plane_point_3, ByRef intersection)
+
+ This function calculates the intersection between a line and a plane in 3D space and stores the result in intersection
+
+
+ Parameters:
+
+
+
+ line_point - An array with an (x,y,z) point representing the start of a line
+
+
+ line_direction - An array with an (x,y,z) point representing another point on the line in the direction its moving
+
+
+ plane_point_1 - An array with an (x,y,z) point representing a point on a plane in 3D space
+
+
+ plane_point_2 - An array with an (x,y,z) point representing a point on a plane in 3D space
+
+
+ plane_point_3 - An array with an (x,y,z) point representing a point on a plane in 3D space
+
+
+
+ Returns true if intersection point is on the plane
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialambientcolor.html b/doc/doc_files/getmaterialambientcolor.html
new file mode 100644
index 0000000..6144f54
--- /dev/null
+++ b/doc/doc_files/getmaterialambientcolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetMaterialAmbientColor [RCBasic Doc]
+
+
+
+
function GetMaterialAmbientColor( material_id)
+
+ Returns the ambient color of a material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialantialiasing.html b/doc/doc_files/getmaterialantialiasing.html
new file mode 100644
index 0000000..25a6797
--- /dev/null
+++ b/doc/doc_files/getmaterialantialiasing.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ GetMaterialAntiAliasing [RCBasic Doc]
+
+
+
+
function GetMaterialAntiAliasing( material_id)
+
+ Returns the anti-aliasing mode for the material
+
+
+ Possible modes returned
+
+
+
+ AA_MODE_OFF=0,
+
+
+ AA_MODE_SIMPLE=1,
+
+
+ AA_MODE_QUALITY=3,
+
+
+ AA_MODE_LINE_SMOOTH=4,
+
+
+ AA_MODE_POINT_SMOOTH=8,
+
+
+ AA_MODE_FULL_BASIC=15,
+
+
+ AA_MODE_ALPHA_TO_COVERAGE=16
+
+
+ Related:
+ SetMaterialAntiAliasing
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialbackfaceculling.html b/doc/doc_files/getmaterialbackfaceculling.html
new file mode 100644
index 0000000..98557db
--- /dev/null
+++ b/doc/doc_files/getmaterialbackfaceculling.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getMaterialBackfaceCulling [RCBasic Doc]
+
+
+
+
function getMaterialBackfaceCulling( material_id)
+
+ Returns true if backface culling is enabled for a material
+
+ Related:
+ SetMaterialBackfaceCulling
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialblendfactor.html b/doc/doc_files/getmaterialblendfactor.html
new file mode 100644
index 0000000..f214b39
--- /dev/null
+++ b/doc/doc_files/getmaterialblendfactor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getMaterialBlendFactor [RCBasic Doc]
+
+
+
+
function getMaterialBlendFactor( material_id)
+
+ Returns a materials blend factor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialblendmode.html b/doc/doc_files/getmaterialblendmode.html
new file mode 100644
index 0000000..1c6ba17
--- /dev/null
+++ b/doc/doc_files/getmaterialblendmode.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+ getMaterialBlendMode [RCBasic Doc]
+
+
+
+
function getMaterialBlendMode( material_id)
+
+ Returns a materials blend mode
+
+
+ Possible Blend Modes
+
+
+
+ BLEND_MODE_NONE
+
+
+ BLEND_MODE_ADD
+
+
+ BLEND_MODE_SUBTRACT
+
+
+ BLEND_MODE_REVSUBTRACT
+
+
+ BLEND_MODE_MIN
+
+
+ BLEND_MODE_MAX
+
+
+ BLEND_MODE_MIN_FACTOR
+
+
+ BLEND_MODE_MAX_FACTOR
+
+
+ BLEND_MODE_MIN_ALPHA
+
+
+ BLEND_MODE_MAX_ALPHA
+
+
+ Related:
+ SetMaterialBlendMode
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialcolormask.html b/doc/doc_files/getmaterialcolormask.html
new file mode 100644
index 0000000..767551e
--- /dev/null
+++ b/doc/doc_files/getmaterialcolormask.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetMaterialColorMask [RCBasic Doc]
+
+
+
+
function GetMaterialColorMask( material_id)
+
+ Returns the color mask for a material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialcolormode.html b/doc/doc_files/getmaterialcolormode.html
new file mode 100644
index 0000000..614d3f2
--- /dev/null
+++ b/doc/doc_files/getmaterialcolormode.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ getMaterialColorMode [RCBasic Doc]
+
+
+
+
function getMaterialColorMode( material_id)
+
+ Returns the color mode of a material
+
+
+ Possible modes
+
+
+
+ COLOR_MODE_NONE
+
+
+ COLOR_MODE_DIFFUSE
+
+
+ COLOR_MODE_AMBIENT
+
+
+ COLOR_MODE_EMISSIVE
+
+
+ COLOR_MODE_SPECULAR
+
+
+ COLOR_MODE_DIFFUSE_AND_AMBIENT
+
+
+ Related:
+ SetMaterialColorMode
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialdiffusecolor.html b/doc/doc_files/getmaterialdiffusecolor.html
new file mode 100644
index 0000000..188de37
--- /dev/null
+++ b/doc/doc_files/getmaterialdiffusecolor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getMaterialDiffuseColor [RCBasic Doc]
+
+
+
+
function getMaterialDiffuseColor( material_id)
+
+ Returns a material's diffuse color
+
+ Related:
+ SetMaterialDiffuseColor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialemissivecolor.html b/doc/doc_files/getmaterialemissivecolor.html
new file mode 100644
index 0000000..e59c14c
--- /dev/null
+++ b/doc/doc_files/getmaterialemissivecolor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getMaterialEmissiveColor [RCBasic Doc]
+
+
+
+
function getMaterialEmissiveColor( material_id)
+
+ Returns a material's emissive color
+
+ Related:
+ SetMaterialEmissiveColor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialflag.html b/doc/doc_files/getmaterialflag.html
new file mode 100644
index 0000000..22433e0
--- /dev/null
+++ b/doc/doc_files/getmaterialflag.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+ getMaterialFlag [RCBasic Doc]
+
+
+
+
function getMaterialFlag( material_id, material_flag)
+
+ Returns the value of the specified material flag
+
+
+ Possible values for flag:
+
+
+
+ MATERIAL_FLAG_WIREFRAME
+
+
+ MATERIAL_FLAG_POINTCLOUD
+
+
+ MATERIAL_FLAG_GOURAUD_SHADING
+
+
+ MATERIAL_FLAG_LIGHTING
+
+
+ MATERIAL_FLAG_ZBUFFER
+
+
+ MATERIAL_FLAG_ZWRITE_ENABLE
+
+
+ MATERIAL_FLAG_BACK_FACE_CULLING
+
+
+ MATERIAL_FLAG_FRONT_FACE_CULLING
+
+
+ MATERIAL_FLAG_BILINEAR_FILTER
+
+
+ MATERIAL_FLAG_TRILINEAR_FILTER
+
+
+ MATERIAL_FLAG_ANISOTROPIC_FILTER
+
+
+ MATERIAL_FLAG_FOG_ENABLE
+
+
+ MATERIAL_FLAG_NORMALIZE_NORMALS
+
+
+ MATERIAL_FLAG_TEXTURE_WRAP
+
+
+ MATERIAL_FLAG_ANTI_ALIASING
+
+
+ MATERIAL_FLAG_COLOR_MASK
+
+
+ MATERIAL_FLAG_COLOR_MATERIAL
+
+
+ MATERIAL_FLAG_USE_MIP_MAPS
+
+
+ MATERIAL_FLAG_BLEND_OPERATION
+
+
+ MATERIAL_FLAG_POLYGON_OFFSET
+
+
+ Related:
+ GetActorMaterialFlag
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialfog.html b/doc/doc_files/getmaterialfog.html
new file mode 100644
index 0000000..87ac07a
--- /dev/null
+++ b/doc/doc_files/getmaterialfog.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getMaterialFog [RCBasic Doc]
+
+
+
+
function getMaterialFog( material_id)
+
+ Returns true if fog is enabled for a material
+
+ Related:
+ SetMaterialFog
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialfrontfaceculling.html b/doc/doc_files/getmaterialfrontfaceculling.html
new file mode 100644
index 0000000..fbf6e1e
--- /dev/null
+++ b/doc/doc_files/getmaterialfrontfaceculling.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getMaterialFrontfaceCulling [RCBasic Doc]
+
+
+
+
function getMaterialFrontfaceCulling( material_id)
+
+ Returns true if front face culling is enabled for a material
+
+ Related:
+ SetMaterialFrontfaceCulling
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialshininess.html b/doc/doc_files/getmaterialshininess.html
new file mode 100644
index 0000000..8e5dde5
--- /dev/null
+++ b/doc/doc_files/getmaterialshininess.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getMaterialShininess [RCBasic Doc]
+
+
+
+
function getMaterialShininess( material_id)
+
+ Returns the shininess value for a material
+
+ Related:
+ SetMaterialShininess
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialspecularcolor.html b/doc/doc_files/getmaterialspecularcolor.html
new file mode 100644
index 0000000..6d226e5
--- /dev/null
+++ b/doc/doc_files/getmaterialspecularcolor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getMaterialSpecularColor [RCBasic Doc]
+
+
+
+
function getMaterialSpecularColor( material_id)
+
+ Returns the specular color for a material
+
+ Related:
+ SetMaterialSpecularColor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialthickness.html b/doc/doc_files/getmaterialthickness.html
new file mode 100644
index 0000000..107b84e
--- /dev/null
+++ b/doc/doc_files/getmaterialthickness.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getMaterialThickness [RCBasic Doc]
+
+
+
+
function getMaterialThickness( material_id)
+
+ Returns a material's thickness value
+
+
+ Thickness value is mainly for primitives such as lines
+
+ Related:
+ SetMaterialThickness
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaterialtype.html b/doc/doc_files/getmaterialtype.html
new file mode 100644
index 0000000..b040404
--- /dev/null
+++ b/doc/doc_files/getmaterialtype.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+ getMaterialType [RCBasic Doc]
+
+
+
+
function getMaterialType( material_id)
+
+ Returns a material's type
+
+
+ Possible types
+
+
+
+ MATERIAL_TYPE_SOLID
+
+
+ MATERIAL_TYPE_SOLID_2_LAYER
+
+
+ MATERIAL_TYPE_LIGHTMAP
+
+
+ MATERIAL_TYPE_LIGHTMAP_ADD
+
+
+ MATERIAL_TYPE_LIGHTMAP_M2
+
+
+ MATERIAL_TYPE_LIGHTMAP_M4
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING_M2
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING_M4
+
+
+ MATERIAL_TYPE_DETAIL_MAP
+
+
+ MATERIAL_TYPE_SPHERE_MAP
+
+
+ MATERIAL_TYPE_REFLECTION_2_LAYER
+
+
+ MATERIAL_TYPE_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL
+
+
+ MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL_REF
+
+
+ MATERIAL_TYPE_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_TRANSPARENT_REFLECTION_2_LAYER
+
+
+ MATERIAL_TYPE_NORMAL_MAP_SOLID
+
+
+ MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_SOLID
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_ONETEXTURE_BLEND
+
+
+ MATERIAL_TYPE_FORCE_32BIT
+
+
+ Related:
+ SetMaterialType
+ GetActorMaterialType
+ SetActorMaterialType
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmatrixrotation.html b/doc/doc_files/getmatrixrotation.html
new file mode 100644
index 0000000..5ce7d7f
--- /dev/null
+++ b/doc/doc_files/getmatrixrotation.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetMatrixRotation [RCBasic Doc]
+
+
+
+
sub GetMatrixRotation( mA, ByRef x, ByRef y, ByRef z)
+
+ Gets the rotation vector of a matrix
+
+ Related:
+ SetMatrixRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmatrixscale.html b/doc/doc_files/getmatrixscale.html
new file mode 100644
index 0000000..95ee4b4
--- /dev/null
+++ b/doc/doc_files/getmatrixscale.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetMatrixScale [RCBasic Doc]
+
+
+
+
sub GetMatrixScale( mA, ByRef x, ByRef y, ByRef z)
+
+ Gets the scale vector of a matrix
+
+ Related:
+ SetMatrixScale
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmatrixsize.html b/doc/doc_files/getmatrixsize.html
new file mode 100644
index 0000000..b8eb6ac
--- /dev/null
+++ b/doc/doc_files/getmatrixsize.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetMatrixSize [RCBasic Doc]
+
+
+
+
sub GetMatrixSize(mA, ByRef r, ByRef c)
+
+ Gets the number of rows and columns in a matrix
+
+ Related:
+ DimMatrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmatrixtranslation.html b/doc/doc_files/getmatrixtranslation.html
new file mode 100644
index 0000000..19e3c65
--- /dev/null
+++ b/doc/doc_files/getmatrixtranslation.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetMatrixTranslation [RCBasic Doc]
+
+
+
+
sub GetMatrixTranslation( mA, ByRef x, ByRef y, ByRef z)
+
+ Get the position vector of a matrix
+
+ Related:
+ SetMatrixTranslation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmaxparticlespersecond.html b/doc/doc_files/getmaxparticlespersecond.html
new file mode 100644
index 0000000..c6ede50
--- /dev/null
+++ b/doc/doc_files/getmaxparticlespersecond.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ getMaxParticlesPerSecond [RCBasic Doc]
+
+
+
+
function getMaxParticlesPerSecond( actor)
+
+ Returns the max number of particles emitted per second
+
+ Related:
+ SetMaxParticlesPerSecond
+ GetMinParticlesPerSecond
+ SetMinParticlesPerSecond
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getminparticlespersecond.html b/doc/doc_files/getminparticlespersecond.html
new file mode 100644
index 0000000..3bd31f6
--- /dev/null
+++ b/doc/doc_files/getminparticlespersecond.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ getMinParticlesPerSecond [RCBasic Doc]
+
+
+
+
function getMinParticlesPerSecond( actor)
+
+ Returns the min number of particles emitted per second
+
+ Related:
+ SetMinParticlesPerSecond
+ GetMaxParticlesPerSecond
+ SetMaxParticlesPerSecond
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmouse.html b/doc/doc_files/getmouse.html
new file mode 100644
index 0000000..ba9b9d8
--- /dev/null
+++ b/doc/doc_files/getmouse.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ GetMouse [RCBasic Doc]
+
+
+
+
sub GetMouse(byref x, byref y, byref mb1, byref mb2, byref mb3)
+
+ Gets the mouse position and button state local to the graphics window
+
+ Related:
+ GetGlobalMouse
+ MouseX
+ MouseY
+ MouseButton
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmousewheel.html b/doc/doc_files/getmousewheel.html
new file mode 100644
index 0000000..2d02a60
--- /dev/null
+++ b/doc/doc_files/getmousewheel.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetMouseWheel [RCBasic Doc]
+
+
+
+
sub GetMouseWheel(byref x_axis, byref y_axis)
+
+ Gets the axis positions of the mouse wheel
+
+ Related:
+ GetMouse
+ GetGlobalMouse
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmultitouch.html b/doc/doc_files/getmultitouch.html
new file mode 100644
index 0000000..6f75de2
--- /dev/null
+++ b/doc/doc_files/getmultitouch.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetMultiTouch [RCBasic Doc]
+
+
+
+
sub GetMultiTouch(byref status, byref x, byref y, byref fingers, byref dist, byref theta)
+
+ Gets the status, position, number of fingers, distance between the fingers and rotation of a multi-finger gesture
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmusicposition.html b/doc/doc_files/getmusicposition.html
new file mode 100644
index 0000000..8b65e66
--- /dev/null
+++ b/doc/doc_files/getmusicposition.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetMusicPosition [RCBasic Doc]
+
+
+
+
function GetMusicPosition()
+
+ Returns the position of the music track
+
+ Related:
+ SetMusicPosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getmusicvolume.html b/doc/doc_files/getmusicvolume.html
new file mode 100644
index 0000000..b0304d2
--- /dev/null
+++ b/doc/doc_files/getmusicvolume.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetMusicVolume [RCBasic Doc]
+
+
+
+
function GetMusicVolume()
+
+ Returns the music track's volume
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getnuman8scenes.html b/doc/doc_files/getnuman8scenes.html
new file mode 100644
index 0000000..5ef92e1
--- /dev/null
+++ b/doc/doc_files/getnuman8scenes.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetNumAN8Scenes [RCBasic Doc]
+
+
+
+
Function GetNumAN8Scenes(an8_project)
+
+ Returns the number of scenes in an an8 project
+
+ Related:
+ LoadAN8
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlebox.html b/doc/doc_files/getparticlebox.html
new file mode 100644
index 0000000..fc6f273
--- /dev/null
+++ b/doc/doc_files/getparticlebox.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getParticleBox [RCBasic Doc]
+
+
+
+
sub getParticleBox( actor, ByRef min_x, ByRef min_y, ByRef min_z, ByRef max_x, ByRef max_y, ByRef max_z)
+
+ Gets the bounding box for a particle emitter
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlecenter.html b/doc/doc_files/getparticlecenter.html
new file mode 100644
index 0000000..ad64feb
--- /dev/null
+++ b/doc/doc_files/getparticlecenter.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getParticleCenter [RCBasic Doc]
+
+
+
+
sub getParticleCenter( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets the center of a particle emitter
+
+
+ Note: applies to Sphere, Cylinder, and Ring emitters
+
+ Related:
+ SetParticleCenter
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticledirection.html b/doc/doc_files/getparticledirection.html
new file mode 100644
index 0000000..b152366
--- /dev/null
+++ b/doc/doc_files/getparticledirection.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getParticleDirection [RCBasic Doc]
+
+
+
+
sub getParticleDirection( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets the direction of a particle emitter
+
+ Related:
+ SetParticleDirection
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlelength.html b/doc/doc_files/getparticlelength.html
new file mode 100644
index 0000000..29c284e
--- /dev/null
+++ b/doc/doc_files/getparticlelength.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getParticleLength [RCBasic Doc]
+
+
+
+
function getParticleLength( actor)
+
+ Returns the length of a cylinder particle emitter
+
+
+ Note: Only applies to cylinder particles
+
+ Related:
+ SetParticleLength
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlemaxangle.html b/doc/doc_files/getparticlemaxangle.html
new file mode 100644
index 0000000..205652e
--- /dev/null
+++ b/doc/doc_files/getparticlemaxangle.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getParticleMaxAngle [RCBasic Doc]
+
+
+
+
function getParticleMaxAngle( actor)
+
+ Returns the max angle of particle emission
+
+ Related:
+ SetParticleMaxAngle
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlemaxlife.html b/doc/doc_files/getparticlemaxlife.html
new file mode 100644
index 0000000..fd2813e
--- /dev/null
+++ b/doc/doc_files/getparticlemaxlife.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getParticleMaxLife [RCBasic Doc]
+
+
+
+
function getParticleMaxLife( actor)
+
+ Returns the max life of the particle emission
+
+
+ Note: Returned time is in milliseconds
+
+ Related:
+ SetParticleMaxLife
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlemaxstartcolor.html b/doc/doc_files/getparticlemaxstartcolor.html
new file mode 100644
index 0000000..b01a34e
--- /dev/null
+++ b/doc/doc_files/getparticlemaxstartcolor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getParticleMaxStartColor [RCBasic Doc]
+
+
+
+
function getParticleMaxStartColor( actor)
+
+ Returns max starting color for particles
+
+ Related:
+ SetParticleMaxStartColor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlemaxstartsize.html b/doc/doc_files/getparticlemaxstartsize.html
new file mode 100644
index 0000000..b368780
--- /dev/null
+++ b/doc/doc_files/getparticlemaxstartsize.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getParticleMaxStartSize [RCBasic Doc]
+
+
+
+
sub getParticleMaxStartSize( actor, ByRef w, ByRef h)
+
+ Gets the max start size for the particles
+
+ Related:
+ SetParticleMaxStartSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticleminlife.html b/doc/doc_files/getparticleminlife.html
new file mode 100644
index 0000000..00e0518
--- /dev/null
+++ b/doc/doc_files/getparticleminlife.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getParticleMinLife [RCBasic Doc]
+
+
+
+
function getParticleMinLife( actor)
+
+ Get the min life of particles
+
+
+ Note: Returned time is in milliseconds
+
+ Related:
+ SetParticleMinLife
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticleminstartcolor.html b/doc/doc_files/getparticleminstartcolor.html
new file mode 100644
index 0000000..005ef5b
--- /dev/null
+++ b/doc/doc_files/getparticleminstartcolor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getParticleMinStartColor [RCBasic Doc]
+
+
+
+
function getParticleMinStartColor( actor)
+
+ Returns the min start color for particles
+
+ Related:
+ SetParticleMinStartColor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticleminstartsize.html b/doc/doc_files/getparticleminstartsize.html
new file mode 100644
index 0000000..7a47a4d
--- /dev/null
+++ b/doc/doc_files/getparticleminstartsize.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getParticleMinStartSize [RCBasic Doc]
+
+
+
+
sub getParticleMinStartSize( actor, ByRef w, ByRef h)
+
+ Gets the min start size for particle emitter
+
+ Related:
+ SetParticleMinStartSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlenormal.html b/doc/doc_files/getparticlenormal.html
new file mode 100644
index 0000000..184b6ff
--- /dev/null
+++ b/doc/doc_files/getparticlenormal.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getParticleNormal [RCBasic Doc]
+
+
+
+
sub getParticleNormal( actor, ByRef x, ByRef y, ByRef z)
+
+ Gets the normal of a particle emitter
+
+
+ Note: Only applies to cylinder particle emitter
+
+ Related:
+ SetParticleNormal
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticlenormaldirectionmod.html b/doc/doc_files/getparticlenormaldirectionmod.html
new file mode 100644
index 0000000..2c231af
--- /dev/null
+++ b/doc/doc_files/getparticlenormaldirectionmod.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getParticleNormalDirectionMod [RCBasic Doc]
+
+
+
+
function getParticleNormalDirectionMod( actor)
+
+ Returns the normal direction modifier for a particle emitter
+
+
+ Note: Only applies to mesh particle emitter
+
+ Related:
+ SetParticleNormalDirectionMod
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticleradius.html b/doc/doc_files/getparticleradius.html
new file mode 100644
index 0000000..5ecfe11
--- /dev/null
+++ b/doc/doc_files/getparticleradius.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getParticleRadius [RCBasic Doc]
+
+
+
+
function getParticleRadius( actor)
+
+ Returns the radius of a particle emitter
+
+
+ Note: Only applies to Sphere, Cylinder, and Ring emitters
+
+ Related:
+ SetParticleRadius
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticleringthickness.html b/doc/doc_files/getparticleringthickness.html
new file mode 100644
index 0000000..78d32ba
--- /dev/null
+++ b/doc/doc_files/getparticleringthickness.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getParticleRingThickness [RCBasic Doc]
+
+
+
+
function getParticleRingThickness( actor)
+
+ Returns the thickness of a ring emitter
+
+
+ Note: Only applies to ring emitter
+
+ Related:
+ SetParticleRingThickness
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getparticletype.html b/doc/doc_files/getparticletype.html
new file mode 100644
index 0000000..f71720c
--- /dev/null
+++ b/doc/doc_files/getparticletype.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ getParticleType [RCBasic Doc]
+
+
+
+
function getParticleType( actor )
+
+ Returns the particle type
+
+
+ Possible Particle Types
+
+
+
+ PARTICLE_TYPE_POINT
+
+
+ PARTICLE_TYPE_BOX
+
+
+ PARTICLE_TYPE_SPHERE
+
+
+ PARTICLE_TYPE_CYLINDER
+
+
+ PARTICLE_TYPE_MESH
+
+
+ PARTICLE_TYPE_RING
+
+
+ Related:
+ CreateParticleActor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getpixel.html b/doc/doc_files/getpixel.html
new file mode 100644
index 0000000..5c0a75e
--- /dev/null
+++ b/doc/doc_files/getpixel.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetPixel [RCBasic Doc]
+
+
+
+
function GetPixel(x,y)
+
+ Returns the color of a pixel
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getpointpivota.html b/doc/doc_files/getpointpivota.html
new file mode 100644
index 0000000..667a691
--- /dev/null
+++ b/doc/doc_files/getpointpivota.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ getPointPivotA [RCBasic Doc]
+
+
+
+
sub getPointPivotA( constraint_id, ByRef x, ByRef y, ByRef z)
+
+ Gets the pivot point on the first actor (Body A) of the constraint. This pivot point defines the specific location in the local space of Body A where the point-to-point constraint is anchored.
+
+ Related:
+ GetPointPivotB
+ SetPointPivotA
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getpointpivotb.html b/doc/doc_files/getpointpivotb.html
new file mode 100644
index 0000000..798eae4
--- /dev/null
+++ b/doc/doc_files/getpointpivotb.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ getPointPivotB [RCBasic Doc]
+
+
+
+
sub getPointtPivotB( constraint_id, ByRef x, ByRef y, ByRef z)
+
+ Gets the pivot point on the first actor (Body B) of the constraint. This pivot point defines the specific location in the local space of Body B where the point-to-point constraint is anchored.
+
+ Related:
+ GetPointPivotA
+ SetPointPivotB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getpowerinfo.html b/doc/doc_files/getpowerinfo.html
new file mode 100644
index 0000000..564f0e6
--- /dev/null
+++ b/doc/doc_files/getpowerinfo.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ GetPowerInfo [RCBasic Doc]
+
+
+
+
Sub GetPowerInfo(ByRef status, ByRef secs, ByRef pct)
+
+ Gets the charging status of the device the program is running on.
+
+
+ status - the charging status of the battery. Look below for the different statuses that can be returned. secs - the approximate time in seconds until the battery looses its charge. pct - the percentage of the battery charged.
+
+
+ Possible Statuses
+
+
+
+ POWERSTATE_UNKNOWN
+
+
+ POWERSTATE_ON_BATTERY
+
+
+ POWERSTATE_NO_BATTERY
+
+
+ POWERSTATE_CHARGING
+
+
+ POWERSTATE_CHARGED
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getprojectionmatrix.html b/doc/doc_files/getprojectionmatrix.html
new file mode 100644
index 0000000..e81eb1c
--- /dev/null
+++ b/doc/doc_files/getprojectionmatrix.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ GetProjectionMatrix [RCBasic Doc]
+
+
+
+
Sub GetProjectionMatrix(matA)
+
+ Gets the camera projection matrix for the active canvas
+
+
+ Possible values for projection_type
+
+
+
+ PROJECTION_TYPE_ORTHOGRAPHIC
+
+
+ PROJECTION_TYPE_PERSPECTIVE
+
+
+ Related:
+ SetProjectionMatrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslideanchora.html b/doc/doc_files/getslideanchora.html
new file mode 100644
index 0000000..fde1430
--- /dev/null
+++ b/doc/doc_files/getslideanchora.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetSlideAnchorA [RCBasic Doc]
+
+
+
+
sub GetSlideAnchorA( constraint_id, ByRef x, ByRef y, ByRef z)
+
+ Gets the anchor point of the first actor in world space, where the slider constraint is acting on the actor. This point represents the location of the slider's reference frame on body A in the global coordinate system.
+
+ Related:
+ GetSlideAnchorB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslideanchorb.html b/doc/doc_files/getslideanchorb.html
new file mode 100644
index 0000000..0ead8a9
--- /dev/null
+++ b/doc/doc_files/getslideanchorb.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetSlideAnchorB [RCBasic Doc]
+
+
+
+
sub GetSlideAnchorB( constraint_id, ByRef x, ByRef y, ByRef z)
+
+ Gets the anchor point of the first actor in world space, where the slider constraint is acting on the actor. This point represents the location of the slider's reference frame on body B in the global coordinate system.
+
+ Related:
+ GetSlideAnchorA
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslideangdepth.html b/doc/doc_files/getslideangdepth.html
new file mode 100644
index 0000000..2694e72
--- /dev/null
+++ b/doc/doc_files/getslideangdepth.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetSlideAngDepth [RCBasic Doc]
+
+
+
+
function GetSlideAngDepth( constraint_id)
+
+ Gets the angular depth or the angular deviation from the expected orientation of the two actors (or one actor and the world) constrained by the slider. This "angular depth" refers to how much the actors are misaligned rotationally relative to the constraint’s expected or allowed configuration.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslideangularpos.html b/doc/doc_files/getslideangularpos.html
new file mode 100644
index 0000000..e9a63cb
--- /dev/null
+++ b/doc/doc_files/getslideangularpos.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getSlideAngularPos [RCBasic Doc]
+
+
+
+
function getSlideAngularPos( constraint_id)
+
+ Gets the current angular position of an actor relative to the other actor (or the world) around the slider's axis of motion. Specifically, it measures how much an actor has rotated around the axis that is defined for the slider constraint.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidedampingdirang.html b/doc/doc_files/getslidedampingdirang.html
new file mode 100644
index 0000000..2b14798
--- /dev/null
+++ b/doc/doc_files/getslidedampingdirang.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideDampingDirAng [RCBasic Doc]
+
+
+
+
function getSlideDampingDirAng( constraint_id)
+
+ Returns the angular directional damping value. This damping factor specifically affects angular motion in the direction of movement along the constraint's axes.
+
+
+ Note: Only applies to slider constraint
+
+ Related:
+ SetSlideDampingDirAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidedampingdirlin.html b/doc/doc_files/getslidedampingdirlin.html
new file mode 100644
index 0000000..6845718
--- /dev/null
+++ b/doc/doc_files/getslidedampingdirlin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideDampingDirLin [RCBasic Doc]
+
+
+
+
function getSlideDampingDirLin( constraint_id)
+
+ Returns the linear directional damping value for a constraint. This value applies to the linear (translational) motion of an object along the constraint's axis of movement.
+
+
+ Note: Only applies to slide constraints
+
+ Related:
+ SetSlideDampingDirLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidedampinglimang.html b/doc/doc_files/getslidedampinglimang.html
new file mode 100644
index 0000000..0c27759
--- /dev/null
+++ b/doc/doc_files/getslidedampinglimang.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideDampingLimAng [RCBasic Doc]
+
+
+
+
function getSlideDampingLimAng( constraint_id)
+
+ Returns the angular limit damping factor for a constraint. This damping applies specifically to the angular motion of an object when it reaches the limit of its allowed rotational range.
+
+ Related:
+ SetSlideDampingLimAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidedampinglimlin.html b/doc/doc_files/getslidedampinglimlin.html
new file mode 100644
index 0000000..bbb8c85
--- /dev/null
+++ b/doc/doc_files/getslidedampinglimlin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideDampingLimLin [RCBasic Doc]
+
+
+
+
function getSlideDampingLimLin( constraint_id)
+
+ Returns the linear limit damping factor for a constraint. This damping applies specifically to the linear (translational) motion of an object when it reaches the limit of its allowed range of movement along a specific axis.
+
+
+ Note: Only applies to slide constraint
+
+ Related:
+ SetSlideDampingLimLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidedampingorthoang.html b/doc/doc_files/getslidedampingorthoang.html
new file mode 100644
index 0000000..53ea0f7
--- /dev/null
+++ b/doc/doc_files/getslidedampingorthoang.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideDampingOrthoAng [RCBasic Doc]
+
+
+
+
function getSlideDampingOrthoAng( constraint_id)
+
+ Returns the orthogonal angular damping factor applied to a constraint. This damping affects angular (rotational) motion that occurs perpendicular to the primary axis of movement defined by the constraint.
+
+ Related:
+ SetSlideDampingOrthoAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidedampingortholin.html b/doc/doc_files/getslidedampingortholin.html
new file mode 100644
index 0000000..8a15024
--- /dev/null
+++ b/doc/doc_files/getslidedampingortholin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideDampingOrthoLin [RCBasic Doc]
+
+
+
+
function getSlideDampingOrthoLin( constraint_id)
+
+ Returns the orthogonal linear damping factor for a constraint. This damping affects the linear (translational) motion of an object that occurs perpendicular to the primary direction of movement defined by the constraint.
+
+
+ Note: Only applies to slide constraint
+
+ Related:
+ SetSlideDampingOrthoLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidelindepth.html b/doc/doc_files/getslidelindepth.html
new file mode 100644
index 0000000..19ae897
--- /dev/null
+++ b/doc/doc_files/getslidelindepth.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideLinDepth [RCBasic Doc]
+
+
+
+
function getSlideLinDepth( constraint_id)
+
+ Returns the linear depth of the slider constraint. This value indicates how much the actors connected by the slider constraint are overlapping or penetrating each other in the linear (translational) direction.
+
+
+ The linear depth is a measure of how far the actors are penetrating each other along the linear axis defined by the slider constraint. A positive value indicates that the actors are overlapping, while a value of zero means they are in contact but not penetrating. Negative values typically imply that the actors are separated.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidelinearpos.html b/doc/doc_files/getslidelinearpos.html
new file mode 100644
index 0000000..73bafbc
--- /dev/null
+++ b/doc/doc_files/getslidelinearpos.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideLinearPos [RCBasic Doc]
+
+
+
+
function getSlideLinearPos( constraint_id)
+
+ Returns the current linear position of the slider constraint along its defined axis. This position reflects how far the connected actors have moved along the slider's linear axis since the constraint was created or last reset.
+
+
+ This value can be positive or negative, depending on the relative positions of the two bodies connected by the slider.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslideloweranglimit.html b/doc/doc_files/getslideloweranglimit.html
new file mode 100644
index 0000000..8041fbc
--- /dev/null
+++ b/doc/doc_files/getslideloweranglimit.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideLowerAngLimit [RCBasic Doc]
+
+
+
+
function getSlideLowerAngLimit( constraint_id)
+
+ Returns the lower angular limit of the constraint. This value specifies the minimum angle allowed for the rotation of the connected actors around the axis perpendicular to the sliding direction defined by the slider constraint.
+
+
+ The lower angular limit indicates the smallest angle that the actors can rotate about the axis perpendicular to the sliding direction. If the rotation tries to exceed this limit, the physics engine will apply corrective forces to maintain the bodies within the allowed range.
+
+ Related:
+ GetSlideLowerLinLimit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidelowerlinlimit.html b/doc/doc_files/getslidelowerlinlimit.html
new file mode 100644
index 0000000..573ec02
--- /dev/null
+++ b/doc/doc_files/getslidelowerlinlimit.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideLowerLinLimit [RCBasic Doc]
+
+
+
+
function getSlideLowerLinLimit( constraint_id)
+
+ Returns the lower linear limit for the translational (sliding) motion along the slider's axis. This value specifies the minimum allowable position for the connected actors along the defined axis of the slider constraint.
+
+
+ This defines the minimum translation distance along the slider’s axis that the connected actors are allowed to reach. If the actors' relative position along the axis goes below this limit, the constraint will prevent further movement.
+
+ Related:
+ SetSlideLowerLinLimit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getsliderestitutiondirang.html b/doc/doc_files/getsliderestitutiondirang.html
new file mode 100644
index 0000000..9976925
--- /dev/null
+++ b/doc/doc_files/getsliderestitutiondirang.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideRestitutionDirAng [RCBasic Doc]
+
+
+
+
function getSlideRestitutionDirAng( constraint_id)
+
+ Returns the restitution value for angular motion. The restitution coefficient is a measure of how much energy is conserved in a collision or constraint interaction, specifically for angular movements.
+
+
+ When actors collide or interact, their angular momentum and position can change, and the restitution value governs how much of that energy is retained after the interaction.
+
+ Related:
+ SetSlideRestitutionDirAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getsliderestitutiondirlin.html b/doc/doc_files/getsliderestitutiondirlin.html
new file mode 100644
index 0000000..ad8dd51
--- /dev/null
+++ b/doc/doc_files/getsliderestitutiondirlin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideRestitutionDirLin [RCBasic Doc]
+
+
+
+
function getSlideRestitutionDirLin( constraint_id)
+
+ Returns the restitution value for linear motion. This value determines how much energy is conserved in a collision or interaction involving linear movements of the connected actors.
+
+
+ When the actors collide or interact, the restitution value dictates how much of their energy is retained after the interaction.
+
+ Related:
+ SetSlideRestitutionDirLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getsliderestitutionlimang.html b/doc/doc_files/getsliderestitutionlimang.html
new file mode 100644
index 0000000..7348673
--- /dev/null
+++ b/doc/doc_files/getsliderestitutionlimang.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideRestitutionLimAng [RCBasic Doc]
+
+
+
+
function getSlideRestitutionLimAng( constraint_id)
+
+ Returns the restitution value for angular limit. This value determines how much energy is conserved when the angular motion of the connected actors reaches the angular limits of the slider constraint. Essentially, it controls how "bouncy" the rotation is when it hits the angular limit of the constraint.
+
+
+ A value of 0.0 means no bounce (perfectly inelastic), while a value of 1.0 allows maximum bounce (perfectly elastic).
+
+ Related:
+ SetSlideRestitutionLimAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getsliderestitutionlimlin.html b/doc/doc_files/getsliderestitutionlimlin.html
new file mode 100644
index 0000000..78ff5fd
--- /dev/null
+++ b/doc/doc_files/getsliderestitutionlimlin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ getSlideRestitutionLimLin [RCBasic Doc]
+
+
+
+
function getSlideRestitutionLimLin( constraint_id)
+
+ Returns the restitution value for the linear limit of the constraint. This value controls how much energy is conserved (or how "bouncy" the interaction is) when the connected actors reach the linear limits of the slider constraint, which restricts the movement along the sliding axis.
+
+
+ Restitution is a measure of how much energy is retained after a collision or interaction. In this context, when the linear movement reaches the limits, restitution controls how much the actors "bounce" back. A restitution value of 0.0 means no bounce (the collision is perfectly inelastic), and 1.0 allows maximum bounce (the collision is perfectly elastic).
+
+ Related:
+ SetSlideRestitutionLimLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getsliderestitutionorthoang.html b/doc/doc_files/getsliderestitutionorthoang.html
new file mode 100644
index 0000000..7786ea3
--- /dev/null
+++ b/doc/doc_files/getsliderestitutionorthoang.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ getSlideRestitutionOrthoAng [RCBasic Doc]
+
+
+
+
function getSlideRestitutionOrthoAng( constraint_id)
+
+ Returns the restitution value for orthogonal angular motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when rotational movement occurs in a direction orthogonal (perpendicular) to the slider's primary axis of movement.
+
+
+ Orthogonal Angular Motion: In the context of a slider constraint, orthogonal angular motion refers to rotational movement around axes that are perpendicular to the slider's main movement axis.
+
+
+ Restitution: Restitution is a measure of how much energy is retained in a collision or interaction. A restitution value of 0.0 means no bounce (inelastic collision), and 1.0 means maximum bounce (elastic collision). For orthogonal angular motion, this describes how much bounce occurs after the rotational motion hits the constraints or limits in a perpendicular direction to the slider axis.
+
+ Related:
+ SetSlideRestitutionOrthoAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getsliderestitutionortholin.html b/doc/doc_files/getsliderestitutionortholin.html
new file mode 100644
index 0000000..3d4d2f7
--- /dev/null
+++ b/doc/doc_files/getsliderestitutionortholin.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ getSlideRestitutionOrthoLin [RCBasic Doc]
+
+
+
+
function getSlideRestitutionOrthoLin( constraint_id)
+
+ Returns the restitution value for orthogonal linear motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when linear motion occurs in a direction orthogonal (perpendicular) to the primary sliding axis of the constraint.
+
+
+ Orthogonal Linear Motion: In the context of a slider constraint, orthogonal linear motion refers to translational movement along axes that are perpendicular to the main sliding axis of the constraint.
+
+
+ Restitution: Restitution is a measure of how much energy is retained or conserved during a collision or interaction. A restitution value of 0.0 indicates no bounce (perfectly inelastic), while 1.0 indicates maximum bounce (perfectly elastic). For orthogonal linear motion, this value describes how much the actors bounce or retain energy when they hit limits or experience movement perpendicular to the slider’s main axis.
+
+ Related:
+ SetSlideRestitutionOrthoLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidesoftnessdirang.html b/doc/doc_files/getslidesoftnessdirang.html
new file mode 100644
index 0000000..da6acd2
--- /dev/null
+++ b/doc/doc_files/getslidesoftnessdirang.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideSoftnessDirAng [RCBasic Doc]
+
+
+
+
function getSlideSoftnessDirAng( constraint_id)
+
+ Returns the softness parameter for the angular motion of the constraint. This parameter is used to define how "soft" or "rigid" the limits of angular motion are, particularly when the angular limits are reached.
+
+
+ The softness parameter defines how smoothly the constraint responds to limit violations. A higher softness value allows for more gradual movements when limits are approached, while a lower value creates a more rigid response. Softness is particularly useful in simulations to avoid harsh impacts or stiff movements when limits are reached.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidesoftnessdirlin.html b/doc/doc_files/getslidesoftnessdirlin.html
new file mode 100644
index 0000000..b829876
--- /dev/null
+++ b/doc/doc_files/getslidesoftnessdirlin.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideSoftnessDirLin [RCBasic Doc]
+
+
+
+
function getSlideSoftnessDirLin( constraint_id)
+
+ Returns the softness parameter for the linear motion of the constraint. This parameter influences how the constraint responds when the linear limits of movement are reached along the sliding axis, determining whether the response is soft and gradual or more rigid.
+
+
+ In the context of constraints, softness defines how "compliant" or "stiff" the constraint behaves when the limits are approached. A higher softness value makes the constraint respond more softly and gradually as the limit is approached, while a lower value makes the response stiffer and more rigid.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidesoftnesslimang.html b/doc/doc_files/getslidesoftnesslimang.html
new file mode 100644
index 0000000..b1599c0
--- /dev/null
+++ b/doc/doc_files/getslidesoftnesslimang.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideSoftnessLimAng [RCBasic Doc]
+
+
+
+
function getSlideSoftnessLimAng( constraint_id)
+
+ Returns the softness parameter for the angular limits of the constraint. This parameter affects how "soft" or "rigid" the constraint behaves when the connected actors reach their angular rotational limits around the slider's axis of rotation.
+
+
+ The softness parameter defines how compliant or stiff the constraint behaves when the motion approaches a limit. A higher softness makes the constraint more flexible, allowing for smoother motion near the limit. A lower softness makes the limit response more rigid and immediate.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidesoftnesslimlin.html b/doc/doc_files/getslidesoftnesslimlin.html
new file mode 100644
index 0000000..7f57e4e
--- /dev/null
+++ b/doc/doc_files/getslidesoftnesslimlin.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideSoftnessLimLin [RCBasic Doc]
+
+
+
+
function getSlideSoftnessLimLin( constraint_id)
+
+ Returns the softness parameter for the linear limits of the constraint. This parameter influences how "soft" or "rigid" the constraint behaves when the connected actors reach their linear (sliding) limits along the constraint's axis of motion.
+
+
+ The softness parameter defines how compliant or stiff the constraint behaves when limits are approached. A higher softness value allows for a more gradual and flexible response as the limit is reached, while a lower softness value results in a stiffer and more rigid response.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidesoftnessorthoang.html b/doc/doc_files/getslidesoftnessorthoang.html
new file mode 100644
index 0000000..1907905
--- /dev/null
+++ b/doc/doc_files/getslidesoftnessorthoang.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideSoftnessOrthoAng [RCBasic Doc]
+
+
+
+
function getSlideSoftnessOrthoAng( constraint_id)
+
+ Returns the softness parameter for the orthogonal angular limits of the constraint. This parameter controls how "soft" or "rigid" the constraint behaves when angular rotation is limited along directions orthogonal (perpendicular) to the primary axis of motion.
+
+
+ The softness parameter defines how compliant (soft) or stiff (rigid) the constraint behaves when the bodies approach their angular or linear limits. A higher softness value makes the limit more flexible, allowing for gradual motion, while a lower value makes the limit more rigid and restrictive.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidesoftnessortholin.html b/doc/doc_files/getslidesoftnessortholin.html
new file mode 100644
index 0000000..e56808a
--- /dev/null
+++ b/doc/doc_files/getslidesoftnessortholin.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideSoftnessOrthoLin [RCBasic Doc]
+
+
+
+
function getSlideSoftnessOrthoLin( constraint_id)
+
+ Returns the softness parameter for the orthogonal linear limits of the constraint. This parameter affects how "soft" or "rigid" the constraint behaves when the connected actors approach their linear movement limits in directions that are orthogonal (perpendicular) to the primary sliding axis.
+
+
+ The softness parameter determines how rigid or compliant the constraint is when the actors approach their movement limits. A higher softness value allows for smoother, more flexible movement near the limit, while a lower value results in a more rigid, immediate response.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidesolveanglimit.html b/doc/doc_files/getslidesolveanglimit.html
new file mode 100644
index 0000000..9e15f17
--- /dev/null
+++ b/doc/doc_files/getslidesolveanglimit.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getSlideSolveAngLimit [RCBasic Doc]
+
+
+
+
function getSlideSolveAngLimit( constraint_id)
+
+ Checks whether the angular position of the constraint has reached or exceeded its defined angular limits. It returns a value indicating if the constraint is at or beyond its lower or upper angular limit around the slider’s axis of rotation.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslidesolvelinlimit.html b/doc/doc_files/getslidesolvelinlimit.html
new file mode 100644
index 0000000..475fa51
--- /dev/null
+++ b/doc/doc_files/getslidesolvelinlimit.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getSlideSolveLinLimit [RCBasic Doc]
+
+
+
+
function getSlideSolveLinLimit( constraint_id)
+
+ Checks whether the linear position of the constraint has reached or exceeded its defined linear limits. It returns a value indicating if the constraint is at or beyond its lower or upper linear limit along the sliding axis.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslideupperanglimit.html b/doc/doc_files/getslideupperanglimit.html
new file mode 100644
index 0000000..00e8be0
--- /dev/null
+++ b/doc/doc_files/getslideupperanglimit.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideUpperAngLimit [RCBasic Doc]
+
+
+
+
function getSlideUpperAngLimit( constraint_id)
+
+ Returns the upper limit of the angular movement allowed for the constraint. This function is crucial for determining how much rotational freedom is allowed around the axis of rotation defined by the slider constraint.
+
+
+ The upper angular limit specifies the maximum allowed rotation around the rotational axis for the slider constraint. If the relative rotation between the two actors exceeds this angle, corrective forces are applied to maintain the constraint and prevent further rotation.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslideupperlinlimit.html b/doc/doc_files/getslideupperlinlimit.html
new file mode 100644
index 0000000..d818381
--- /dev/null
+++ b/doc/doc_files/getslideupperlinlimit.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ getSlideUpperLinLimit [RCBasic Doc]
+
+
+
+
function getSlideUpperLinLimit( constraint_id)
+
+ Returns the upper limit for linear movement along the constraint's axis. This is a crucial function for controlling how far the connected actors can slide along that axis before the constraint enforces limits.
+
+
+ The upper linear limit specifies the maximum distance that the connected actors can move away from each other along the slider's axis. If the relative movement exceeds this limit, the constraint will apply corrective forces to stop further movement.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getslideuseframeoffset.html b/doc/doc_files/getslideuseframeoffset.html
new file mode 100644
index 0000000..ca7d288
--- /dev/null
+++ b/doc/doc_files/getslideuseframeoffset.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ getSlideUseFrameOffset [RCBasic Doc]
+
+
+
+
function getSlideUseFrameOffset( constraint_id)
+
+ Returns a boolean value indicating whether the constraint is using frame offsets for its linear and angular limits.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getsoundvolume.html b/doc/doc_files/getsoundvolume.html
new file mode 100644
index 0000000..5b57123
--- /dev/null
+++ b/doc/doc_files/getsoundvolume.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetSoundVolume [RCBasic Doc]
+
+
+
+
function GetSoundVolume(slot)
+
+ Returns the given sounds volume.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspriteanimation.html b/doc/doc_files/getspriteanimation.html
new file mode 100644
index 0000000..0c2f637
--- /dev/null
+++ b/doc/doc_files/getspriteanimation.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetSpriteAnimation [RCBasic Doc]
+
+
+
+
Function GetSpriteAnimation(sprite)
+
+ Returns the current animation set on a sprite
+
+ Related:
+ SetSpriteAnimation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspriteanimationframe.html b/doc/doc_files/getspriteanimationframe.html
new file mode 100644
index 0000000..dcdb858
--- /dev/null
+++ b/doc/doc_files/getspriteanimationframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetSpriteAnimationFrame [RCBasic Doc]
+
+
+
+
Function GetSpriteAnimationFrame(sprite, animation, anim_frame)
+
+ Returns the frame index in the image source that is set to anim_frame in a sprite's animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspriteanimationlength.html b/doc/doc_files/getspriteanimationlength.html
new file mode 100644
index 0000000..8e52551
--- /dev/null
+++ b/doc/doc_files/getspriteanimationlength.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetSpriteAnimationLength [RCBasic Doc]
+
+
+
+
Function GetSpriteAnimationLength(sprite, animation)
+
+ Returns the number of frames in a sprite animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspriteanimationspeed.html b/doc/doc_files/getspriteanimationspeed.html
new file mode 100644
index 0000000..6da5421
--- /dev/null
+++ b/doc/doc_files/getspriteanimationspeed.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetSpriteAnimationSpeed [RCBasic Doc]
+
+
+
+
Function GetSpriteAnimationSpeed(sprite, animation)
+
+ Returns the frames per second of a sprite animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspritecurrentanimationframe.html b/doc/doc_files/getspritecurrentanimationframe.html
new file mode 100644
index 0000000..db7b998
--- /dev/null
+++ b/doc/doc_files/getspritecurrentanimationframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetSpriteCurrentAnimationFrame [RCBasic Doc]
+
+
+
+
Function GetSpriteCurrentAnimationFrame(sprite)
+
+ Returns the current frame of a sprite's animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspriteframe.html b/doc/doc_files/getspriteframe.html
new file mode 100644
index 0000000..32d375f
--- /dev/null
+++ b/doc/doc_files/getspriteframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetSpriteFrame [RCBasic Doc]
+
+
+
+
Function GetSpriteFrame(sprite)
+
+ Returns the current frame in a sprite's source that it's on in its animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspriteposition.html b/doc/doc_files/getspriteposition.html
new file mode 100644
index 0000000..b74dfbb
--- /dev/null
+++ b/doc/doc_files/getspriteposition.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetSpritePosition [RCBasic Doc]
+
+
+
+
Sub GetSpritePosition(sprite, ByRef x, ByRef y)
+
+ Gets the position of a sprite on the canvas
+
+ Related:
+ TranslateSprite
+ SetSpritePosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspriterotation.html b/doc/doc_files/getspriterotation.html
new file mode 100644
index 0000000..f1cc8af
--- /dev/null
+++ b/doc/doc_files/getspriterotation.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetSpriteRotation [RCBasic Doc]
+
+
+
+
Function GetSpriteRotation(sprite)
+
+ Returns the angle the sprite is rotated by
+
+ Related:
+ SetSpriteRotation
+ RotateSprite
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspritescale.html b/doc/doc_files/getspritescale.html
new file mode 100644
index 0000000..95b8e4f
--- /dev/null
+++ b/doc/doc_files/getspritescale.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetSpriteScale [RCBasic Doc]
+
+
+
+
Sub GetSpriteScale(sprite, ByRef x, ByRef y)
+
+ Gets the scale of a sprite
+
+ Related:
+ ScaleSprite
+ SetSpriteScale
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspritesize.html b/doc/doc_files/getspritesize.html
new file mode 100644
index 0000000..197ebb1
--- /dev/null
+++ b/doc/doc_files/getspritesize.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetSpriteSize [RCBasic Doc]
+
+
+
+
Sub GetSpriteSize(sprite, ByRef w, ByRef h)
+
+ Gets the size of a sprite's frames
+
+ Related:
+ CreateSprite
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspritesource.html b/doc/doc_files/getspritesource.html
new file mode 100644
index 0000000..4134ba3
--- /dev/null
+++ b/doc/doc_files/getspritesource.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetSpriteSource [RCBasic Doc]
+
+
+
+
Function GetSpriteSource(sprite)
+
+ Returns the source image the sprite renders its frames from
+
+ Related:
+ SetSpriteSource
+ CreateSprite
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getspritetype.html b/doc/doc_files/getspritetype.html
new file mode 100644
index 0000000..e64cb7c
--- /dev/null
+++ b/doc/doc_files/getspritetype.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+ GetSpriteType [RCBasic Doc]
+
+
+
+
Function GetSpriteType(sprite)
+
+ Returns the collison body type of a sprite.
+
+
+ By default, sprites are dynamic when they are created.
+
+
+ Possible types returned
+
+
+
+ SPRITE_TYPE_STATIC
+
+
+ SPRITE_TYPE_KINEMATIC
+
+
+ SPRITE_TYPE_DYNAMIC
+
+
+ Related:
+ SetSpriteType
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getterraincenter.html b/doc/doc_files/getterraincenter.html
new file mode 100644
index 0000000..0e86ec9
--- /dev/null
+++ b/doc/doc_files/getterraincenter.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTerrainCenter [RCBasic Doc]
+
+
+
+
sub GetTerrainCenter( actor, ByRef x, ByRef y, ByRef z )
+
+ Gets the center point of a terrain actor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getterrainheight.html b/doc/doc_files/getterrainheight.html
new file mode 100644
index 0000000..8f84b14
--- /dev/null
+++ b/doc/doc_files/getterrainheight.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTerrainHeight [RCBasic Doc]
+
+
+
+
function GetTerrainHeight( actor, patchX, patchZ )
+
+ Returns the height of a terrain patch
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getterrainpatchaabb.html b/doc/doc_files/getterrainpatchaabb.html
new file mode 100644
index 0000000..a548878
--- /dev/null
+++ b/doc/doc_files/getterrainpatchaabb.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTerrainPatchAABB [RCBasic Doc]
+
+
+
+
sub GetTerrainPatchAABB( actor, patchX, patchZ, ByRef minX, ByRef minY, ByRef minZ, ByRef maxX, ByRef maxY, ByRef maxZ )
+
+ Returns the bounding box of a terrain patch
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getterrainpatchlod.html b/doc/doc_files/getterrainpatchlod.html
new file mode 100644
index 0000000..2a6a2f5
--- /dev/null
+++ b/doc/doc_files/getterrainpatchlod.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTerrainPatchLOD [RCBasic Doc]
+
+
+
+
function GetTerrainPatchLOD( actor, patchX, patchZ )
+
+ Returns the current level of detail for a terrain patch
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettextheight.html b/doc/doc_files/gettextheight.html
new file mode 100644
index 0000000..a13f22e
--- /dev/null
+++ b/doc/doc_files/gettextheight.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTextHeight [RCBasic Doc]
+
+
+
+
function GetTextHeight(txt$)
+
+ Returns the height of the text if rendered with the current font
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettextsize.html b/doc/doc_files/gettextsize.html
new file mode 100644
index 0000000..33e8e88
--- /dev/null
+++ b/doc/doc_files/gettextsize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTextSize [RCBasic Doc]
+
+
+
+
sub GetTextSize(txt$, byref w, byref h)
+
+ Gets the size of the text if rendered with the current font
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettextwidth.html b/doc/doc_files/gettextwidth.html
new file mode 100644
index 0000000..ffa9ecb
--- /dev/null
+++ b/doc/doc_files/gettextwidth.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTextWidth [RCBasic Doc]
+
+
+
+
function GetTextWidth(txt$)
+
+ Returns the width of the text if rendered with the current font
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettile.html b/doc/doc_files/gettile.html
new file mode 100644
index 0000000..6051bae
--- /dev/null
+++ b/doc/doc_files/gettile.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetTile [RCBasic Doc]
+
+
+
+
Function GetTile(tilemap, x, y)
+
+ Returns the tile at a specified location on a tilemap
+
+
+ Note: (x, y) is a tile position, not an actual coordinate on the map
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettileanimationframe.html b/doc/doc_files/gettileanimationframe.html
new file mode 100644
index 0000000..07b94dd
--- /dev/null
+++ b/doc/doc_files/gettileanimationframe.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetTileAnimationFrame [RCBasic Doc]
+
+
+
+
Function GetTileAnimationFrame(tileset, base_tile, anim_frame)
+
+ Returns the tile set at a specified frame in a tiles animation
+
+ Related:
+ SetTileAnimationFrame
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettileanimationlength.html b/doc/doc_files/gettileanimationlength.html
new file mode 100644
index 0000000..5f10409
--- /dev/null
+++ b/doc/doc_files/gettileanimationlength.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetTileAnimationLength [RCBasic Doc]
+
+
+
+
Function GetTileAnimationLength(tileset, base_tile)
+
+ Return the number of frames in a tile's animation
+
+ Related:
+ SetTileAnimationLength
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettileanimationspeed.html b/doc/doc_files/gettileanimationspeed.html
new file mode 100644
index 0000000..db21a4a
--- /dev/null
+++ b/doc/doc_files/gettileanimationspeed.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetTileAnimationSpeed [RCBasic Doc]
+
+
+
+
Function GetTileAnimationSpeed(tileset, base_tile)
+
+ Returns the fps of a tile's animation
+
+ Related:
+ SetTileAnimationSpeed
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettilemapsize.html b/doc/doc_files/gettilemapsize.html
new file mode 100644
index 0000000..d2246dd
--- /dev/null
+++ b/doc/doc_files/gettilemapsize.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GetTileMapSize [RCBasic Doc]
+
+
+
+
Sub GetTileMapSize(tilemap, ByRef widthInTiles, ByRef heightInTiles)
+
+ Gets the size of a tile map
+
+ Related:
+ CreateTileMap
+ SetTileMapSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettouch.html b/doc/doc_files/gettouch.html
new file mode 100644
index 0000000..59261e5
--- /dev/null
+++ b/doc/doc_files/gettouch.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTouch [RCBasic Doc]
+
+
+
+
sub GetTouch(byref status, byref x, byref y, byref dx, byref dy)
+
+ Gets the position and distance of motion of a touch event
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gettouchfinger.html b/doc/doc_files/gettouchfinger.html
new file mode 100644
index 0000000..fdfd6d0
--- /dev/null
+++ b/doc/doc_files/gettouchfinger.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetTouchFinger [RCBasic Doc]
+
+
+
+
sub GetTouchFinger(finger, byref x, byref y, byref pressure)
+
+ Gets the position and pressure of a finger on a touch event
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getvideodrawrect.html b/doc/doc_files/getvideodrawrect.html
new file mode 100644
index 0000000..7663421
--- /dev/null
+++ b/doc/doc_files/getvideodrawrect.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetVideoDrawRect [RCBasic Doc]
+
+
+
+
sub GetVideoDrawRect(byref x, byref y, byref w, byref h)
+
+ Gets the position and dimensions of the area video playback is shown at.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getvideoposition.html b/doc/doc_files/getvideoposition.html
new file mode 100644
index 0000000..59e3f0c
--- /dev/null
+++ b/doc/doc_files/getvideoposition.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetVideoPosition [RCBasic Doc]
+
+
+
+
function GetVideoPosition()
+
+ Returns the current position in the video playback.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getvideosize.html b/doc/doc_files/getvideosize.html
new file mode 100644
index 0000000..fbbf168
--- /dev/null
+++ b/doc/doc_files/getvideosize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetVideoSize [RCBasic Doc]
+
+
+
+
sub GetVideoSize(byref w, byref h)
+
+ Gets the size of video's frames
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getvideostats.html b/doc/doc_files/getvideostats.html
new file mode 100644
index 0000000..8665598
--- /dev/null
+++ b/doc/doc_files/getvideostats.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ GetVideoStats [RCBasic Doc]
+
+
+
+
sub GetVideoStats(vFile$, byref vLen, byref vfps, byref frame_w, byref frame_h)
+
+ Gets video data from a video file.
+
+
+ Note: This function is slow and should not be used during time critical sections in your code.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getvideovolume.html b/doc/doc_files/getvideovolume.html
new file mode 100644
index 0000000..93bd505
--- /dev/null
+++ b/doc/doc_files/getvideovolume.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ GetVideoVolume [RCBasic Doc]
+
+
+
+
function GetVideoVolume( )
+
+ Returns the volume of a video
+
+
+ Volume can be in a range of 0 to 128
+
+ Related:
+ SetVideoVolume
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwatercolor.html b/doc/doc_files/getwatercolor.html
new file mode 100644
index 0000000..eb7d869
--- /dev/null
+++ b/doc/doc_files/getwatercolor.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ getWaterColor [RCBasic Doc]
+
+
+
+
function getWaterColor( actor)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwatercolorblendfactor.html b/doc/doc_files/getwatercolorblendfactor.html
new file mode 100644
index 0000000..5c09ccc
--- /dev/null
+++ b/doc/doc_files/getwatercolorblendfactor.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ getWaterColorBlendFactor [RCBasic Doc]
+
+
+
+
function getWaterColorBlendFactor( actor)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwaterwaveheight.html b/doc/doc_files/getwaterwaveheight.html
new file mode 100644
index 0000000..b5b07f3
--- /dev/null
+++ b/doc/doc_files/getwaterwaveheight.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ getWaterWaveHeight [RCBasic Doc]
+
+
+
+
function getWaterWaveHeight( actor)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwaterwinddirection.html b/doc/doc_files/getwaterwinddirection.html
new file mode 100644
index 0000000..5713f7c
--- /dev/null
+++ b/doc/doc_files/getwaterwinddirection.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ getWaterWindDirection [RCBasic Doc]
+
+
+
+
sub getWaterWindDirection( actor, ByRef x, ByRef z)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwaterwindforce.html b/doc/doc_files/getwaterwindforce.html
new file mode 100644
index 0000000..0a047b9
--- /dev/null
+++ b/doc/doc_files/getwaterwindforce.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ getWaterWindForce [RCBasic Doc]
+
+
+
+
function getWaterWindForce( actor)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwindowmaxsize.html b/doc/doc_files/getwindowmaxsize.html
new file mode 100644
index 0000000..f7e7ea9
--- /dev/null
+++ b/doc/doc_files/getwindowmaxsize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetWindowMaxSize [RCBasic Doc]
+
+
+
+
sub GetWindowMaxSize( byref w, byref h)
+
+ Gets the maximum size of a window.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwindowminsize.html b/doc/doc_files/getwindowminsize.html
new file mode 100644
index 0000000..8c4206e
--- /dev/null
+++ b/doc/doc_files/getwindowminsize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetWindowMinSize [RCBasic Doc]
+
+
+
+
sub GetWindowMinSize( byref w, byref h)
+
+ Gets the minimum size of the window.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwindowmode.html b/doc/doc_files/getwindowmode.html
new file mode 100644
index 0000000..6017212
--- /dev/null
+++ b/doc/doc_files/getwindowmode.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetWindowMode [RCBasic Doc]
+
+
+
+
function GetWindowMode( )
+
+ Returns the flags set on the given window as a bitmask. The mode set with OpenWindow() is part of this mask.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwindowposition.html b/doc/doc_files/getwindowposition.html
new file mode 100644
index 0000000..485151d
--- /dev/null
+++ b/doc/doc_files/getwindowposition.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetWindowPosition [RCBasic Doc]
+
+
+
+
sub GetWindowPosition( byref x, byref y )
+
+ Gets the window position.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getwindowsize.html b/doc/doc_files/getwindowsize.html
new file mode 100644
index 0000000..3857c28
--- /dev/null
+++ b/doc/doc_files/getwindowsize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetWindowSize [RCBasic Doc]
+
+
+
+
sub GetWindowSize( byref w, byref h )
+
+ Gets the size of the window.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/getworldtoviewportposition.html b/doc/doc_files/getworldtoviewportposition.html
new file mode 100644
index 0000000..30c6a53
--- /dev/null
+++ b/doc/doc_files/getworldtoviewportposition.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GetWorldToViewportPosition [RCBasic Doc]
+
+
+
+
Sub GetWorldToViewportPosition(x, y, z, ByRef x, ByRef y)
+
+ Get the 2D coordinates for the given 3D position on the active canvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/globalmousex.html b/doc/doc_files/globalmousex.html
new file mode 100644
index 0000000..184093c
--- /dev/null
+++ b/doc/doc_files/globalmousex.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GlobalMouseX [RCBasic Doc]
+
+
+
+
function GlobalMouseX()
+
+ Returns the absolute X position of the mouse on the display
+
+ Related:
+ GlobalMouseY
+ GetGlobalMouse
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/globalmousey.html b/doc/doc_files/globalmousey.html
new file mode 100644
index 0000000..c0e507d
--- /dev/null
+++ b/doc/doc_files/globalmousey.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ GlobalMouseY [RCBasic Doc]
+
+
+
+
function GlobalMouseY()
+
+ Returns the absolute Y position of the mouse on the display
+
+ Related:
+ GlobalMouseX
+ GetGlobalMouse
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/grabinput.html b/doc/doc_files/grabinput.html
new file mode 100644
index 0000000..bdb1337
--- /dev/null
+++ b/doc/doc_files/grabinput.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GrabInput [RCBasic Doc]
+
+
+
+
sub GrabInput(flag)
+
+ Sets whether the currently active window will grab user input
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/graphics.html b/doc/doc_files/graphics.html
new file mode 100644
index 0000000..4e05290
--- /dev/null
+++ b/doc/doc_files/graphics.html
@@ -0,0 +1,103 @@
+
+
+
+
+
+ RCBasic Graphics [RCBasic Doc]
+
+
+
+
GRAPHICS
+
+ Finally, the reason we are all here. Lets draw pretty pictures on the screen. The first thing we need is a window. To open the graphics window, we need to use OpenWindow().
+
+
+ fullscreen = false
+ vsync = true
+
+ OpenWindow( "My Graphics Window" , 640 , 480 , fullscreen, vsync)
+
+
+ The above code will open a 640 x 480 window with vsync enabled. You can reference OpenWindow() for a little more detail.
+
+
+ If we tried to run the code we have so far, the window would open and immediately close. So next to keep our window open and ensure its getting updated we need to make our render loop.
+
+
+ While Not Key( K_ESCAPE)
+ Update( )
+ Wend
+
+
+ So now we have our basic render loop but nothing is being drawn. Now is a good time to explain how RCBasic's graphics system works. RCBasic uses virtual render targets called canvases. There are 3 different types of canvases that are used for rendering depending on what you are trying to do. Here is an overview of the different types of canvases:
+
+
+
+ 2D Paint Canvas - This is a canvas for rendering drawing commands (ie. DrawImage, Rect, FloodFill, etc.)
+
+
+ Sprite Layer - A canvas for rendering sprites. Sprite canvases will only render sprites but they have infinite 2D space to place sprites in.
+
+
+ 3D Canvas - This canvas is a 3D viewport. Each 3D canvas has its own camera so having multiple can impact performance since it re-renders the scene for each 3D canvas.
+
+
+
+ For now, lets just use a paint canvas. We use OpenCanvas() to open a paint canvas. Before our render loop, we will open our canvas.
+
+
+
+ paint_canvas = OpenCanvas( 640 , 480 , 0 , 0 , 640 , 480 , 1 )
+
+ Canvas( paint_canvas)
+
+ While Not Key( K_ESCAPE)
+ ClearCanvas( )
+ Update( )
+ Wend
+
+
+ Here we are opening a canvas for drawing and storing the handle for that canvas in a variable called paint_canvas. Anytime we want to reference that canvas we will use the paint_canvas variable. You can reference OpenCanvas() for more details on how it works. After we opened our canvas, we set it as the active canvas using Canvas() . This was not necessary right now since RCBasic sets the first canvas created as the default canvas but its still a good habit to set a canvas active before doing anything with it to ensure you are targeting the right canvas.
+
+
+ Ok, we have a window and a canvas but we still haven't drawn anything. So lets do that. Inside our render loop, we are going to set our draw color to red and draw a box.
+
+
+ While Not Key( K_ESCAPE)
+ ClearCanvas( )
+
+ SetColor( RGB( 200 , 0 , 0 ) )
+ RectFill( 20 , 20 , 50 , 50 )
+
+ Update( )
+ Wend
+
+
+ So now our finished program looks like this:
+
+
+ fullscreen = false
+ vsync = true
+
+ OpenWindow( "My Graphics Window" , 640 , 480 , fullscreen, vsync)
+
+ paint_canvas = OpenCanvas( 640 , 480 , 0 , 0 , 640 , 480 , 1 )
+
+ Canvas( paint_canvas)
+
+ While Not Key( K_ESCAPE)
+ ClearCanvas( )
+
+ SetColor( RGB( 200 , 0 , 0 ) )
+ RectFill( 20 , 20 , 50 , 50 )
+
+ Update( )
+ Wend
+
+
+ RCBasic allows you to create as many canvases as you want and you can have multiple different types of canvases at once. This is just a brief overview of how graphics work but I highly encourage you to check out all the included examples to see more of what is possible.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/gyroname.html b/doc/doc_files/gyroname.html
new file mode 100644
index 0000000..c9019d5
--- /dev/null
+++ b/doc/doc_files/gyroname.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ GyroName$ [RCBasic Doc]
+
+
+
+
function GyroName$(gyro_num)
+
+ Returns the name of the gyroscope.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/hasclipboardtext.html b/doc/doc_files/hasclipboardtext.html
new file mode 100644
index 0000000..ae63ddc
--- /dev/null
+++ b/doc/doc_files/hasclipboardtext.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ HasClipboardText [RCBasic Doc]
+
+
+
+
function HasClipboardText()
+
+ Returns whether or not there is text in the clipboard.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/hello_world.html b/doc/doc_files/hello_world.html
new file mode 100644
index 0000000..b8ca1a0
--- /dev/null
+++ b/doc/doc_files/hello_world.html
@@ -0,0 +1,576 @@
+
+
+
+
+
+ RCBasic First Program [RCBasic Doc]
+
+
+
+
YOUR FIRST PROGRAM
+
+ This tutorial is designed to introduce complete newbies to the world of computer programming and specifically programming using RC Basic. This tutorial will not assume any previous programming knowledge and really won't even assume you know much about how a computer works. A basic understanding of 6th Grade Algebra will come in handy but is not necessary. Now that I got that out of the way, lets take our first steps in our journey to becoming computer programmers.
+
+
+ First lets go over the requirements you will need to follow this tutorial. You will need a computer (obviously), RC Basic (yet again obvious, but I had to say it), and the will to learn (not essential but it will definitely help). Ok lets begin.
+
+
+
What Is A Computer Program? It seems like a stupid question but it is important to understand what a program is before we go any further. A computer program is simply a list of detailed instructions telling a computer how to perform a task. And when I say detailed I mean DETAILED. A computer can perform several complex equations a second but still does not know more than you do. If you don't know any complex equations neither does the computer. To give the computer our list of instructions on what we want it to do we use a computer language. There are probably as many computer languages as there are spoken languages and maybe even more. A computer programmer chooses a language based on the task they need to perform, how complex the task is, the time it takes to write the program, and personal choice. For this tutorial we will be using RC Basic. RC Basic is based on the BASIC programming language, which was designed to be easy to learn and use. RC Basic adds the advantage of modern multimedia features and the ability to write our program once and run it on multiple operating systems.
+
+
+
Our First Program Lets start off with a simple computer program. We are going to make a program that writes the words "Hello World" to the screen. To tell the computer to write some text to the screen we will use the Print command. Type the following into the RC Basic Editor and click the Run button (the triangle button or you could go into the build menu and click Run).
+
+
+ Print "Hello World"
+
+
+ You should see "Hello World" in your console window. Congratulations, you just wrote your first computer program. So lets break this program down into its individual parts. First is the Print command. This is telling the computer to write something to the console (I will be referring to the DOS screen as the console for the rest of this tutorial). And then we have "Hello World". First of all, why is it in quotation marks? The short answer is because it is not a number. We will go over this more in depth later but for now that is all we need to know for right now? Before we move on, use the Print command to write some other stuff to the screen.
+
+
+
Data Types We are finally going to learn why "Hello World" has quotations around it. So lets talk about data types. A data type is simply the type of data you are working with. RC Basic has 2 data types: Numbers and Strings. Numbers are exactly what you think they are. So what are strings? Well to answer this we have to understand what a character is. A character is a number which is generally represented by some kind of symbol. I know that doesn't make since right now so just think of a character as any key on your keyboard. The A Key, B Key, and even the SPACE Key are only numbers to the computer. When the computer reads a character it is actually reading a number and then it outputs a symbol (like letters, digits, parenthesis, space, etc.). So what then is a string? Well a string is a group of characters strung together (which is why it is called a string). RC Basic uses quotation marks to group characters together into a string. So in the string "Hello World", H is a character, e is a character, and so on. If you want to use a single character you would still use quotation marks but you would only have one character between the quotation marks.
+
+
+ Look at the following examples.
+
+
+ "42"
+ 42
+
+
+ The first line is a string and the second line is a number. Are you confused yet? The first line has the character "4" and the character "2" in a string and the second line is the number 42. Yes they look the same but the way you perform operations on a string is different than the way you perform operations on numbers. It will make more since with the examples below.
+
+
+ This will add the string "53" to the end of the string "42" and output 4253 to the console. Try it.
+
+
+ Print "42" + "53"
+
+
+ This will will add the number 42 to the number 53 and output 95 to the console. Try it.
+
+
+ Print 42 + 53
+
+
+ The differences between numbers and strings should be starting to clear up a little by now. If you are still a little confused at this point don't worry. This is only an Introduction to programming. If you are able to write some text on the screen and do some simple math by the end of this tutorial you will be ready to continue into the next lesson.
+
+
+ Now we are going to get into operators. I know I said at the beginning of the tutorial I did not expect you to know much but I am assuming you know how to add, subtract, multiply, and divide. We got a brief introduction to the "+" operator in the last example. It is important to note that the "+" operator is the only operator that works on both numbers and strings.
+
+
+ Here is a list of the main string operators. "+": Adds one string to the end of another. This example will output "batman" to the console.
+
+
+ Print "bat" + "man"
+
+
+ Before we continue, lets break down the PRINT statement. It is the simplest way to get text on the screen. PRINT also allows us to output multiple items of different types by separating them with a “;”.
+
+
+ Print “Text”; 5 +4 ; “ More Text”;
+
+ ‘Ending Print with a “;” keeps the cursor on the same line in the console.
+
+
+ Here is a list of the main number operators. "+": Adds two numbers together. This example will output 8 to the console.
+
+
+ Print 6 + 2
+
+
+ "-": Subtracts one number from another. This example will output 4 to the console.
+
+
+ Print 6 - 2
+
+
+ "*": Multiplies two numbers (Note: Multiplication uses an * instead of an x). This example will output 12 to the console.
+
+
+ Print 6 * 2
+
+
+ "/": Divides one number by another. This example will output 3 to the console.
+
+
+ Print 6 / 2
+
+
+ "^": Raises a number to a power. This example will output 36 (6 to the second power) to the console.
+
+
+ Print 6 ^ 2
+
+
+ Both string operators perform the same operation. They will place the characters in the second string at the end of the first string. The number operators perform the same operations they do on a calculator. One more important thing to mention is that the number operators follow the Order of Operations. Take a look at the example below.
+
+
+ Print 4 +3 *2
+
+
+ In the example above the, following the order of operations PEMDAS (Parenthesis, Exponents, Multiplication, Division, Addition, and Subtraction); 3 is multiplied by 2 which is 6, and then 4 is added to it which is 10. So math is not necessarily done from left to right but it is determined by the order of operations. There is more to the order of operations but we are not going to cover that right now. We covered all of the main operators so before we move on lets look at one more example that uses parenthesis.
+
+
+ Print ( 4 +3 ) *2
+
+
+ This is almost the same problem as the example before it, but now it groups 4 plus 3 together using parenthesis which means 4 and 3 are added first which will be 7. Then that 7 is multiplied by 2 which is 14. If you do the same problems on a calculator you will get the same answers. Try out a few math problems on your own.
+
+
+ Interacting With The User Up to this point, we have been writing output to the screen. We have been the user as well as the programmer so there was no reason to need to accept input from the screen. But when you write programs that are meant to be used by people other than yourself you will want to get input from the user and process that input to perform some task. So lets dive into some code. For this example we are using the function Input to ask the user "What is your name? " and read what the user types into the console (which should be there name but they can type whatever they want).
+
+
+ Input$( "What is your name? " )
+
+
+ You should have seen "What is your name?" and then been able to type something in. You have just received input from the user for the first time. So lets break this line down. First we have the function name Input$. Input$ is a built-in function that prompts the user with something and it returns what the user typed. This is the first time I used the word returns so let me clarify. In the example above lets say you type in Bob for your name. The whole Input$() function call is replaced with "Bob". Take a look at this example.
+
+
+ This line does not prompt anything and just waits for you to type something. We are going to type Bob.
+
+
+ Input$( "" )
+
+
+ After you enter "Bob" the line above will be replaced with "Bob" and the line will finish processing your commands.
+
+
+ "Bob"
+
+
+ You are probably thinking that is useless. What can we do with a line that just has a string on it. And the answer is you really can't do anything with a line that just has Bob on it. But if we store the string "Bob" we can use it to do other stuff with.
+
+
+ To store "Bob" (or whatever you call yourself) we use something called a variable. You might have seen variables used in math class in school. A variable is just a symbol that holds data. By symbol I don't mean a logo or anything. Just take a look at this example.
+
+
+ a = 2
+ b$ = "Bob"
+ batman = 4.5
+ superman$ = "this is just random text"
+
+
+ This example makes four variables: a, b$, batman, superman$ and stores some data in them. Lets do a break down.
+
+
+ We will start with the variables a and batman. The variables are just storing numbers. We can use variables that store numbers when we have programs that are going to be handling values that change over time. For now lets just do some simple math. Type the variables from the previous example and add the following code and run it.
+
+
+ Print a + batman
+
+
+ This example just adds the values in the variables together and outputs the values to the screen. You can change the value of a variable at any time. This is better explained with another example.
+
+
+ a = 5
+ Print a
+ a = 6
+ Print a
+ a = 5 + 6
+ Print a
+
+
+ What we are doing in the example above is changing the value of a and doing math and storing the value in a. We can also store the value of one variable inside another. Lets Look at another example.
+
+
+ a = batman
+ Print a
+ a = a + batman
+ Print a
+
+
+ The example above will first store the value of batman in the variable a. It will write a to the screen. Then it will add a and batman and store the result in a and write that value to the screen.
+
+
+ Now we are going to take a look at the other two variables we created: the variable b$ and the variable superman$. Did you notice that both of the variables end in a $. There is a reason for that. The $ at the end of the variable name lets the compiler know that these variables are strings. Since these two variables are strings the rules about strings apply to these variables. Look at the following examples.
+
+
+ Print b$
+ Print superman$
+ Print b$ + superman$
+
+
+ The above example writes the value stored in b$ to the screen. Then it writes the value stored in superman$ to the screen. Finally it adds the contents of the superman$ variable to the end of the contents for the b$ variable and writes that to the screen.
+
+
+ Now that we have covered variables, how do we use them with the users input. Well lets look at the Input$() function again. Notice that the function ends in a $. input$() returns a string so it can be used anywhere a string can. Look at this example.
+
+
+ This line does the same thing as the last time we used the Input$() function. The main Difference is now we are storing the value the user enters into the variable name.
+
+
+ name$ = Input$( "What is your name?" )
+
+
+ This code will store "Bob" or what ever you typed in into the variable name$. Now we can use the name$ as many times as we want anywhere in our program. So now lets make a program that Uses Input$() along with Print. We are going to ask the User for there name and then welcome the User to RC Basic.
+
+
+ name$ = Input$( "What is your name? " )
+ Print "Hello " + name$ + ". Welcome to RC Basic."
+
+
+ Lets do our break down again. In the first$ line we create a variable called name$ and call Input$() in it. This will write "What is your name? " to the screen. When the User Enters something, whatever the User types in will replace Input$(). So name$ will be whatever the User types in. On the next line we use Print to write a message to the screen. The only thing different this time is we are adding a variable to our string in Input$(). But remember that our variable is a string and can do anything a string can, so all you are doing is saying "Hello " + the User's name + ". Welcome to RC Basic.".
+
+
+ We have covered a lot in these first few sections so I am going to take this time to challenge you. Write a program that ask the User to type there favorite color in and then tell them what there favorite color is on the next line.
+
+
+ Flow Control Flow control sounds like some really complicated topic. But it will probably make sense almost immediately. So what is flow control? Simply put, flow control is controlling what your program does based on what conditions are met. To control the flow in our programs we will use the If statement. The If statement will allow us to execute a block of code depending on what conditions are met. Let look at the last example from the last segment.
+
+
+ name$ = Input$( "What is your name? " )
+ Print "Hello " + name$ + ". Welcome to RC Basic."
+
+
+ To give an idea of how to use the IF statement we are going to extend this program. So lets make the program give a special greeting if Bob is typed in for the name. Look at the following example.
+
+
+ name$ = Input$( "What is your name? " )
+ Print "Hello " + name$ + ". Welcome to RC Basic."
+
+ If name$ = "Bob" Then
+ Print "We have been expecting you"
+ End If
+
+
+ This program will do the same thing it did in the last segment but it adds the use of the IF statement. So lets do a quick break down.
+
+
+ This line is saying if name$ has "Bob" stored in it, then run the following code. Each IF statement must end with the THEN statement.
+
+
+ If name$ = "Bob" Then
+
+
+ This line is writing "We have been expecting you" to the screen.
+
+
+ Print "We have been expecting you"
+
+
+ This line is ending the block of code that the IF statement wanted the program to execute and continues the rest of your program.
+
+
+ The block of code started by the IF statement can also be given different conditions to check for and execute a different block of code for each different condition. We are going to take a break from strings and use numbers for our next few examples. We are also going to introduce a few new operators. So lets start by making some number variables.
+
+
+ a = 1
+ b = 3
+ c = 5
+
+
+ Now that we have some variables we are going to make a program that ask the User to enter a number and check if the number is equal to each variable and outputs something different for each one. First I need to cover one very important topic. The Input$() function only takes in a string. So even number that are typed in by the User are treated as strings. So we need to convert the Users input to a number to be able to compare it to another number or do any kind of math with it. To do this we will use the Val() function. The Val() function converts a string to a number. Look at the following example real quick.
+
+
+ This example will convert the string "12" to the number 12.
+
+
+ x = Val( "12" )
+
+
+ The more programs you write, the more you will get use to converting numbers to strings and strings to numbers. So how do we use Val() with Input$() . Well remember that Input$() can be used anywhere a string can. So instead of putting "12" in Val() like we did in the last example we will simply put Input$() inside Val(). Make sure your program has the variables a, b, and c we created earlier and add this.
+
+
+ d = Val( Input$( "Enter a number: " ) )
+
+
+ The code above is creating a variable called d. Then it uses the Val() function to convert the string returned by Input$() into a number. The string returned by Input$() is what ever the User types in. Now that we have gotten a number from the User lets compare that number to the variables we made earlier.
+
+
+ If d = a Then
+ Print "You typed the A value"
+
+ ElseIf d = b Then
+ Print "That is B"
+
+ ElseIf d = c Then
+ Print "That would be C"
+
+ Else
+ Print "You did not type any of the numbers"
+
+ End If
+
+
+ Lets do a break down. This is starting a multi-layered If statement block. It should be fairly simple to understand. We are going to go through each line and examine what is happening step by step.
+
+
+ This line is starting your If block by comparing d(which is what the User typed in) to the variable a. If the two variables are equal then it will output "You typed the A value" to the console.
+
+
+ If d = a Then
+ Print "You typed the A value"
+
+
+ This line will compare d and b if d wasn't equal to a. If the value stored in d is equal to the value stored in b then it will output "That is B" to the console.
+
+
+ ElseIf d = b Then
+ Print "That is B"
+
+
+ This line will compare d and c if d wasn't equal to a or b. If d is equal to c then "That would be C" is output to the console.
+
+
+ ElseIf d = c Then
+ Print "That would be C"
+
+
+ This line will output "You did not type any of the numbers" if none of the previous conditions were met.
+
+
+ Else
+ Print "You did not type any of the numbers"
+
+
+ And finally this line will end the If block and finish running the rest of the program.
+
+
+ End If
+
+
+ Now we are going to play with a few other operators for numbers only. In addition to being able to compare if two numbers are equal we can also compare if one number is greater than another, less than another, not equal to another, greater than or equal to another, etc. Here is a list of comparisons we can do with numbers.
+
+
+ Given we have two number stored in variables a and b.
+
+
+ •.a = b : Test if a is equal to b
+
+
+ •.a < b : Test if a is less than b
+
+
+ •.a > b : Test if a is greater than b
+
+
+ •.a <= b : Test if a is less than or equal to b
+
+
+ •.a >= b : Test if a is greater than or equal to b
+
+
+ •.a <> b : Test if a is not equal to b
+
+
+ Here is a few examples of doing some of these comparisons with a IF statement.
+
+
+ If a = b Then
+
+ End If
+
+ If a < b Then
+
+ End If
+
+ If a <> b Then
+
+ End If
+
+
+ These other comparisons are pretty straight forward. To try these out we are going to make a program that ask the User to enter a number. If the number is less than or equal to 10 then "Low" will be output to the console. If the number is greater than 10 then we will check if the number is greater than 20. If it is then then "High" will be output to the console. If neither of these conditions are true then "Mid" will be output to the console. First we need to get a number from the User. Remember we need to use the Val() function to convert the User's input from a string to a number.
+
+
+ Here is where we take the User's input and convert it to a number. The Input$() function will get replaced with what the User types in so we simply use the Val() function to convert Input$() to a number.
+
+
+ user_num = Val( Input$( "Enter a number: " ) )
+
+
+ We start our If block by comparing user_num (Our input from the User in the previous line) to the number 10. If the user_num variable is less than or equal to 10 then we use the Print statement to write "Low" to the console.
+
+
+ If user_num <= 10 Then
+ Print "Low"
+
+
+ If the previous comparison is false then we compare the user_num variable to 20. If user_num is greater than 20 then we will write "High" to the console.
+
+
+ ElseIf user_num > 20 Then
+ Print "High"
+
+
+ Finally, if none of the previous conditions are true we will write "Mid" to the console.
+
+
+ Else
+ Print "Mid"
+
+ End If
+
+
+ Our complete program looks like this.
+
+
+ user_num = Val( Input$( "Enter a number: " ) )
+
+ If user_num <= 10 Then
+ Print "Low"
+
+ ElseIf user_num > 20 Then
+ Print "High"
+
+ Else
+ Print "Mid"
+
+ End If
+
+
+ The last thing we will cover on flow control is the keywords AND , OR , XOR , and NOT . These 4 keywords are actually operators that can be used for more specific comparisons. We will start with the AND operator. The AND operator will compare the conditions to its left and its right. If both conditions are true the AND operator sets the whole expression as true. I already know you didn't understand that explanation so it will probably be easier to show you. Just look at this example.
+
+
+ This code will write "This is true" to the console because 1 is equal to 1 and 4 is greater than 2. Yes it is that simple.
+
+
+ If 1 1 AND 4 >2 Then
+ Print "This is true"
+ End If
+
+
+ The OR statement will set the whole expression it is being used in if at least one of the conditions is true. Here is an example of OR .
+
+
+ This code will write "This is true" to the console because although 1 is not equal to 2, 5 is less than or equal to 6.
+
+
+ If 1 2 AND 5 <6 Then
+ Print "This is true"
+ End If
+
+
+ The XOR statement is like the OR statement with one major difference. With XOR , one of the conditions in the expression has to be true and the other has to be false. Here is an example of XOR .
+
+
+ This code will write "This is true" to the console because 1 is equal to 1 and 2 is equal to 2 ( 2 <> 2 is false because 2=2. Remember <> is the NOT EQUAL operator). Basically one condition in the XOR expression has to be true and the other has to be false otherwise the whole expression is false. If this is slightly confusing don't worry. In my 15+ years of programming experience I have never once used this operator.
+
+
+ If 1 1 XOR 2 <> 2 Then
+ Print "This is true"
+ End If
+
+
+ The last of these special operators we will cover is NOT . This one will be extremely simple to understand. Basically if an expression is true it becomes false and if an expression is false it becomes true.
+
+
+ This code will write "This is true" to the screen because the expression 1=3 is false. The NOT statement reverses the false and makes it true.
+
+
+ If NOT ( 1 3 ) Then
+ Print "This is true"
+ End If
+
+
+ Lets go over one more program before we move on to the next segment. We will ask the User for a number from 1 to 10. If the User enters 3 or 4 then we will write "Good Answer" to the console. If the User enters a number greater than 5 and less than 9 (Basically 6, 7, or 8) then we will write "Choice numbers" to the console. If the User types in any other number then we will write "Maybe next time" to the console.
+
+
+ Here we are asking the User to enter a number from 1 to 10 using the Input$() function. Input$() returns a string so we have to store it in a string variable.
+
+
+ user_in$ = Input$( "Enter a number from 1 to 10: " )
+
+
+ Then we convert the string the User entered into a string using the Val() function. Note: We are using a string variable inside the Val() function instead of using Input$() inside it this time. I am showing it this way to get you used to the idea that Val() takes a string. It can be a string variable, string function, or just a regular string between quotation marks.
+
+
+ num = Val( user_in$)
+
+
+ In the first line of this piece of code we are comparing the variable num (which is the number the User entered) to the number 3 and we compare the variable num to the number 4. If the variable num is equal to the number 3 or 4 then we write "Good Answer" to the console.
+
+
+ If num = 3 OR num = 4 Then
+ Print "Good Answer"
+
+
+ This block of code compares the variable num to the number 5 and the number 9 if the previous If condition was false. If num is greater than 5 and num is less than 9 then we write "Choice numbers" to the console.
+
+
+ ElseIf num > 5 AND num < 9 Then
+ Print "Choice numbers"
+
+
+ Finally this last bit of code will write "Maybe next time" to the console if none of the previous IF conditions were true. It then ends the IF block.
+
+
+ Else
+ Print "Maybe next time"
+
+ End If
+
+
+
FUNCTION This is going to be fairly short. So what is a function? A function is a block of code that is labelled by some kind of name so it can be called at any point in a program. I know you are confused again. But you have been using two functions several times throughout this tutorial. The Input$() function and the Val() function. A function has a return value that is either a number or a string. The Input$() function returns a string so it can be used anywhere in your program a normal string can be used. The Val() function returns a number so it can be used anywhere in your program a number can be used. Yes even inside a math problem. Are these the only two functions available in RC Basic. Not even close. There are over 200 functions available in RC Basic which allows you to do various task. Here is how a function is structured.
+
+
+ function_name ( argument1, argument2, ..etc ) - A function can have no arguments or several arguments. Arguments in a function can be numbers or strings, it just depends on what function you are using. So lets look at a few different functions to see how other functions are used.
+
+
+ Abs() returns the Absolute value of a number.
+
+
+ Abs( -4 )
+
+
+ Date$() returns the current date as a string.
+
+
+ Date$( )
+
+
+ UCase$() returns the argument you give it as an all uppercase string.
+
+
+ UCase$( "Hello World" )
+
+
+ As you can see there are different functions to accomplish different task. You can learn more functions by looking in the RC Basic reference manual located in the Docs folder in the rcbasic directory.
+
+
+
LOOPS We have finally made it to the last part of this tutorial. We are already fairly familiar with most of the core concepts of programming. We are finishing this lesson with a brief overview of loops. Loops are exactly what you think they are. They are ways of repeating blocks of code in your program as much as you need them to. Why would we need to repeat parts of our program? Well you will often have a program that you will want to continue running until the user is done using it or you will want to make a counter of some kind.
+
+
+ We are going to cover two types of loops. The first one we are going over is the FOR loop. For loops are used when you want to cycle through a block of code a set number of times. Lets just dive into the code.
+
+
+ Type this code into your editor and run it.
+
+
+ For i = 1 to 10
+ Print i
+ Next
+
+
+ The code in the example above writes the numbers 1 to 10 in the console. The FOR loop starts with a variable, which in this case is i. We set it with an initial value of 1 and tell the computer to loop the code between the FOR line and the NEXT line until i is equal to 10. When the NEXT statement is reached, i is increased by 1 and the program goes back to the start of the loop. That is how the FOR loop works in a nutshell. There is some extra control we can take over the For loop with the STEP statement. With the STEP statement we can change the amount the variable in the For line increases by. Look at the following example.
+
+
+ This code will write the even numbers from 2 to 10 to the console.
+
+
+ For i = 2 to 10 Step 2
+ Print i
+ Next
+
+
+ The last loop we are covering in this tutorial is the WHILE loop. The WHILE loop will loop through a block of code while a certain condition is true. Look at the following example.
+
+
+ i = 1
+ While i <= 10
+ Print i
+ i = i + 1
+ Wend
+
+
+ In the example above we are doing a little bit more than we have been doing up to this point. First we are creating a variable called i. We start a While loop that compares i to the number 10. If i is less than or equal to 10 then we write the value stored in i to the console. Then we get to the line i = i + 1. This line is making i equal to the value stored in i plus 1. Basically we are increasing i by 1. The WEND line goes back to the start of the WHILE block where it compares i to 10 and if it is less than or equal to 10 it repeats the block of code again.
+
+
+ Now for some challenges.
+
+
+ 1. Write a program that ask the User to enter a number. Then create a loop that outputs every number between 1 and the number the user enters to the console. 2. Write a program that continues to ask the User for there name until they enter "Bob". Then tell the User "Good by Bob".
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/hex.html b/doc/doc_files/hex.html
new file mode 100644
index 0000000..1c1464d
--- /dev/null
+++ b/doc/doc_files/hex.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Hex$ [RCBasic Doc]
+
+
+
+
function Hex$(n)
+
+ Returns a hexadecimal representation of a number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/hexval.html b/doc/doc_files/hexval.html
new file mode 100644
index 0000000..ea343cf
--- /dev/null
+++ b/doc/doc_files/hexval.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ HexVal [RCBasic Doc]
+
+
+
+
function HexVal(n$)
+
+ Returns the integer value of a hexadecimal string.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/hidemouse.html b/doc/doc_files/hidemouse.html
new file mode 100644
index 0000000..9278c3a
--- /dev/null
+++ b/doc/doc_files/hidemouse.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ HideMouse [RCBasic Doc]
+
+
+
+
sub HideMouse()
+
+ Makes the mouse cursor invisible.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/hidewindow.html b/doc/doc_files/hidewindow.html
new file mode 100644
index 0000000..8a08ec0
--- /dev/null
+++ b/doc/doc_files/hidewindow.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ HideWindow [RCBasic Doc]
+
+
+
+
sub HideWindow( )
+
+ Sets the window invisible.
+
+ Related:
+ ShowWindow
+ WindowIsVisible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/imageexists.html b/doc/doc_files/imageexists.html
new file mode 100644
index 0000000..38f81a8
--- /dev/null
+++ b/doc/doc_files/imageexists.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ImageExists [RCBasic Doc]
+
+
+
+
function ImageExists(img)
+
+ Returns true if img is associated with an allocated image in memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/incrementmatrixcolumns.html b/doc/doc_files/incrementmatrixcolumns.html
new file mode 100644
index 0000000..1a781a0
--- /dev/null
+++ b/doc/doc_files/incrementmatrixcolumns.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ IncrementMatrixColumns [RCBasic Doc]
+
+
+
+
sub IncrementMatrixColumns(mA, mB, c, num_cols, value)
+
+ Increments all the values in a specified number of columns in matrix mA, starting from column c. The result is stored in matrix mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/incrementmatrixrows.html b/doc/doc_files/incrementmatrixrows.html
new file mode 100644
index 0000000..697655f
--- /dev/null
+++ b/doc/doc_files/incrementmatrixrows.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ IncrementMatrixRows [RCBasic Doc]
+
+
+
+
sub IncrementMatrixRows(mA, mB, r, num_rows, value)
+
+ Increments all the values in a specified number of rows in matrix mA, starting from row r. The result is stored in matrix mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/inkey.html b/doc/doc_files/inkey.html
new file mode 100644
index 0000000..f5fc3ee
--- /dev/null
+++ b/doc/doc_files/inkey.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ InKey [RCBasic Doc]
+
+
+
+
function InKey()
+
+ Returns the character value of the key that was pressed.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/input.html b/doc/doc_files/input.html
new file mode 100644
index 0000000..9299c02
--- /dev/null
+++ b/doc/doc_files/input.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Input$ [RCBasic Doc]
+
+
+
+
function Input$(prompt$)
+
+ Returns user input from the console
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/insert.html b/doc/doc_files/insert.html
new file mode 100644
index 0000000..96c239e
--- /dev/null
+++ b/doc/doc_files/insert.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Insert$ [RCBasic Doc]
+
+
+
+
function Insert$(src$, tgt$, pos)
+
+ Returns a string containing str_to_insert$ inserted into src$ at a given position
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/insertmatrixcolumns.html b/doc/doc_files/insertmatrixcolumns.html
new file mode 100644
index 0000000..e1320fb
--- /dev/null
+++ b/doc/doc_files/insertmatrixcolumns.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ InsertMatrixColumns [RCBasic Doc]
+
+
+
+
function InsertMatrixColumns(mA, c, num_cols)
+
+ Insert a number of empty columns into matrix mA starting at the specified column.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/insertmatrixrows.html b/doc/doc_files/insertmatrixrows.html
new file mode 100644
index 0000000..2d37e21
--- /dev/null
+++ b/doc/doc_files/insertmatrixrows.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ InsertMatrixRows [RCBasic Doc]
+
+
+
+
function InsertMatrixRows(mA, r, num_rows)
+
+ Insert a number of empty rows into matrix mA starting at the specified row.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/instr.html b/doc/doc_files/instr.html
new file mode 100644
index 0000000..1d9ec84
--- /dev/null
+++ b/doc/doc_files/instr.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ InStr [RCBasic Doc]
+
+
+
+
function InStr(src$, substr$)
+
+ Returns the position in src$ where substr$ is found. If not found it will return -1.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/int.html b/doc/doc_files/int.html
new file mode 100644
index 0000000..91dc96c
--- /dev/null
+++ b/doc/doc_files/int.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Int [RCBasic Doc]
+
+
+
+
function Int(n)
+
+ Returns a number converted to an integer.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/integrateactorvelocities.html b/doc/doc_files/integrateactorvelocities.html
new file mode 100644
index 0000000..f70a3d7
--- /dev/null
+++ b/doc/doc_files/integrateactorvelocities.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ integrateActorVelocities [RCBasic Doc]
+
+
+
+
sub integrateActorVelocities( actor, v_step)
+
+ Updates the linear and angular velocities of an actor based on the forces and torques applied to it over a time step.
+
+
+ Note: This is more manual control than most devs will probably need
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/interpolate.html b/doc/doc_files/interpolate.html
new file mode 100644
index 0000000..0b3fbc2
--- /dev/null
+++ b/doc/doc_files/interpolate.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Interpolate [RCBasic Doc]
+
+
+
+
Function Interpolate(min_a, max_a, mid_a, min_b, max_b)
+
+ This function returns a value interpolated based on the comparison between a mid value in a range of given min and max values
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/intro.html b/doc/doc_files/intro.html
new file mode 100644
index 0000000..a4dcf10
--- /dev/null
+++ b/doc/doc_files/intro.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Introduction to RCBasic [RCBasic Doc]
+
+
+
+
INTRODUCTION TO RCBASIC
+
+ First I would like to say thank you for taking an interest in RCBASIC ( I use all caps because I think it looks more retro that way). RCBASIC is a variant of the BASIC programming language. It consist of a compiler, interpreter, and a code editor. This version of BASIC was mostly influenced by sdlBasic and QBasic. My main reason for writing this software was just to have fun and challenge myself. This language is not as full featured as C++ or Java but you can still create some awesome stuff with it. I hope you have as much fun using this software as I had making it.
+
+
+ Rodney Cunningham (aka. n00b)
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/invertmatrix.html b/doc/doc_files/invertmatrix.html
new file mode 100644
index 0000000..4d080b5
--- /dev/null
+++ b/doc/doc_files/invertmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ InvertMatrix [RCBasic Doc]
+
+
+
+
function InvertMatrix(mA, mB)
+
+ Stores the inverse matrix of mA in mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/io.html b/doc/doc_files/io.html
new file mode 100644
index 0000000..6c90c03
--- /dev/null
+++ b/doc/doc_files/io.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+ RCBasic I/O [RCBasic Doc]
+
+
+
+
INPUT/OUTPUT
+
+ RC BASIC has two ways of getting output to a text console. The first way is the PRINT keyword shown here:
+
+
+ Print "HELLO WORLD"
+ Print 5
+
+
+ You can also use a ";" to output multiple values or to prevent PRINT from going to a new-line in its output.
+
+
+ Print "This is line 1. " ;
+ Print "This is still line 1. Value=" ; 4 +5 ; " This is the end of line 1"
+ Print "Line 2 start"
+
+
+ You can also use the FPrint() sub routine to do the same thing as PRINT . It was added back in RCBasic v1.0 since PRINT was not able to stop new-line after its output back then. This is a legacy hold over and does not really add any new functionality.
+
+
+ To get input from the user you would use the INPUT$ function. INPUT$ will display a prompt to the user and then get input from the console.
+
+
+ USER_NAME$ = INPUT$( "WHAT IS YOUR NAME? " )
+
+
+ The above example will ask the user WHAT IS YOUR NAME? and then store whatever the user types in into the variable USER_NAME$.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/isequalmatrix.html b/doc/doc_files/isequalmatrix.html
new file mode 100644
index 0000000..cbaf025
--- /dev/null
+++ b/doc/doc_files/isequalmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ IsEqualMatrix [RCBasic Doc]
+
+
+
+
function IsEqualMatrix(mA, mB, tolerance)
+
+ Returns true if matrix mA is within tolerance of matrix mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joinmatrixcolumns.html b/doc/doc_files/joinmatrixcolumns.html
new file mode 100644
index 0000000..28fe335
--- /dev/null
+++ b/doc/doc_files/joinmatrixcolumns.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ JoinMatrixColumns [RCBasic Doc]
+
+
+
+
sub JoinMatrixColumns(mA, mB, mC)
+
+ Appends the columns in matrix mB below matrix mA.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joinmatrixrows.html b/doc/doc_files/joinmatrixrows.html
new file mode 100644
index 0000000..acfa66d
--- /dev/null
+++ b/doc/doc_files/joinmatrixrows.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ JoinMatrixRows [RCBasic Doc]
+
+
+
+
sub JoinMatrixRows(mA, mB, mC)
+
+ Appends the rows in matrix mB onto the right of matrix mA.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joyaxis.html b/doc/doc_files/joyaxis.html
new file mode 100644
index 0000000..7c8ee90
--- /dev/null
+++ b/doc/doc_files/joyaxis.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ JoyAxis [RCBasic Doc]
+
+
+
+
function JoyAxis(joy_num, joy_axis)
+
+ Returns the value of an axis on a joystick.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joybutton.html b/doc/doc_files/joybutton.html
new file mode 100644
index 0000000..0d1d73f
--- /dev/null
+++ b/doc/doc_files/joybutton.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ JoyButton [RCBasic Doc]
+
+
+
+
function JoyButton(joy_num, joy_button)
+
+ Returns true if the given button was pressed and false otherwise.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joyhat.html b/doc/doc_files/joyhat.html
new file mode 100644
index 0000000..cd392c8
--- /dev/null
+++ b/doc/doc_files/joyhat.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+ JoyHat [RCBasic Doc]
+
+
+
+
function JoyHat(joy_num, joy_hat)
+
+ Returns the position of the Hat.
+
+
+ Possible Hat Positions
+
+
+
+ HAT_CENTERED
+
+
+ HAT_LEFT
+
+
+ HAT_RIGHT
+
+
+ HAT_UP
+
+
+ HAT_DOWN
+
+
+ HAT_RIGHTUP
+
+
+ HAT_RIGHTDOWN
+
+
+ HAT_LEFTUP
+
+
+ HAT_LEFTDOWN
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joyname.html b/doc/doc_files/joyname.html
new file mode 100644
index 0000000..8b84cc5
--- /dev/null
+++ b/doc/doc_files/joyname.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ JoyName$ [RCBasic Doc]
+
+
+
+
function JoyName$(joy_num)
+
+ Returns the joystick name.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joyrumbleplay.html b/doc/doc_files/joyrumbleplay.html
new file mode 100644
index 0000000..8b9bf12
--- /dev/null
+++ b/doc/doc_files/joyrumbleplay.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ JoyRumblePlay [RCBasic Doc]
+
+
+
+
sub JoyRumblePlay(joy_num, strength, duration)
+
+ Rumbles a joystick at a specified strength for the specifed duration.
+
+
+
+ Strength - A value between 0 and 1
+
+
+ Duration - Value is in milliseconds
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joyrumblestop.html b/doc/doc_files/joyrumblestop.html
new file mode 100644
index 0000000..1d0f439
--- /dev/null
+++ b/doc/doc_files/joyrumblestop.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ JoyRumbleStop [RCBasic Doc]
+
+
+
+
sub JoyRumbleStop(joy_num)
+
+ Stops the rumble on a joystick
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joystickisconnected.html b/doc/doc_files/joystickisconnected.html
new file mode 100644
index 0000000..02a0f3e
--- /dev/null
+++ b/doc/doc_files/joystickisconnected.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ JoystickIsConnected [RCBasic Doc]
+
+
+
+
function JoystickIsConnected(joy_num)
+
+ Returns true if joystick is connected, or false if it isn't.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/joystickishaptic.html b/doc/doc_files/joystickishaptic.html
new file mode 100644
index 0000000..9f8da8a
--- /dev/null
+++ b/doc/doc_files/joystickishaptic.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ JoystickIsHaptic [RCBasic Doc]
+
+
+
+
function JoystickIsHaptic(joy_num)
+
+ Returns true if joystick has the ability to rumble.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/key.html b/doc/doc_files/key.html
new file mode 100644
index 0000000..48ec475
--- /dev/null
+++ b/doc/doc_files/key.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Key [RCBasic Doc]
+
+
+
+
function Key(key_code)
+
+ Returns true if the given key was pressed and false otherwise.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/key_codes.html b/doc/doc_files/key_codes.html
new file mode 100644
index 0000000..2d25688
--- /dev/null
+++ b/doc/doc_files/key_codes.html
@@ -0,0 +1,1832 @@
+
+
+
+
+
+ RC BASIC Keyboard Codes
+
+
+
+
+
+
+
+ K EY NAME
+
+
+ RC BASIC CODE
+
+
+
+
+ "0 "
+
+
+ K_0
+
+
+
+
+ "1 "
+
+
+ K_1
+
+
+
+
+ "2 "
+
+
+ K_2
+
+
+
+
+ "3 "
+
+
+ K_3
+
+
+
+
+ "4 "
+
+
+ K_4
+
+
+
+
+ "5 "
+
+
+ K_5
+
+
+
+
+ "6 "
+
+
+ K_6
+
+
+
+
+ "7 "
+
+
+ K_7
+
+
+
+
+ "8 "
+
+
+ K_8
+
+
+
+
+ "9 "
+
+
+ K_9
+
+
+
+
+ "A "
+
+
+ K_A
+
+
+
+
+ "AC Back " (the Back key (application control
+ keypad))
+
+
+ K_AC_BACK
+
+
+
+
+ "AC Bookmarks " (the Bookmarks key (application
+ control keypad))
+
+
+ K_AC_BOOKMARKS
+
+
+
+
+ "AC Forward " (the Forward key (application
+ control keypad))
+
+
+ K_AC_FORWARD
+
+
+
+
+ "AC Home " (the Home key (application control
+ keypad))
+
+
+ K_AC_HOME
+
+
+
+
+ "AC Refresh " (the Refresh key (application
+ control keypad))
+
+
+ K_AC_REFRESH
+
+
+
+
+ "AC Search " (the Search key (application control
+ keypad))
+
+
+ K_AC_SEARCH
+
+
+
+
+ "AC Stop " (the Stop key (application control
+ keypad))
+
+
+ K_AC_STOP
+
+
+
+
+ "Again " (the Again key (Redo))
+
+
+ K_AGAIN
+
+
+
+
+ "AltErase " (Erase-Eaze)
+
+
+ K_ALTERASE
+
+
+
+
+ "' "
+
+
+ K_APOSTROPHE
+
+
+
+
+ "Application " (the Application / Compose /
+ Context Menu (Windows) key )
+
+
+ K_APPLICATION
+
+
+
+
+ "AudioMute " (the Mute volume key)
+
+
+ K_AUDIOMUTE
+
+
+
+
+ "AudioNext " (the Next Track media key)
+
+
+ K_AUDIONEXT
+
+
+
+
+ "AudioPlay " (the Play media key)
+
+
+ K_AUDIOPLAY
+
+
+
+
+ "AudioPrev " (the Previous Track media key)
+
+
+ K_AUDIOPREV
+
+
+
+
+ "AudioStop " (the Stop media key)
+
+
+ K_AUDIOSTOP
+
+
+
+
+ "B "
+
+
+ K_B
+
+
+
+
+ "\ " (Located at the lower left of the return key
+ on ISO keyboards and at the right end of the QWERTY row on ANSI
+ keyboards. Produces REVERSE SOLIDUS (backslash) and VERTICAL LINE
+ in a US layout, REVERSE SOLIDUS and VERTICAL LINE in a UK Mac
+ layout, NUMBER SIGN and TILDE in a UK Windows layout, DOLLAR SIGN
+ and POUND SIGN in a Swiss German layout, NUMBER SIGN and
+ APOSTROPHE in a German layout, GRAVE ACCENT and POUND SIGN in a
+ French Mac layout, and ASTERISK and MICRO SIGN in a French Windows
+ layout.)
+
+
+ K_BACKSLASH
+
+
+
+
+ "Backspace "
+
+
+ K_BACKSPACE
+
+
+
+
+ "BrightnessDown " (the Brightness Down key)
+
+
+ K_BRIGHTNESSDOWN
+
+
+
+
+ "BrightnessUp " (the Brightness Up key)
+
+
+ K_BRIGHTNESSUP
+
+
+
+
+ "C "
+
+
+ K_C
+
+
+
+
+ "Calculator " (the Calculator key)
+
+
+ K_CALCULATOR
+
+
+
+
+ "Cancel "
+
+
+ K_CANCEL
+
+
+
+
+ "CapsLock "
+
+
+ K_CAPSLOCK
+
+
+
+
+ "Clear "
+
+
+ K_CLEAR
+
+
+
+
+ "Clear / Again "
+
+
+ K_CLEARAGAIN
+
+
+
+
+ ", "
+
+
+ K_COMMA
+
+
+
+
+ "Computer " (the My Computer key)
+
+
+ K_COMPUTER
+
+
+
+
+ "Copy "
+
+
+ K_COPY
+
+
+
+
+ "CrSel "
+
+
+ K_CRSEL
+
+
+
+
+ "CurrencySubUnit " (the Currency Subunit key)
+
+
+ K_CURRENCYSUBUNIT
+
+
+
+
+ "CurrencyUnit " (the Currency Unit key)
+
+
+ K_CURRENCYUNIT
+
+
+
+
+ "Cut "
+
+
+ K_CUT
+
+
+
+
+ "D "
+
+
+ K_D
+
+
+
+
+ "DecimalSeparator " (the Decimal Separator key)
+
+
+ K_DECIMALSEPARATOR
+
+
+
+
+ "Delete "
+
+
+ K_DELETE
+
+
+
+
+ "DisplaySwitch " (display mirroring/dual display
+ switch, video mode switch)
+
+
+ K_DISPLAYSWITCH
+
+
+
+
+ "Down " (the Down arrow key (navigation keypad))
+
+
+ K_DOWN
+
+
+
+
+ "E "
+
+
+ K_E
+
+
+
+
+ "Eject " (the Eject key)
+
+
+ K_EJECT
+
+
+
+
+ "End "
+
+
+ K_END
+
+
+
+
+ "= "
+
+
+ K_EQUALS
+
+
+
+
+ "Escape " (the Esc key)
+
+
+ K_ESCAPE
+
+
+
+
+ "Execute "
+
+
+ K_EXECUTE
+
+
+
+
+ "ExSel "
+
+
+ K_EXSEL
+
+
+
+
+ "F "
+
+
+ K_F
+
+
+
+
+ "F1 "
+
+
+ K_F1
+
+
+
+
+ "F10 "
+
+
+ K_F10
+
+
+
+
+ "F11 "
+
+
+ K_F11
+
+
+
+
+ "F12 "
+
+
+ K_F12
+
+
+
+
+ "F13 "
+
+
+ K_F13
+
+
+
+
+ "F14 "
+
+
+ K_F14
+
+
+
+
+ "F15 "
+
+
+ K_F15
+
+
+
+
+ "F16 "
+
+
+ K_F16
+
+
+
+
+ "F17 "
+
+
+ K_F17
+
+
+
+
+ "F18 "
+
+
+ K_F18
+
+
+
+
+ "F19 "
+
+
+ K_F19
+
+
+
+
+ "F2 "
+
+
+ K_F2
+
+
+
+
+ "F20 "
+
+
+ K_F20
+
+
+
+
+ "F21 "
+
+
+ K_F21
+
+
+
+
+ "F22 "
+
+
+ K_F22
+
+
+
+
+ "F23 "
+
+
+ K_F23
+
+
+
+
+ "F24 "
+
+
+ K_F24
+
+
+
+
+ "F3 "
+
+
+ K_F3
+
+
+
+
+ "F4 "
+
+
+ K_F4
+
+
+
+
+ "F5 "
+
+
+ K_F5
+
+
+
+
+ "F6 "
+
+
+ K_F6
+
+
+
+
+ "F7 "
+
+
+ K_F7
+
+
+
+
+ "F8 "
+
+
+ K_F8
+
+
+
+
+ "F9 "
+
+
+ K_F9
+
+
+
+
+ "Find "
+
+
+ K_FIND
+
+
+
+
+ "G "
+
+
+ K_G
+
+
+
+
+ "` " (Located in the top left corner (on both
+ ANSI and ISO keyboards). Produces GRAVE ACCENT and TILDE in a US
+ Windows layout and in US and UK Mac layouts on ANSI keyboards,
+ GRAVE ACCENT and NOT SIGN in a UK Windows layout, SECTION SIGN and
+ PLUS-MINUS SIGN in US and UK Mac layouts on ISO keyboards, SECTION
+ SIGN and DEGREE SIGN in a Swiss German layout (Mac: only on ISO
+ keyboards), CIRCUMFLEX ACCENT and DEGREE SIGN in a German layout
+ (Mac: only on ISO keyboards), SUPERSCRIPT TWO and TILDE in a
+ French Windows layout, COMMERCIAL AT and NUMBER SIGN in a French
+ Mac layout on ISO keyboards, and LESS-THAN SIGN and GREATER-THAN
+ SIGN in a Swiss German, German, or French Mac layout on ANSI
+ keyboards.)
+
+
+ K_GRAVE
+
+
+
+
+ "H "
+
+
+ K_H
+
+
+
+
+ "Help "
+
+
+ K_HELP
+
+
+
+
+ "Home "
+
+
+ K_HOME
+
+
+
+
+ "I "
+
+
+ K_I
+
+
+
+
+ "Insert " (insert on PC, help on some Mac
+ keyboards (but does send code 73, not 117))
+
+
+ K_INSERT
+
+
+
+
+ "J "
+
+
+ K_J
+
+
+
+
+ "K "
+
+
+ K_K
+
+
+
+
+ "KBDIllumDown " (the Keyboard Illumination Down
+ key)
+
+
+ K_KBDILLUMDOWN
+
+
+
+
+ "KBDIllumToggle " (the Keyboard Illumination
+ Toggle key)
+
+
+ K_KBDILLUMTOGGLE
+
+
+
+
+ "KBDIllumUp " (the Keyboard Illumination Up key)
+
+
+ K_KBDILLUMUP
+
+
+
+
+ "Keypad 0 " (the 0 key (numeric keypad))
+
+
+ KEYPAD_0
+
+
+
+
+ "Keypad 00 " (the 00 key (numeric keypad))
+
+
+ KEYPAD_00
+
+
+
+
+ "Keypad 000 " (the 000 key (numeric keypad))
+
+
+ KEYPAD_000
+
+
+
+
+ "Keypad 1 " (the 1 key (numeric keypad))
+
+
+ KEYPAD_1
+
+
+
+
+ "Keypad 2 " (the 2 key (numeric keypad))
+
+
+ KEYPAD_2
+
+
+
+
+ "Keypad 3 " (the 3 key (numeric keypad))
+
+
+ KEYPAD_3
+
+
+
+
+ "Keypad 4 " (the 4 key (numeric keypad))
+
+
+ KEYPAD_4
+
+
+
+
+ "Keypad 5 " (the 5 key (numeric keypad))
+
+
+ KEYPAD_5
+
+
+
+
+ "Keypad 6 " (the 6 key (numeric keypad))
+
+
+ KEYPAD_6
+
+
+
+
+ "Keypad 7 " (the 7 key (numeric keypad))
+
+
+ KEYPAD_7
+
+
+
+
+ "Keypad 8 " (the 8 key (numeric keypad))
+
+
+ KEYPAD_8
+
+
+
+
+ "Keypad 9 " (the 9 key (numeric keypad))
+
+
+ KEYPAD_9
+
+
+
+
+ "Keypad A " (the A key (numeric keypad))
+
+
+ KEYPAD_A
+
+
+
+
+ "Keypad & " (the & key (numeric keypad))
+
+
+ KEYPAD_AMPERSAND
+
+
+
+
+ "Keypad @ " (the @ key (numeric keypad))
+
+
+ KEYPAD_AT
+
+
+
+
+ "Keypad B " (the B key (numeric keypad))
+
+
+ KEYPAD_B
+
+
+
+
+ "Keypad Backspace " (the Backspace key (numeric
+ keypad))
+
+
+ KEYPAD_BACKSPACE
+
+
+
+
+ "Keypad Binary " (the Binary key (numeric
+ keypad))
+
+
+ KEYPAD_BINARY
+
+
+
+
+ "Keypad C " (the C key (numeric keypad))
+
+
+ KEYPAD_C
+
+
+
+
+ "Keypad Clear " (the Clear key (numeric keypad))
+
+
+ KEYPAD_CLEAR
+
+
+
+
+ "Keypad ClearEntry " (the Clear Entry key
+ (numeric keypad))
+
+
+ KEYPAD_CLEARENTRY
+
+
+
+
+ "Keypad : " (the : key (numeric keypad))
+
+
+ KEYPAD_COLON
+
+
+
+
+ "Keypad , " (the Comma key (numeric keypad))
+
+
+ KEYPAD_COMMA
+
+
+
+
+ "Keypad D " (the D key (numeric keypad))
+
+
+ KEYPAD_D
+
+
+
+
+ "Keypad && " (the && key (numeric
+ keypad))
+
+
+ KEYPAD_DBLAMPERSAND
+
+
+
+
+ "Keypad || " (the || key (numeric keypad))
+
+
+ KEYPAD_DBLVERTICALBAR
+
+
+
+
+ "Keypad Decimal " (the Decimal key (numeric
+ keypad))
+
+
+ KEYPAD_DECIMAL
+
+
+
+
+ "Keypad / " (the / key (numeric keypad))
+
+
+ KEYPAD_DIVIDE
+
+
+
+
+ "Keypad E " (the E key (numeric keypad))
+
+
+ KEYPAD_E
+
+
+
+
+ "Keypad Enter " (the Enter key (numeric keypad))
+
+
+ KEYPAD_ENTER
+
+
+
+
+ "Keypad = " (the = key (numeric keypad))
+
+
+ KEYPAD_EQUALS
+
+
+
+
+ "Keypad = (AS400) " (the Equals AS400 key
+ (numeric keypad))
+
+
+ KEYPAD_EQUALSAS400
+
+
+
+
+ "Keypad ! " (the ! key (numeric keypad))
+
+
+ KEYPAD_EXCLAM
+
+
+
+
+ "Keypad F " (the F key (numeric keypad))
+
+
+ KEYPAD_F
+
+
+
+
+ "Keypad > " (the Greater key (numeric keypad))
+
+
+ KEYPAD_GREATER
+
+
+
+
+ "Keypad # " (the # key (numeric keypad))
+
+
+ KEYPAD_HASH
+
+
+
+
+ "Keypad Hexadecimal " (the Hexadecimal key
+ (numeric keypad))
+
+
+ KEYPAD_HEXADECIMAL
+
+
+
+
+ "Keypad { " (the Left Brace key (numeric keypad))
+
+
+ KEYPAD_LEFTBRACE
+
+
+
+
+ "Keypad ( " (the Left Parenthesis key (numeric
+ keypad))
+
+
+ KEYPAD_LEFTPAREN
+
+
+
+
+ "Keypad < " (the Less key (numeric keypad))
+
+
+ KEYPAD_LESS
+
+
+
+
+ "Keypad MemAdd " (the Mem Add key (numeric
+ keypad))
+
+
+ KEYPAD_MEMADD
+
+
+
+
+ "Keypad MemClear " (the Mem Clear key (numeric
+ keypad))
+
+
+ KEYPAD_MEMCLEAR
+
+
+
+
+ "Keypad MemDivide " (the Mem Divide key (numeric
+ keypad))
+
+
+ KEYPAD_MEMDIVIDE
+
+
+
+
+ "Keypad MemMultiply " (the Mem Multiply key
+ (numeric keypad))
+
+
+ KEYPAD_MEMMULTIPLY
+
+
+
+
+ "Keypad MemRecall " (the Mem Recall key (numeric
+ keypad))
+
+
+ KEYPAD_MEMRECALL
+
+
+
+
+ "Keypad MemStore " (the Mem Store key (numeric
+ keypad))
+
+
+ KEYPAD_MEMSTORE
+
+
+
+
+ "Keypad MemSubtract " (the Mem Subtract key
+ (numeric keypad))
+
+
+ KEYPAD_MEMSUBTRACT
+
+
+
+
+ "Keypad - " (the - key (numeric keypad))
+
+
+ KEYPAD_MINUS
+
+
+
+
+ "Keypad * " (the * key (numeric keypad))
+
+
+ KEYPAD_MULTIPLY
+
+
+
+
+ "Keypad Octal " (the Octal key (numeric keypad))
+
+
+ KEYPAD_OCTAL
+
+
+
+
+ "Keypad % " (the Percent key (numeric keypad))
+
+
+ KEYPAD_PERCENT
+
+
+
+
+ "Keypad . " (the . key (numeric keypad))
+
+
+ KEYPAD_PERIOD
+
+
+
+
+ "Keypad + " (the + key (numeric keypad))
+
+
+ KEYPAD_PLUS
+
+
+
+
+ "Keypad +/- " (the +/- key (numeric keypad))
+
+
+ KEYPAD_PLUSMINUS
+
+
+
+
+ "Keypad ^ " (the Power key (numeric keypad))
+
+
+ KEYPAD_POWER
+
+
+
+
+ "Keypad } " (the Right Brace key (numeric
+ keypad))
+
+
+ KEYPAD_RIGHTBRACE
+
+
+
+
+ "Keypad ) " (the Right Parenthesis key (numeric
+ keypad))
+
+
+ KEYPAD_RIGHTPAREN
+
+
+
+
+ "Keypad Space " (the Space key (numeric keypad))
+
+
+ KEYPAD_SPACE
+
+
+
+
+ "Keypad Tab " (the Tab key (numeric keypad))
+
+
+ KEYPAD_TAB
+
+
+
+
+ "Keypad | " (the | key (numeric keypad))
+
+
+ KEYPAD_VERTICALBAR
+
+
+
+
+ "Keypad XOR " (the XOR key (numeric keypad))
+
+
+ KEYPAD_XOR
+
+
+
+
+ "L "
+
+
+ K_L
+
+
+
+
+ "Left Alt " (alt, option)
+
+
+ K_LALT
+
+
+
+
+ "Left Ctrl "
+
+
+ K_LCTRL
+
+
+
+
+ "Left " (the Left arrow key (navigation keypad))
+
+
+ K_LEFT
+
+
+
+
+ "[ "
+
+
+ K_LEFTBRACKET
+
+
+
+
+ "Left GUI " (windows, command (apple), meta)
+
+
+ K_LGUI
+
+
+
+
+ "Left Shift "
+
+
+ K_LSHIFT
+
+
+
+
+ "M "
+
+
+ K_M
+
+
+
+
+ "Mail " (the Mail/eMail key)
+
+
+ K_MAIL
+
+
+
+
+ "MediaSelect " (the Media Select key)
+
+
+ K_MEDIASELECT
+
+
+
+
+ "Menu "
+
+
+ K_MENU
+
+
+
+
+ "- "
+
+
+ K_MINUS
+
+
+
+
+ "ModeSwitch " (I'm not sure if this is really not
+ covered by any of the above, but since there's a special KMOD_MODE
+ for it I'm adding it here)
+
+
+ K_MODE
+
+
+
+
+ "Mute "
+
+
+ K_MUTE
+
+
+
+
+ "N "
+
+
+ K_N
+
+
+
+
+ "Numlock " (the Num Lock key (PC) / the Clear key
+ (Mac))
+
+
+ K_NUMLOCKCLEAR
+
+
+
+
+ "O "
+
+
+ K_O
+
+
+
+
+ "Oper "
+
+
+ K_OPER
+
+
+
+
+ "Out "
+
+
+ K_OUT
+
+
+
+
+ "P "
+
+
+ K_P
+
+
+
+
+ "PageDown "
+
+
+ K_PAGEDOWN
+
+
+
+
+ "PageUp "
+
+
+ K_PAGEUP
+
+
+
+
+ "Paste "
+
+
+ K_PASTE
+
+
+
+
+ "Pause " (the Pause / Break key)
+
+
+ K_PAUSE
+
+
+
+
+ ". "
+
+
+ K_PERIOD
+
+
+
+
+ "Power " (The USB document says this is a status
+ flag, not a physical key - but some Mac keyboards do have a power
+ key.)
+
+
+ K_POWER
+
+
+
+
+ "PrintScreen "
+
+
+ K_PRINTSCREEN
+
+
+
+
+ "Prior "
+
+
+ K_PRIOR
+
+
+
+
+ "Q "
+
+
+ K_Q
+
+
+
+
+ "R "
+
+
+ K_R
+
+
+
+
+ "Right Alt " (alt gr, option)
+
+
+ K_RALT
+
+
+
+
+ "Right Ctrl "
+
+
+ K_RCTRL
+
+
+
+
+ "Return " (the Enter key (main keyboard))
+
+
+ K_RETURN
+
+
+
+
+ "Return "
+
+
+ K_RETURN2
+
+
+
+
+ "Right GUI " (windows, command (apple), meta)
+
+
+ K_RGUI
+
+
+
+
+ "Right " (the Right arrow key (navigation
+ keypad))
+
+
+ K_RIGHT
+
+
+
+
+ "] "
+
+
+ K_RIGHTBRACKET
+
+
+
+
+ "Right Shift "
+
+
+ K_RSHIFT
+
+
+
+
+ "S "
+
+
+ K_S
+
+
+
+
+ "ScrollLock "
+
+
+ K_SCROLLLOCK
+
+
+
+
+ "Select "
+
+
+ K_SELECT
+
+
+
+
+ "; "
+
+
+ K_SEMICOLON
+
+
+
+
+ "Separator "
+
+
+ K_SEPARATOR
+
+
+
+
+ "/ "
+
+
+ K_SLASH
+
+
+
+
+ "Sleep " (the Sleep key)
+
+
+ K_SLEEP
+
+
+
+
+ "Space " (the Space Bar key(s))
+
+
+ K_SPACE
+
+
+
+
+ "Stop "
+
+
+ K_STOP
+
+
+
+
+ "SysReq " (the SysReq key)
+
+
+ K_SYSREQ
+
+
+
+
+ "T "
+
+
+ K_T
+
+
+
+
+ "Tab " (the Tab key)
+
+
+ K_TAB
+
+
+
+
+ "ThousandsSeparator " (the Thousands Separator
+ key)
+
+
+ K_THOUSANDSSEPARATOR
+
+
+
+
+ "U "
+
+
+ K_U
+
+
+
+
+ "Undo "
+
+
+ K_UNDO
+
+
+
+
+ "" (no name, empty string)
+
+
+ K_UNKNOWN
+
+
+
+
+ "Up " (the Up arrow key (navigation keypad))
+
+
+ K_UP
+
+
+
+
+ "V "
+
+
+ K_V
+
+
+
+
+ "VolumeDown "
+
+
+ K_VOLUMEDOWN
+
+
+
+
+ "VolumeUp "
+
+
+ K_VOLUMEUP
+
+
+
+
+ "W "
+
+
+ K_W
+
+
+
+
+ "WWW " (the WWW/World Wide Web key)
+
+
+ K_WWW
+
+
+
+
+ "X "
+
+
+ K_X
+
+
+
+
+ "Y "
+
+
+ K_Y
+
+
+
+
+ "Z "
+
+
+ K_Z
+
+
+
+
+
+
diff --git a/doc/doc_files/keywords.html b/doc/doc_files/keywords.html
new file mode 100644
index 0000000..4b07392
--- /dev/null
+++ b/doc/doc_files/keywords.html
@@ -0,0 +1,141 @@
+
+
+
+
+
+ RC BASIC Keywords
+
+
+
+
+
+ KEYWORD
+
+ DESCRIPTION
+
+ USAGE
+
+
+
+ INCLUDE
+ Include code from an external file. You can reference environment variables inside the include string with this syntax "${env_var}"
+ INCLUDE <STRING_LITERAL>
+
+
+ INCLUDE ONCE
+ Tells the compiler to only include the current file once.
+ INCLUDE ONCE
+
+
+ IF | ELSEIF | ELSE | END IF
+ Executes a block of code if an expression is true
+ NOTE: ELSEIF can be substituted for ELSE IF
+ IF <EXPRESSION> THEN
+ .....
+ ELSEIF <EXPRESSION> THEN
+ .....
+ ELSE
+ .....
+ END IF
+
+
+ SELECT | CASE | DEFAULT |
+ END SELECT
+ Executes a block of code if a case is equal to the selection case
+ SELECT CASE <EXPRESSION>
+ CASE <EXPRESSION>
+ .....
+ DEFAULT
+ .....
+ END SELECT
+
+
+ DO | LOOP | UNTIL | WHILE
+ Executes a block of code while a
+ condition is true or until a condition is met
+ DO
+ .....
+ LOOP {UNTIL | WHILE} <EXPRESSION>
+
+
+ WHILE | WEND
+ Executes a block of code while a condition is true
+ WHILE <EXPRESSION>
+ .....
+ WEND
+
+
+ FOR | TO | STEP | NEXT
+ Sets a counter variable to an initial value and executes a block
+ of code until the counter variable has reached a peak value
+ FOR <ID> = <EXPRESSION> TO <EXPRESSION>
+ {STEP} <EXPRESSION>
+ .....
+ NEXT
+
+
+ EXIT
+ Exits a loop
+ EXIT { DO | FOR | WHILE }
+
+
+ CONTINUE
+ Jumps back to the start of a loop
+ CONTINUE
+
+
+ FUNCTION | RETURN |
+ END FUNCTION
+ Creates a function
+ FUNCTION <ID> ( {BYREF}<ID>, ...)
+ .....
+ RETURN <EXPRESSION>
+ END FUNCTION
+
+
+ SUB | RETURN | END SUB
+ Creates a Sub Routine
+ SUB <ID> ( {BYREF} <ID>, ...)
+ .....
+ {RETURN}
+ END SUB
+
+
+ PRINT
+ Outputs Text to a console
+ PRINT <EXPRESSION>
+
+
+ END
+ Ends a program. Add a number expression after END to set the exit code.
+ END END <EXPRESSION>
+
+
+ DIM
+ Creates a variable or array
+ DIM <ID> { [ } <EXPRESSION>{ ] }
+
+
+ REDIM
+ Resizes an array
+ REDIM <ID> { [ } <EXPRESSION>{ ] }
+
+
+ DELETE
+ Deletes an array
+ DELETE <ID>
+
+
+ TRUE
+ Constant that evaluates to NOT 0
+ TRUE
+
+
+ FALSE
+ Constant that evaluates to 0
+ FALSE
+
+
+
+
+
diff --git a/doc/doc_files/keywords.txt b/doc/doc_files/keywords.txt
new file mode 100644
index 0000000..dcf4ab4
--- /dev/null
+++ b/doc/doc_files/keywords.txt
@@ -0,0 +1,150 @@
+
+
+
+
+
+ RC BASIC Keywords
+
+
+
+
+
+ KEYWORD
+
+ DESCRIPTION
+
+ USAGE
+
+
+
+ INCLUDE
+ Include code from an external file. You can reference environment variables inside the include string with this syntax "${env_var}"
+ INCLUDE <STRING_LITERAL>
+
+
+ INCLUDE ONCE
+ Tells the compiler to only include the current file once.
+ INCLUDE ONCE
+
+
+ IF | ELSEIF | ELSE | END IF
+ Executes a block of code if an expression is true
+ NOTE: ELSEIF can be substituted for ELSE IF
+ IF <EXPRESSION> THEN
+ .....
+ ELSEIF <EXPRESSION> THEN
+ .....
+ ELSE
+ .....
+ END IF
+
+
+ SELECT | CASE | DEFAULT |
+ END SELECT
+ Executes a block of code if a case is equal to the selection case
+ SELECT CASE <EXPRESSION>
+ CASE <EXPRESSION>
+ .....
+ DEFAULT
+ .....
+ END SELECT
+
+
+ DO | LOOP | UNTIL | WHILE
+ Executes a block of code while a
+ condition is true or until a condition is met
+ DO
+ .....
+ LOOP {UNTIL | WHILE} <EXPRESSION>
+
+
+ WHILE | WEND
+ Executes a block of code while a condition is true
+ WHILE <EXPRESSION>
+ .....
+ WEND
+
+
+ FOR | TO | STEP | NEXT
+ Sets a counter variable to an initial value and executes a block
+ of code until the counter variable has reached a peak value
+ FOR <ID> = <EXPRESSION> TO <EXPRESSION>
+ {STEP} <EXPRESSION>
+ .....
+ NEXT
+
+
+ EXIT
+ Exits a loop
+ EXIT { DO | FOR | WHILE }
+
+
+ CONTINUE
+ Jumps back to the start of a loop
+ CONTINUE
+
+
+ FUNCTION | RETURN |
+ END FUNCTION
+ Creates a function
+ FUNCTION <ID> ( {BYREF}<ID>, ...)
+ .....
+ RETURN <EXPRESSION>
+ END FUNCTION
+
+
+ SUB | RETURN | END SUB
+ Creates a Sub Routine
+ SUB <ID> ( {BYREF} <ID>, ...)
+ .....
+ {RETURN}
+ END SUB
+
+
+ PRINT
+ Outputs Text to a console
+ PRINT <EXPRESSION>
+
+
+ END
+ Ends a program. Add a number expression after END to set the exit code.
+ END END <EXPRESSION>
+
+
+ DIM
+ Creates a variable or array
+ DIM <ID> { [ } <EXPRESSION>{ ] }
+
+
+ REDIM
+ Resizes an array
+ REDIM <ID> { [ } <EXPRESSION>{ ] }
+
+
+ DELETE
+ Deletes an array
+ DELETE <ID>
+
+
+ TRUE
+ Constant that evaluates to NOT 0
+ TRUE
+
+
+ FALSE
+ Constant that evaluates to 0
+ FALSE
+
+
+
+
+
diff --git a/doc/doc_files/lcase.html b/doc/doc_files/lcase.html
new file mode 100644
index 0000000..cee7ca8
--- /dev/null
+++ b/doc/doc_files/lcase.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Lcase$ [RCBasic Doc]
+
+
+
+
function Lcase$(src$)
+
+ Returns src$ converted to a completely lower-case string
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/left.html b/doc/doc_files/left.html
new file mode 100644
index 0000000..0cfc9c1
--- /dev/null
+++ b/doc/doc_files/left.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Left$ [RCBasic Doc]
+
+
+
+
function Left$(src$, n)
+
+ Returns a substring n characters in length from the left side of the given string.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/len.html b/doc/doc_files/len.html
new file mode 100644
index 0000000..206d9ed
--- /dev/null
+++ b/doc/doc_files/len.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ Len [RCBasic Doc]
+
+
+
+
function Len(src$)
+
+ Returns the number of characters in the given string
+
+
+ Note: This function is the exact same as Length()
+
+ Related:
+ Length
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/length.html b/doc/doc_files/length.html
new file mode 100644
index 0000000..80ff13f
--- /dev/null
+++ b/doc/doc_files/length.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ Length [RCBasic Doc]
+
+
+
+
function Length(src$)
+
+ Returns the number of characters in the given string
+
+
+ Note: This function is the exact same as Len()
+
+ Related:
+ Length
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/license.html b/doc/doc_files/license.html
new file mode 100644
index 0000000..c59c270
--- /dev/null
+++ b/doc/doc_files/license.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+ RCBasic License [RCBasic Doc]
+
+
+
+
LICENSE
+
+ RCBasic is available under the zlib license :
+
+
+ This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+
+ Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+
+ 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+
+ 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+
+ 3. This notice may not be removed or altered from any source distribution.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/lightiscastingshadow.html b/doc/doc_files/lightiscastingshadow.html
new file mode 100644
index 0000000..9203c78
--- /dev/null
+++ b/doc/doc_files/lightiscastingshadow.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ lightIsCastingShadow [RCBasic Doc]
+
+
+
+
function lightIsCastingShadow( actor )
+
+ Returns true if shadow casting is enabled for the given light
+
+ Related:
+ SetLightShadowCast
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/line.html b/doc/doc_files/line.html
new file mode 100644
index 0000000..337dbc8
--- /dev/null
+++ b/doc/doc_files/line.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Line [RCBasic Doc]
+
+
+
+
sub Line(x1, y1, x2, y2)
+
+ Draws a line
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadan8.html b/doc/doc_files/loadan8.html
new file mode 100644
index 0000000..a9091b8
--- /dev/null
+++ b/doc/doc_files/loadan8.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ LoadAN8 [RCBasic Doc]
+
+
+
+
Function LoadAN8( an8_file$ )
+
+ Loads an an8 project and returns an id that can be used in LoadMeshFromAN8()
+
+ Related:
+ LoadMeshFromAN8
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadfont.html b/doc/doc_files/loadfont.html
new file mode 100644
index 0000000..7f6dbc9
--- /dev/null
+++ b/doc/doc_files/loadfont.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ LoadFont [RCBasic Doc]
+
+
+
+
function LoadFont(fnt_file$, font_size)
+
+ Returns a font id for a font with glyphs of font_size
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadimage.html b/doc/doc_files/loadimage.html
new file mode 100644
index 0000000..134134d
--- /dev/null
+++ b/doc/doc_files/loadimage.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ LoadImage [RCBasic Doc]
+
+
+
+
function LoadImage( img$ )
+
+ Returns an image id for an image loaded into memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadimageex.html b/doc/doc_files/loadimageex.html
new file mode 100644
index 0000000..261dc7d
--- /dev/null
+++ b/doc/doc_files/loadimageex.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ LoadImageEx [RCBasic Doc]
+
+
+
+
function LoadImageEx(img$, colkey)
+
+ Returns an image id for an image loaded into memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadmesh.html b/doc/doc_files/loadmesh.html
new file mode 100644
index 0000000..70bc16d
--- /dev/null
+++ b/doc/doc_files/loadmesh.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+ LoadMesh [RCBasic Doc]
+
+
+
+
function LoadMesh( mesh_file$ )
+
+ Returns a mesh id for the loaded mesh
+
+
+ Supported formats
+
+
+
+ Animated objects:
+
+
+ B3D files (.b3d, r, skeleton)
+
+
+ Microsoft DirectX (.x, r) (binary & text, skeleton)
+
+
+ Milkshape (.ms3d, r, skeleton)
+
+
+ Quake 3 models (.md3, r, morph)
+
+
+ Quake 2 models (.md2, r, morph)
+
+
+
+
+ Static objects:
+
+
+ Irrlicht scenes (.irr, r/w)
+
+
+ Irrlicht static meshes (.irrmesh, r/w)
+
+
+ 3D Studio meshes (.3ds, r)
+
+
+ Alias Wavefront Maya (.obj, r/w)
+
+
+ Lightwave Objects (.lwo, r)
+
+
+ COLLADA 1.4 (.xml, .dae, r/w)
+
+
+ OGRE meshes (.mesh, r)
+
+
+ My3DTools 3 (.my3D, r)
+
+
+ Pulsar LMTools (.lmts, r)
+
+
+ Quake 3 levels (.bsp, r)
+
+
+ DeleD (.dmf, r)
+
+
+ FSRad oct (.oct, r)
+
+
+ Cartography shop 4 (.csm, r)
+
+
+ STL 3D files (.stl, r/w)
+
+
+ PLY 3D files (.ply, r/w)
+
+
+
+
+ Related:
+ LoadMeshFromArchive
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadmeshfroman8.html b/doc/doc_files/loadmeshfroman8.html
new file mode 100644
index 0000000..dbc4486
--- /dev/null
+++ b/doc/doc_files/loadmeshfroman8.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ LoadMeshFromAN8 [RCBasic Doc]
+
+
+
+
Function LoadMeshFromAN8(an8_project, an8_scene$)
+
+ Loads the figures in an anim8or scene as a mesh
+
+
+ Note: This only loads figures from a scene and it loads meshes not anim8or objects
+
+ Related:
+ LoadAN8
+ LoadMesh
+ LoadMeshFromArchive
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadmeshfromarchive.html b/doc/doc_files/loadmeshfromarchive.html
new file mode 100644
index 0000000..52eb137
--- /dev/null
+++ b/doc/doc_files/loadmeshfromarchive.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+ LoadMeshFromArchive [RCBasic Doc]
+
+
+
+
function LoadMeshFromArchive( archive$, mesh_file$ )
+
+ Returns a mesh id for the loaded mesh from an archive (*.zip, *.pak, etc.)
+
+
+ Supported formats
+
+
+
+ Animated objects:
+
+
+ B3D files (.b3d, r, skeleton)
+
+
+ Microsoft DirectX (.x, r) (binary & text, skeleton)
+
+
+ Milkshape (.ms3d, r, skeleton)
+
+
+ Quake 3 models (.md3, r, morph)
+
+
+ Quake 2 models (.md2, r, morph)
+
+
+
+
+ Static objects:
+
+
+ Irrlicht scenes (.irr, r/w)
+
+
+ Irrlicht static meshes (.irrmesh, r/w)
+
+
+ 3D Studio meshes (.3ds, r)
+
+
+ Alias Wavefront Maya (.obj, r/w)
+
+
+ Lightwave Objects (.lwo, r)
+
+
+ COLLADA 1.4 (.xml, .dae, r/w)
+
+
+ OGRE meshes (.mesh, r)
+
+
+ My3DTools 3 (.my3D, r)
+
+
+ Pulsar LMTools (.lmts, r)
+
+
+ Quake 3 levels (.bsp, r)
+
+
+ DeleD (.dmf, r)
+
+
+ FSRad oct (.oct, r)
+
+
+ Cartography shop 4 (.csm, r)
+
+
+ STL 3D files (.stl, r/w)
+
+
+ PLY 3D files (.ply, r/w)
+
+
+
+
+ Related:
+ LoadMesh
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadmusic.html b/doc/doc_files/loadmusic.html
new file mode 100644
index 0000000..92857fb
--- /dev/null
+++ b/doc/doc_files/loadmusic.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ LoadMusic [RCBasic Doc]
+
+
+
+
sub LoadMusic(music_file$)
+
+ Loads a music track
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadsound.html b/doc/doc_files/loadsound.html
new file mode 100644
index 0000000..0f3cd47
--- /dev/null
+++ b/doc/doc_files/loadsound.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ LoadSound [RCBasic Doc]
+
+
+
+
function LoadSound(snd_file$)
+
+ Returns an id for a loaded audio track
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loadvideo.html b/doc/doc_files/loadvideo.html
new file mode 100644
index 0000000..1ee8c1e
--- /dev/null
+++ b/doc/doc_files/loadvideo.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ LoadVideo [RCBasic Doc]
+
+
+
+
sub LoadVideo(vid$)
+
+ Loads a video track
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/log.html b/doc/doc_files/log.html
new file mode 100644
index 0000000..772da3a
--- /dev/null
+++ b/doc/doc_files/log.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Log [RCBasic Doc]
+
+
+
+
function Log(n)
+
+ Returns the logarithm of a number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loopactoranimation.html b/doc/doc_files/loopactoranimation.html
new file mode 100644
index 0000000..834ce51
--- /dev/null
+++ b/doc/doc_files/loopactoranimation.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ loopActorAnimation [RCBasic Doc]
+
+
+
+
sub loopActorAnimation( actor, flag )
+
+ Enables or disables actor animation loop
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/loops.html b/doc/doc_files/loops.html
new file mode 100644
index 0000000..f6f3be7
--- /dev/null
+++ b/doc/doc_files/loops.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+ RCBasic Loops [RCBasic Doc]
+
+
+
+
LOOPS
+
+ RC BASIC has 3 types of loops: FOR , WHILE , and DO .
+
+
+ The FOR loop repeats a block of code and increments a counter each time it finishes the block between FOR and NEXT . When the counter reaches a certain value the FOR loop stops.
+
+
+ For I = 1 To 5
+ Print I
+ Next
+
+
+ The above code will output the numbers 1 to 5 to the console. Optionally you could use the STEP keyword to set the number that the counter will increase by. Look at the following:
+
+
+ For I = 1 To 5 Step 2
+ Print I
+ Next
+
+
+ The above code will output the numbers 1, 3, and 5 to the console. The STEP keyword increases I by 2 each time through the FOR loop.
+
+
+ WHILE loops will execute a block of code while a certain condition is true.
+
+
+ I = 0
+ While I < 5
+ Print I
+ I = I + 1
+ Wend
+
+
+ The above code will output the numbers 0 to 4. It will not output the number 5 because if ( I < 5 ) is false the loop will not repeat.
+
+
+ The DO loop is similar to the WHILE loop with an exception. The WHILE loop checks for the loop condition at the start of the loop but the DO loop checks for the loop condition at the end of the loop. What this means is that a WHILE loop will never execute if the condition is false at the start but the DO loop is guaranteed to execute at least once before it checks if the condition was true or not.
+
+
+ The DO loop is also unique in that it has 3 different forms. Here is the simplest form of the DO loop.
+
+
+ Do
+ Print "HELLO WORLD"
+ Loop
+
+
+ The code above will continue to output HELLO WORLD to the console infinitely.
+
+
+ I = 0
+ Do
+ Print I
+ I = I + 1
+ Loop While I < 5
+
+
+ The above code will output the numbers 0 to 4 to the console. This form of the DO loop will continue to loop while the loop condition is true.
+
+
+ I = 0
+ Do
+ Print I
+ I = I + 1
+ Loop Until I = 5
+
+
+ The above code will output the numbers 0 to 4 to the console. This form of the DO loop will continue to loop until the loop condition is true.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/ltrim.html b/doc/doc_files/ltrim.html
new file mode 100644
index 0000000..eaeefe6
--- /dev/null
+++ b/doc/doc_files/ltrim.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Ltrim$ [RCBasic Doc]
+
+
+
+
function Ltrim$(src$)
+
+ Returns src$ with all the spaces before the first non-space character removed.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/makedir.html b/doc/doc_files/makedir.html
new file mode 100644
index 0000000..79585d6
--- /dev/null
+++ b/doc/doc_files/makedir.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MakeDir [RCBasic Doc]
+
+
+
+
function MakeDir(p$)
+
+ Creates a new directory.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/materialexists.html b/doc/doc_files/materialexists.html
new file mode 100644
index 0000000..28d8e90
--- /dev/null
+++ b/doc/doc_files/materialexists.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ MaterialExists [RCBasic Doc]
+
+
+
+
function MaterialExists( material )
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/materialisaplhablend.html b/doc/doc_files/materialisaplhablend.html
new file mode 100644
index 0000000..30353a3
--- /dev/null
+++ b/doc/doc_files/materialisaplhablend.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ materialIsAplhaBlend [RCBasic Doc]
+
+
+
+
function materialIsAplhaBlend( material_id)
+
+ Returns true if alpha blending is enabled for a material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/materialisgouraudshaded.html b/doc/doc_files/materialisgouraudshaded.html
new file mode 100644
index 0000000..e889bb9
--- /dev/null
+++ b/doc/doc_files/materialisgouraudshaded.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ materialIsGouraudShaded [RCBasic Doc]
+
+
+
+
function materialIsGouraudShaded( material_id)
+
+ Returns true if material is set to goraud shading
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/materialislit.html b/doc/doc_files/materialislit.html
new file mode 100644
index 0000000..30c2f01
--- /dev/null
+++ b/doc/doc_files/materialislit.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ materialIsLit [RCBasic Doc]
+
+
+
+
function materialIsLit( material_id)
+
+ Returns true if a material is affected by lights in the scene
+
+ Related:
+ SetMaterialLighting
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/materialisnormalized.html b/doc/doc_files/materialisnormalized.html
new file mode 100644
index 0000000..34cf5a2
--- /dev/null
+++ b/doc/doc_files/materialisnormalized.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ materialIsNormalized [RCBasic Doc]
+
+
+
+
function materialIsNormalized( material_id)
+
+ Returns true if material has normalized normals
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/materialispointcloud.html b/doc/doc_files/materialispointcloud.html
new file mode 100644
index 0000000..d71a5e0
--- /dev/null
+++ b/doc/doc_files/materialispointcloud.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ materialIsPointCloud [RCBasic Doc]
+
+
+
+
function materialIsPointCloud( material_id)
+
+ Returns true if material is set to render with point cloud
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/materialistransparent.html b/doc/doc_files/materialistransparent.html
new file mode 100644
index 0000000..e16d041
--- /dev/null
+++ b/doc/doc_files/materialistransparent.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ materialIsTransparent [RCBasic Doc]
+
+
+
+
function materialIsTransparent( material_id)
+
+ Returns true if material is transparent
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/materialiswireframe.html b/doc/doc_files/materialiswireframe.html
new file mode 100644
index 0000000..0a706d7
--- /dev/null
+++ b/doc/doc_files/materialiswireframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ materialIsWireframe [RCBasic Doc]
+
+
+
+
function materialIsWireframe( material_id)
+
+ Returns true if the material is rendered with non-filled triangles
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/matrixfrombuffer.html b/doc/doc_files/matrixfrombuffer.html
new file mode 100644
index 0000000..c710863
--- /dev/null
+++ b/doc/doc_files/matrixfrombuffer.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ MatrixFromBuffer [RCBasic Doc]
+
+
+
+
sub MatrixFromBuffer(mA, r, c, ByRef buffer)
+
+ Creates a matrix from an array.
+
+
+ NOTE: buffer must have the same number of dimensions as the desired matrix for the structure to remain intact.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/matrixvalue.html b/doc/doc_files/matrixvalue.html
new file mode 100644
index 0000000..6e1c269
--- /dev/null
+++ b/doc/doc_files/matrixvalue.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MatrixValue [RCBasic Doc]
+
+
+
+
function MatrixValue(mA, r, c)
+
+ Returns the value stored at the given row and column in the matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/max.html b/doc/doc_files/max.html
new file mode 100644
index 0000000..6624701
--- /dev/null
+++ b/doc/doc_files/max.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Max [RCBasic Doc]
+
+
+
+
function Max(a, b)
+
+ Returns the highest of two numbers.
+
+ Related:
+ Min
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/maximizewindow.html b/doc/doc_files/maximizewindow.html
new file mode 100644
index 0000000..9de4ccd
--- /dev/null
+++ b/doc/doc_files/maximizewindow.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MaximizeWindow [RCBasic Doc]
+
+
+
+
sub MaximizeWindow()
+
+ Maximizes the window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/messagebox.html b/doc/doc_files/messagebox.html
new file mode 100644
index 0000000..d7b1f94
--- /dev/null
+++ b/doc/doc_files/messagebox.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MessageBox [RCBasic Doc]
+
+
+
+
function MessageBox(title$, msg$)
+
+ Displays a message box
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/mid.html b/doc/doc_files/mid.html
new file mode 100644
index 0000000..d772a11
--- /dev/null
+++ b/doc/doc_files/mid.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Mid$ [RCBasic Doc]
+
+
+
+
function Mid$(src$, start, n)
+
+ Returns a substring n characters long starting at start pos.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/min.html b/doc/doc_files/min.html
new file mode 100644
index 0000000..04397c2
--- /dev/null
+++ b/doc/doc_files/min.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Min [RCBasic Doc]
+
+
+
+
function Min(a, b)
+
+ Returns the lowest of two numbers.
+
+ Related:
+ Max
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/minimizewindow.html b/doc/doc_files/minimizewindow.html
new file mode 100644
index 0000000..c8fec6c
--- /dev/null
+++ b/doc/doc_files/minimizewindow.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MinimizeWindow [RCBasic Doc]
+
+
+
+
sub MinimizeWindow()
+
+ Minimizes the window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/mousebutton.html b/doc/doc_files/mousebutton.html
new file mode 100644
index 0000000..c3e33ee
--- /dev/null
+++ b/doc/doc_files/mousebutton.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MouseButton [RCBasic Doc]
+
+
+
+
function MouseButton(mb)
+
+ Returns true if mouse button is pressed
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/mouseisvisible.html b/doc/doc_files/mouseisvisible.html
new file mode 100644
index 0000000..cabdca0
--- /dev/null
+++ b/doc/doc_files/mouseisvisible.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ MouseIsVisible [RCBasic Doc]
+
+
+
+
function MouseIsVisible()
+
+ Returns true if mouse cursor is shown
+
+ Related:
+ ShowMouse
+ HideMouse
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/mousewheelx.html b/doc/doc_files/mousewheelx.html
new file mode 100644
index 0000000..54151f6
--- /dev/null
+++ b/doc/doc_files/mousewheelx.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MouseWheelX [RCBasic Doc]
+
+
+
+
function MouseWheelX()
+
+ Returns the value of the x axis on the mouse wheel
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/mousewheely.html b/doc/doc_files/mousewheely.html
new file mode 100644
index 0000000..2dcfa4f
--- /dev/null
+++ b/doc/doc_files/mousewheely.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MouseWheelY [RCBasic Doc]
+
+
+
+
function MouseWheelY()
+
+ Returns the value of the y axis on the mouse wheel
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/mousex.html b/doc/doc_files/mousex.html
new file mode 100644
index 0000000..4c1bd58
--- /dev/null
+++ b/doc/doc_files/mousex.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MouseX [RCBasic Doc]
+
+
+
+
function MouseX()
+
+ Returns the mouse x position
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/mousey.html b/doc/doc_files/mousey.html
new file mode 100644
index 0000000..eef1ed6
--- /dev/null
+++ b/doc/doc_files/mousey.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MouseY [RCBasic Doc]
+
+
+
+
function MouseY()
+
+ Returns the mouse y position
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/movefile.html b/doc/doc_files/movefile.html
new file mode 100644
index 0000000..3360ea1
--- /dev/null
+++ b/doc/doc_files/movefile.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ MoveFile [RCBasic Doc]
+
+
+
+
function MoveFile(src$, dst$)
+
+ Moves a file on the system.
+
+
+ Returns true if the file was able to be moved and false if it wasn't
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/multiplymatrix.html b/doc/doc_files/multiplymatrix.html
new file mode 100644
index 0000000..6e6c36a
--- /dev/null
+++ b/doc/doc_files/multiplymatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MultiplyMatrix [RCBasic Doc]
+
+
+
+
function MultiplyMatrix(mA, mB, mC)
+
+ Multiply matrix mA and mB and store the result in mC
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/musicexists.html b/doc/doc_files/musicexists.html
new file mode 100644
index 0000000..b93109c
--- /dev/null
+++ b/doc/doc_files/musicexists.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MusicExists [RCBasic Doc]
+
+
+
+
function MusicExists()
+
+ Returns true if there is a music track loaded
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/musicisplaying.html b/doc/doc_files/musicisplaying.html
new file mode 100644
index 0000000..92448dd
--- /dev/null
+++ b/doc/doc_files/musicisplaying.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ MusicIsPlaying [RCBasic Doc]
+
+
+
+
function MusicIsPlaying()
+
+ Returns true if the music track is currently playing
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/nav_bottom.html b/doc/doc_files/nav_bottom.html
new file mode 100644
index 0000000..a8769dc
--- /dev/null
+++ b/doc/doc_files/nav_bottom.html
@@ -0,0 +1,2367 @@
+
+
+
+
+
+
+
+
+ RCBasic Library Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Keyboard and Mouse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/doc_files/nav_top.html b/doc/doc_files/nav_top.html
new file mode 100644
index 0000000..3edc0c1
--- /dev/null
+++ b/doc/doc_files/nav_top.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+ RCBasic
+
+
+
+
+
+
+Variables and Data Types
+Arrays
+User Defined Types
+Constants
+Input and Output
+Conditions
+Loops
+Functions
+Scope
+Comments
+Graphics
+Sound
+
+
+
+
+
+
+
+
+
diff --git a/doc/doc_files/navbar.html b/doc/doc_files/navbar.html
new file mode 100644
index 0000000..6ac2514
--- /dev/null
+++ b/doc/doc_files/navbar.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+ Abs [RCBasic Doc]
+
+
+
+
+
+
+
+ Your browser does not support frames.
+
+
+
+
+
diff --git a/doc/doc_files/numaccels.html b/doc/doc_files/numaccels.html
new file mode 100644
index 0000000..eb309ec
--- /dev/null
+++ b/doc/doc_files/numaccels.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumAccels [RCBasic Doc]
+
+
+
+
function NumAccels()
+
+ Returns the number of accelerometer sensors detected
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numactoranimationloops.html b/doc/doc_files/numactoranimationloops.html
new file mode 100644
index 0000000..faa1a31
--- /dev/null
+++ b/doc/doc_files/numactoranimationloops.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumActorAnimationLoops [RCBasic Doc]
+
+
+
+
function NumActorAnimationLoops(actor)
+
+ Returns the total number of loops the actor is set to repeat the animation for
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numberarraycopy.html b/doc/doc_files/numberarraycopy.html
new file mode 100644
index 0000000..b904d54
--- /dev/null
+++ b/doc/doc_files/numberarraycopy.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ NumberArrayCopy [RCBasic Doc]
+
+
+
+
sub NumberArrayCopy(ByRef src, ByRef dst)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayCopy()
+
+ Related:
+ ArrayCopy
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numberarraydim.html b/doc/doc_files/numberarraydim.html
new file mode 100644
index 0000000..ef20de6
--- /dev/null
+++ b/doc/doc_files/numberarraydim.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ NumberArrayDim [RCBasic Doc]
+
+
+
+
function NumberArrayDim(Byref id)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayDim()
+
+ Related:
+ ArrayDim
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numberarrayfill.html b/doc/doc_files/numberarrayfill.html
new file mode 100644
index 0000000..75c5692
--- /dev/null
+++ b/doc/doc_files/numberarrayfill.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ NumberArrayFill [RCBasic Doc]
+
+
+
+
sub NumberArrayFill(ByRef src, fdata)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayFill()
+
+ Related:
+ ArrayFill
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numberarraysize.html b/doc/doc_files/numberarraysize.html
new file mode 100644
index 0000000..f58f8d9
--- /dev/null
+++ b/doc/doc_files/numberarraysize.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ NumberArraySize [RCBasic Doc]
+
+
+
+
function NumberArraySize(Byref id, array_dim)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArraySize()
+
+ Related:
+ ArraySize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numcommands.html b/doc/doc_files/numcommands.html
new file mode 100644
index 0000000..4ed7c27
--- /dev/null
+++ b/doc/doc_files/numcommands.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumCommands [RCBasic Doc]
+
+
+
+
function NumCommands()
+
+ Returns the number of command line arguments passed to the program on start
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numcpus.html b/doc/doc_files/numcpus.html
new file mode 100644
index 0000000..c55826f
--- /dev/null
+++ b/doc/doc_files/numcpus.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumCPUs [RCBasic Doc]
+
+
+
+
function NumCPUs()
+
+ Returns the number of CPUs (ie. cores) available
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numfingers.html b/doc/doc_files/numfingers.html
new file mode 100644
index 0000000..7a34f2b
--- /dev/null
+++ b/doc/doc_files/numfingers.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumFingers [RCBasic Doc]
+
+
+
+
function NumFingers()
+
+ Returns the number of fingers detected in the current touch event
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numgyros.html b/doc/doc_files/numgyros.html
new file mode 100644
index 0000000..94b5eed
--- /dev/null
+++ b/doc/doc_files/numgyros.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumGyros [RCBasic Doc]
+
+
+
+
function NumGyros()
+
+ Returns the number Gyros detected in the current touch event
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numjoyaxes.html b/doc/doc_files/numjoyaxes.html
new file mode 100644
index 0000000..21e6653
--- /dev/null
+++ b/doc/doc_files/numjoyaxes.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ NumJoyAxes [RCBasic Doc]
+
+
+
+
function NumJoyAxes(joy_num)
+
+ Returns the number of axes detected on a joystick
+
+
+ Axes are normally either the analog sticks or trigger buttons but can be anything with multiple values between no activation and max activation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numjoybuttons.html b/doc/doc_files/numjoybuttons.html
new file mode 100644
index 0000000..9c34d32
--- /dev/null
+++ b/doc/doc_files/numjoybuttons.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumJoyButtons [RCBasic Doc]
+
+
+
+
function NumJoyButtons(joy_num)
+
+ Returns the number of buttons on a joystick
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numjoyhats.html b/doc/doc_files/numjoyhats.html
new file mode 100644
index 0000000..86c63ca
--- /dev/null
+++ b/doc/doc_files/numjoyhats.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumJoyHats [RCBasic Doc]
+
+
+
+
function NumJoyHats(joy_num)
+
+ Returns the number of hats on a joystick
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numjoysticks.html b/doc/doc_files/numjoysticks.html
new file mode 100644
index 0000000..3b1500e
--- /dev/null
+++ b/doc/doc_files/numjoysticks.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumJoysticks [RCBasic Doc]
+
+
+
+
function NumJoysticks()
+
+ Returns the number of joysticks detected
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numjoytrackballs.html b/doc/doc_files/numjoytrackballs.html
new file mode 100644
index 0000000..6eed02e
--- /dev/null
+++ b/doc/doc_files/numjoytrackballs.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumJoyTrackBalls [RCBasic Doc]
+
+
+
+
function NumJoyTrackBalls(joy_num)
+
+ Returns the number of trackballs detected on a joystick
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numsoundchannels.html b/doc/doc_files/numsoundchannels.html
new file mode 100644
index 0000000..5bb039d
--- /dev/null
+++ b/doc/doc_files/numsoundchannels.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ NumSoundChannels [RCBasic Doc]
+
+
+
+
function NumSoundChannels()
+
+ Returns the number of sound channels available
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/numspriteanimationloops.html b/doc/doc_files/numspriteanimationloops.html
new file mode 100644
index 0000000..678cf7a
--- /dev/null
+++ b/doc/doc_files/numspriteanimationloops.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ NumSpriteAnimationLoops [RCBasic Doc]
+
+
+
+
Function NumSpriteAnimationLoops(sprite)
+
+ Returns the number of animation loops the actor has set
+
+ Related:
+ SetSpriteAnimationLoops
+ SetSpriteAnimation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/opencanvas.html b/doc/doc_files/opencanvas.html
new file mode 100644
index 0000000..a455282
--- /dev/null
+++ b/doc/doc_files/opencanvas.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+ OpenCanvas [RCBasic Doc]
+
+
+
+
function OpenCanvas( w, h, viewport_x, viewport_y, viewport_w, viewport_h, mode)
+
+ Returns a canvas for 2D drawing and text rendering
+
+
+
+ w, h - The full size of the canvas
+
+
+ viewport_x, viewport_y - Where to show the canvas in the window
+
+
+ viewport_w, viewport_h - The size of the viewport. For example, a 100 x 100 viewport means that no matter how big the canvas is, only an area of 100 x 100 pixels is displayed.
+
+
+ mode - Set this to 0 for a solid canvas and 1 for a color keyed canvas.
+
+
+ Related:
+ OpenCanvas3D
+ OpenCanvasSpriteLayer
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/opencanvas3d.html b/doc/doc_files/opencanvas3d.html
new file mode 100644
index 0000000..eb07abb
--- /dev/null
+++ b/doc/doc_files/opencanvas3d.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ OpenCanvas3D [RCBasic Doc]
+
+
+
+
function OpenCanvas3D( viewport_x, viewport_y, viewport_w, viewport_h, mode)
+
+ Returns a 3D Canvas for viewing the scene.
+
+
+ Returns -1 if canvas could not be created.
+
+
+ Note: Each 3D canvas has its own camera so you need to make sure you have the canvas active before doing anything with the camera
+
+
+ Note: 2D drawing commands do not work on 3D canvases. You need to open a 2D canvas for drawing images.
+
+ Related:
+ OpenCanvas
+ OpenCanvasSpriteLayer
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/opencanvasspritelayer.html b/doc/doc_files/opencanvasspritelayer.html
new file mode 100644
index 0000000..e214db4
--- /dev/null
+++ b/doc/doc_files/opencanvasspritelayer.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ OpenCanvasSpriteLayer [RCBasic Doc]
+
+
+
+
function OpenCanvasSpriteLayer(w, h, viewport_x, viewport_y, viewport_w, viewport_h)
+
+ Returns a sprite layer. These canvases are used for rendering sprites with the integrated physics engine.
+
+
+ Returns -1 if canvas could not be created.
+
+
+ Note: Sprite Layer must be active when creating sprites.
+
+ Related:
+ OpenCanvas
+ OpenCanvas3D
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/openfile.html b/doc/doc_files/openfile.html
new file mode 100644
index 0000000..ff67eff
--- /dev/null
+++ b/doc/doc_files/openfile.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+ OpenFile [RCBasic Doc]
+
+
+
+
function OpenFile(fileName$, mode)
+
+ Returns an ID for an open file to read or write.
+
+
+ Returns -1 if the file could not be opened.
+
+
+ Possible Text Modes
+
+
+
+ TEXT_INPUT - Open a file for reading text. The file must already exist.
+
+
+ TEXT_OUTPUT - Open a new file for writing text. If the file already exist it will be overwritten.
+
+
+ TEXT_APPEND - Opens a file for appending text to the end of the file. A file will be created if it doesn't already exist.
+
+
+ TEXT_INPUT_PLUS - Opens a file for reading and writing text. The file must already exist.
+
+
+ TEXT_OUTPUT_PLUS - Opens a file for both reading and writing. If the file already exist it will be overwritten.
+
+
+ TEXT_APPEND_PLUS - Opens a file for reading and appending text to the end of the file.
+
+
+
+ Possible Binary Modes
+
+
+
+ BINARY_INPUT - Open a file for reading binary data. The file must already exist.
+
+
+ BINARY_OUTPUT - Open a new file for writing binary data. If the file already exist it will be overwritten.
+
+
+ BINARY_APPEND - Opens a file for appending binary data to the end of the file. A file will be created if it doesn't already exist.
+
+
+ BINARY_INPUT_PLUS - Opens a file for reading and writing binary data. The file must already exist.
+
+
+ BINARY_OUTPUT_PLUS - Opens a file for both reading and writing. If the file already exist it will be overwritten.
+
+
+ BINARY_APPEND_PLUS - Opens a file for reading and appending binary data to the end of the file.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/openspritecanvas.html b/doc/doc_files/openspritecanvas.html
new file mode 100644
index 0000000..bb95fec
--- /dev/null
+++ b/doc/doc_files/openspritecanvas.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ OpenSpriteCanvas [RCBasic Doc]
+
+
+
+
function OpenSpriteCanvas(w, h, viewport_x, viewport_y, viewport_w, viewport_h)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/openurl.html b/doc/doc_files/openurl.html
new file mode 100644
index 0000000..09639c0
--- /dev/null
+++ b/doc/doc_files/openurl.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ OpenURL [RCBasic Doc]
+
+
+
+
function OpenURL(url$)
+
+ Opens a URL in the internet browser
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/openwindow.html b/doc/doc_files/openwindow.html
new file mode 100644
index 0000000..0948563
--- /dev/null
+++ b/doc/doc_files/openwindow.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ OpenWindow [RCBasic Doc]
+
+
+
+
Function OpenWindow( title$, w, h, fullscreen, vsync )
+
+ Opens a graphics window
+
+
+ Returns true if window was opened and false if a window could not be opened
+
+ Related:
+ OpenWindowEx
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/openwindowex.html b/doc/doc_files/openwindowex.html
new file mode 100644
index 0000000..37bb333
--- /dev/null
+++ b/doc/doc_files/openwindowex.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+ OpenWindowEx [RCBasic Doc]
+
+
+
+
function OpenWindowEx(title$, x, y, w, h, mode, aa, stencil_buffer, vsync)
+
+ Opens a graphics window
+
+
+ Returns true if window was opened and false if a window could not be opened
+
+
+
+ w, h - The size of the window
+
+
+ mode - Refer to WindowMode() for values that can be set
+
+
+ aa - The level of AntiAliasing
+
+
+ stencil_buffer (true / false) - determines whether stencil buffer will be used for shadows
+
+
+ vsync - determines if vsync will be enabled for the window
+
+
+ Related:
+ OpenWindow
+ WindowMode
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/operators.html b/doc/doc_files/operators.html
new file mode 100644
index 0000000..ef336f4
--- /dev/null
+++ b/doc/doc_files/operators.html
@@ -0,0 +1,136 @@
+
+
+
+
+
+ RC BASIC Operators
+
+
+
+ OPERATORS
+ DESCRIPTION
+ EXAMPLE
+
+
+ ADDITION ( + )
+ ADDS TWO NUMBERS
+ 1 + 2
+
+
+ SUBTRACTION ( - )
+ SUBTRACTS ONE NUMBER FROM ANOTHER
+ 1 - 2
+
+
+ MULTIPLICATION ( * )
+ MULTIPLIES TWO NUMBERS
+ 1 * 2
+
+
+ DIVISION ( / )
+ DIVIDES ONE NUMBER BY ANOTHER
+ 1 / 2
+
+
+ EXPONENT ( ^ )
+ RAISES ONE NUMBER TO THE POWER OF
+ ANOTHER
+ 1^2
+
+
+ GREATER ( > )
+ RETURNS TRUE IF THE FIRST NUMBER IS GREATER THAN THE SECOND
+ 1 > 2 (RETURNS FALSE)
+
+ 2 > 1 (RETURNS TRUE)
+
+
+ LESS ( < )
+ RETURNS TRUE IF THE FIRST NUMBER IS LESS THAN THE SECOND
+ 1 < 2 (RETURNS TRUE)
+
+ 2 < 1 (RETURNS FALSE)
+
+
+ GREATER OR EQUAL ( >= )
+ RETURNS TRUE IF THE FIRST NUMBER IS GREATER THAN OR EQUAL TO THE
+ SECOND
+ 1 >= 2 (RETURNS FALSE)
+
+ 1 >= 1 (RETURNS TRUE)
+
+ 2 >= 1 (RETURNS TRUE)
+
+
+ LESS OR EQUAL ( <= )
+ RETURNS TRUE IF THE FIRST NUMBER IS LESS THAN OR EQUAL TO THE
+ SECOND
+ 1 <= 2 (RETURNS TRUE)
+
+ 1 <= 1 (RETURNS TRUE)
+
+ 2 <= 1 (RETURNS FALSE)
+
+
+ EQUAL ( = )
+ RETURNS TRUE IF BOTH VALUES ARE EQUAL
+ 1 = 2 (RETURNS FALSE)
+
+ 1 = 1 (RETURNS TRUE)
+
+
+ NOT EQUAL ( <> )
+ RETURNS TRUE IF BOTH VALUES ARE NOT EQUAL
+ 1 <> 2 (RETURNS TRUE)
+
+ 1 <> 1 (RETURNS FALSE)
+
+
+ MODULOUS ( MOD )
+ RETURNS THE REMAINDER OF THE FIRST NUMBER DIVIDED BY THE SECOND
+ 1 MOD 2 (RETURNS 1)
+
+
+ SHIFT LEFT ( SHL )
+ SHIFTS THE BITS IN A NUMBER TO THE LEFT
+ 1 SHL 2 (RETURNS 4)
+
+
+ SHIFT RIGHT ( SHR )
+ SHIFTS THE BITS IN A NUMBER TO THE RIGHT
+ 4 SHR 2 (RETURNS 1)
+
+
+ AND
+ CONDUCTS AND COMPARISON OF TWO VALUES
+ 1 AND 1
+
+
+ OR
+ CONDUCTS OR COMPARISON OF TWO VALUES
+ 1 OR 1
+
+
+ XOR
+ CONDUCTS EXCLUSIVE-OR COMPARISON OF TWO VALUES
+ 1 XOR 1
+
+
+ NOT
+ CONDUCTS NOT OPERATION ON A VALUE
+ NOT 1
+
+
+ STRING ADD ( + )
+ COMBINES TWO STRING VALUES
+
+ "HELLO"+"WORLD"
+
+
+ END OF INSTRUCTION ( : )
+ TELLS COMPILER TO END CURRENT INSTRUCTION AND READ THE FOLLOWING CODE AS NEW INSTRUCTION
+ X = 5: PRINT X
+
+
+
+
diff --git a/doc/doc_files/orbit.html b/doc/doc_files/orbit.html
new file mode 100644
index 0000000..cdd1f2d
--- /dev/null
+++ b/doc/doc_files/orbit.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ OrBit [RCBasic Doc]
+
+
+
+
function OrBit(a, b)
+
+ Returns the value of the bitwise OR operation on the operands A and B
+
+ Related:
+ XOrBit
+ AndBit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/os.html b/doc/doc_files/os.html
new file mode 100644
index 0000000..49d8c68
--- /dev/null
+++ b/doc/doc_files/os.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ OS$ [RCBasic Doc]
+
+
+
+
function OS$()
+
+ Returns the runtimes native operating system.
+
+
+ Possible Return Values
+
+
+
+ WINDOWS
+
+
+ LINUX
+
+
+ MAC
+
+
+ ANDROID
+
+
+ IOS
+
+
+ WEB
+
+
+
+ Note: This specifically returns the OS$ the runtime was built for so if you have a windows executable running under wine this function will return "WINDOWS"
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/particleisusingeverymeshvertex.html b/doc/doc_files/particleisusingeverymeshvertex.html
new file mode 100644
index 0000000..6cba404
--- /dev/null
+++ b/doc/doc_files/particleisusingeverymeshvertex.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ particleIsUsingEveryMeshVertex [RCBasic Doc]
+
+
+
+
function particleIsUsingEveryMeshVertex( actor)
+
+ Returns true if emitter emits min<->max particles for every vertex or to pick min<->max vertices.
+
+ Related:
+ useParticleEveryMeshVertex
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/particleisusingnormaldirection.html b/doc/doc_files/particleisusingnormaldirection.html
new file mode 100644
index 0000000..366f7c2
--- /dev/null
+++ b/doc/doc_files/particleisusingnormaldirection.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ particleIsUsingNormalDirection [RCBasic Doc]
+
+
+
+
function particleIsUsingNormalDirection( actor)
+
+ Returns true if particle emitter is using vertex normal for direction, or direction specified.
+
+ Related:
+ useParticleNormalDirection
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/particleisusingoutlineonly.html b/doc/doc_files/particleisusingoutlineonly.html
new file mode 100644
index 0000000..ac8c2f7
--- /dev/null
+++ b/doc/doc_files/particleisusingoutlineonly.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ particleIsUsingOutlineOnly [RCBasic Doc]
+
+
+
+
function particleIsUsingOutlineOnly( actor)
+
+ Returns true if not using draw points inside the cylinder
+
+
+ Note: Only applies to cylinder emitter
+
+ Related:
+ useParticleOutlineOnly
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/pausemusic.html b/doc/doc_files/pausemusic.html
new file mode 100644
index 0000000..0bc4b09
--- /dev/null
+++ b/doc/doc_files/pausemusic.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ PauseMusic [RCBasic Doc]
+
+
+
+
sub PauseMusic()
+
+ Pauses the currently loaded music track. Unlike StopMusic(), paused music can be resumed from its current position.
+
+ Related:
+ ResumeMusic
+ StopMusic
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/pausesound.html b/doc/doc_files/pausesound.html
new file mode 100644
index 0000000..004094c
--- /dev/null
+++ b/doc/doc_files/pausesound.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ PauseSound [RCBasic Doc]
+
+
+
+
sub PauseSound(channel)
+
+ Pauses a sound at its current position.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/pausevideo.html b/doc/doc_files/pausevideo.html
new file mode 100644
index 0000000..302c6e2
--- /dev/null
+++ b/doc/doc_files/pausevideo.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ PauseVideo [RCBasic Doc]
+
+
+
+
sub PauseVideo()
+
+ Pauses the currently loaded video track
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/playmusic.html b/doc/doc_files/playmusic.html
new file mode 100644
index 0000000..30508cc
--- /dev/null
+++ b/doc/doc_files/playmusic.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ PlayMusic [RCBasic Doc]
+
+
+
+
sub PlayMusic(mLoops)
+
+ Plays music for set number of loops.
+
+
+ Note: If you only want to play the music once, set this to 0.
+
+
+ Note: Set this to -1 to play infinitely.
+
+ Related:
+ StopMusic
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/playsound.html b/doc/doc_files/playsound.html
new file mode 100644
index 0000000..2ea7d2a
--- /dev/null
+++ b/doc/doc_files/playsound.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ PlaySound [RCBasic Doc]
+
+
+
+
sub PlaySound(slot, channel, loops)
+
+ Plays a sound on the given channel for the given number of loops.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/playsoundtimed.html b/doc/doc_files/playsoundtimed.html
new file mode 100644
index 0000000..24df3ab
--- /dev/null
+++ b/doc/doc_files/playsoundtimed.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ PlaySoundTimed [RCBasic Doc]
+
+
+
+
sub PlaySoundTimed(slot, channel, loops, ms)
+
+ Plays sound for a given number of loops until the given number of milliseconds is reached.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/playvideo.html b/doc/doc_files/playvideo.html
new file mode 100644
index 0000000..23a21b6
--- /dev/null
+++ b/doc/doc_files/playvideo.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ PlayVideo [RCBasic Doc]
+
+
+
+
sub PlayVideo(vLoops)
+
+ Plays the currently loaded video for a set number of loops.
+
+
+ Note: Set this to 0 to play the video once.
+
+
+ Note: Set this to -1 to the video infinitely.
+
+ Related:
+ StopVideo
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/pointinquad.html b/doc/doc_files/pointinquad.html
new file mode 100644
index 0000000..e6dbc63
--- /dev/null
+++ b/doc/doc_files/pointinquad.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ PointInQuad [RCBasic Doc]
+
+
+
+
function PointInQuad(px, py, x1, y1, x2, y2, x3, y3, x4, y4)
+
+ Returns true if the point (px, py) is in the quad (x1, y1) to (x4, y4)
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/pointintri.html b/doc/doc_files/pointintri.html
new file mode 100644
index 0000000..5d3ea4a
--- /dev/null
+++ b/doc/doc_files/pointintri.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ PointInTri [RCBasic Doc]
+
+
+
+
function PointInTri(px, py, x1, y1, x2, y2, x3, y3)
+
+ Returns true if the point (px, py) is in the quad (x1, y1) to (x3, y3)
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/poly.html b/doc/doc_files/poly.html
new file mode 100644
index 0000000..5aee9d4
--- /dev/null
+++ b/doc/doc_files/poly.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+ Poly [RCBasic Doc]
+
+
+
+
sub Poly(n, byref x, byref y)
+
+ Draws a polygon
+
+
+
+ n - Number of points in the polygon
+
+
+ x, y - Array where the points are stored
+
+
+
+ Dim x[ 3 ] , y[ 3 ]
+ x[ 0 ] = 50 : y[ 0 ] = 50
+ x[ 1 ] = 90 : y[ 1 ] = 90
+ x[ 2 ] = 10 : y[ 1 ] = 90
+
+ Poly( 3 , x, y)
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/pop_n.html b/doc/doc_files/pop_n.html
new file mode 100644
index 0000000..10b41bd
--- /dev/null
+++ b/doc/doc_files/pop_n.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Pop_N [RCBasic Doc]
+
+
+
+
function Pop_N( num_stack )
+
+ Removes the top number off a number stack and returns it
+
+ Related:
+ Push_N
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/pop_s.html b/doc/doc_files/pop_s.html
new file mode 100644
index 0000000..c710f63
--- /dev/null
+++ b/doc/doc_files/pop_s.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Pop_S$ [RCBasic Doc]
+
+
+
+
function Pop_S$( str_stack )
+
+ Removes the top string off a string stack and returns it
+
+ Related:
+ Push_S
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/prefpath.html b/doc/doc_files/prefpath.html
new file mode 100644
index 0000000..9294b7b
--- /dev/null
+++ b/doc/doc_files/prefpath.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ PrefPath$ [RCBasic Doc]
+
+
+
+
function PrefPath$(org_name$, app_name$)
+
+ Returns the preferred path for storing files.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/preupdate.html b/doc/doc_files/preupdate.html
new file mode 100644
index 0000000..b52ca13
--- /dev/null
+++ b/doc/doc_files/preupdate.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ PreUpdate [RCBasic Doc]
+
+
+
+
Sub PreUpdate( )
+
+ Processes physics for sprites and actors.
+
+
+ This is useful if you need to know the post solve positions and rotations prior to drawing them.
+
+ Related:
+ Update
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/pset.html b/doc/doc_files/pset.html
new file mode 100644
index 0000000..dca51ca
--- /dev/null
+++ b/doc/doc_files/pset.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Pset [RCBasic Doc]
+
+
+
+
sub Pset(x,y)
+
+ Draws a pixel
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/push_n.html b/doc/doc_files/push_n.html
new file mode 100644
index 0000000..8573bfe
--- /dev/null
+++ b/doc/doc_files/push_n.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Push_N [RCBasic Doc]
+
+
+
+
sub Push_N( num_stack, n )
+
+ Pushes a number onto a number stack
+
+ Related:
+ Pop_N
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/push_s.html b/doc/doc_files/push_s.html
new file mode 100644
index 0000000..72b28f3
--- /dev/null
+++ b/doc/doc_files/push_s.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Push_S [RCBasic Doc]
+
+
+
+
sub Push_S( str_stack, s$ )
+
+ Pushes a string onto a string stack
+
+ Related:
+ Pop_S
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/queryaudiospec.html b/doc/doc_files/queryaudiospec.html
new file mode 100644
index 0000000..019d57a
--- /dev/null
+++ b/doc/doc_files/queryaudiospec.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ QueryAudioSpec [RCBasic Doc]
+
+
+
+
function QueryAudioSpec(ByRef freq, ByRef format, ByRef channels)
+
+ Gets the frequency, output format, and number of channels for the audio device being used.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/radians.html b/doc/doc_files/radians.html
new file mode 100644
index 0000000..bda2bd4
--- /dev/null
+++ b/doc/doc_files/radians.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Radians [RCBasic Doc]
+
+
+
+
function Radians(d)
+
+ Returns an angle converted from degrees to radians
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/raisewindow.html b/doc/doc_files/raisewindow.html
new file mode 100644
index 0000000..dad4828
--- /dev/null
+++ b/doc/doc_files/raisewindow.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RaiseWindow [RCBasic Doc]
+
+
+
+
sub RaiseWindow( )
+
+ Places the current window on top of the other windows.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rand.html b/doc/doc_files/rand.html
new file mode 100644
index 0000000..33190bf
--- /dev/null
+++ b/doc/doc_files/rand.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Rand [RCBasic Doc]
+
+
+
+
function Rand(n)
+
+ Returns a random number between 0 and n.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/randomize.html b/doc/doc_files/randomize.html
new file mode 100644
index 0000000..704a9f1
--- /dev/null
+++ b/doc/doc_files/randomize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Randomize [RCBasic Doc]
+
+
+
+
function Randomize(n)
+
+ Seeds the random number generator
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/randomizematrix.html b/doc/doc_files/randomizematrix.html
new file mode 100644
index 0000000..ab0a269
--- /dev/null
+++ b/doc/doc_files/randomizematrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RandomizeMatrix [RCBasic Doc]
+
+
+
+
sub RandomizeMatrix(mA, vmin, vmax)
+
+ Stores random values between vmin and vmax in the matrix mA
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rc_cover_page.html b/doc/doc_files/rc_cover_page.html
new file mode 100755
index 0000000..0b8d669
--- /dev/null
+++ b/doc/doc_files/rc_cover_page.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+ RC BASIC Title
+
+
+
+
+
+
+
RC BASIC
+
+
+
+
+ The Revolution will be written in BASIC
+
diff --git a/doc/doc_files/readbyte.html b/doc/doc_files/readbyte.html
new file mode 100644
index 0000000..fc629ef
--- /dev/null
+++ b/doc/doc_files/readbyte.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ReadByte [RCBasic Doc]
+
+
+
+
function ReadByte(stream)
+
+ Reads a byte from a file.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/readbytebuffer.html b/doc/doc_files/readbytebuffer.html
new file mode 100644
index 0000000..81f9ac9
--- /dev/null
+++ b/doc/doc_files/readbytebuffer.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ ReadByteBuffer [RCBasic Doc]
+
+
+
+
function ReadByteBuffer(stream, ByRef buf, buf_size)
+
+ Reads a number of bytes from a file stream to an array.
+
+
+
+ stream - A open file
+
+
+ buffer - An array of bytes
+
+
+ buffer_size - The number of bytes to write from buffer (This should be less than size of the buffer)
+
+
+ Related:
+ ReadByte
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/readinput_settext.html b/doc/doc_files/readinput_settext.html
new file mode 100644
index 0000000..8bf830d
--- /dev/null
+++ b/doc/doc_files/readinput_settext.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ReadInput_SetText [RCBasic Doc]
+
+
+
+
sub ReadInput_SetText(txt$)
+
+ Sets the text in the ReadInput buffer.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/readinput_start.html b/doc/doc_files/readinput_start.html
new file mode 100644
index 0000000..ef7d4c9
--- /dev/null
+++ b/doc/doc_files/readinput_start.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ReadInput_Start [RCBasic Doc]
+
+
+
+
sub ReadInput_Start()
+
+ Start reading input from the keyboard.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/readinput_stop.html b/doc/doc_files/readinput_stop.html
new file mode 100644
index 0000000..daa4832
--- /dev/null
+++ b/doc/doc_files/readinput_stop.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ReadInput_Stop [RCBasic Doc]
+
+
+
+
sub ReadInput_Stop()
+
+ Stops reading input from the keyboard.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/readinput_text.html b/doc/doc_files/readinput_text.html
new file mode 100644
index 0000000..d7cf0c5
--- /dev/null
+++ b/doc/doc_files/readinput_text.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ReadInput_Text$ [RCBasic Doc]
+
+
+
+
function ReadInput_Text$()
+
+ Returns the text read from the keyboard.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/readinput_togglebackspace.html b/doc/doc_files/readinput_togglebackspace.html
new file mode 100644
index 0000000..5e944f6
--- /dev/null
+++ b/doc/doc_files/readinput_togglebackspace.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ReadInput_ToggleBackspace [RCBasic Doc]
+
+
+
+
sub ReadInput_ToggleBackspace(flag)
+
+ Determines whether the backspace is applied during ReadInput events.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/readline.html b/doc/doc_files/readline.html
new file mode 100644
index 0000000..0ddb1ec
--- /dev/null
+++ b/doc/doc_files/readline.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ReadLine$ [RCBasic Doc]
+
+
+
+
function ReadLine$(stream)
+
+ Returns the current line in the file.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rect.html b/doc/doc_files/rect.html
new file mode 100644
index 0000000..0f4b6d8
--- /dev/null
+++ b/doc/doc_files/rect.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Rect [RCBasic Doc]
+
+
+
+
sub Rect(x, y, w, h)
+
+ Draws a rectangle to the current canvas.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rectfill.html b/doc/doc_files/rectfill.html
new file mode 100644
index 0000000..12826a9
--- /dev/null
+++ b/doc/doc_files/rectfill.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RectFill [RCBasic Doc]
+
+
+
+
sub RectFill(x, y, w, h)
+
+ Draws a filled rectangle on the current canvas.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/removeactorshadow.html b/doc/doc_files/removeactorshadow.html
new file mode 100644
index 0000000..77422f1
--- /dev/null
+++ b/doc/doc_files/removeactorshadow.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ RemoveActorShadow [RCBasic Doc]
+
+
+
+
sub RemoveActorShadow( actor )
+
+ Stops shadow casting on an actor
+
+ Related:
+ AddActorShadow
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/removedir.html b/doc/doc_files/removedir.html
new file mode 100644
index 0000000..1afb098
--- /dev/null
+++ b/doc/doc_files/removedir.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RemoveDir [RCBasic Doc]
+
+
+
+
function RemoveDir(p$)
+
+ Removes a directory.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/removefile.html b/doc/doc_files/removefile.html
new file mode 100644
index 0000000..b784ad4
--- /dev/null
+++ b/doc/doc_files/removefile.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RemoveFile [RCBasic Doc]
+
+
+
+
function RemoveFile(fileName$)
+
+ Removes a file.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/removescenesky.html b/doc/doc_files/removescenesky.html
new file mode 100644
index 0000000..4a780b1
--- /dev/null
+++ b/doc/doc_files/removescenesky.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ RemoveSceneSky [RCBasic Doc]
+
+
+
+
sub RemoveSceneSky( )
+
+ Removes the sky from the current 3D scene
+
+ Related:
+ AddSceneSkyBox
+ AddSceneSkyDome
+ AddSceneSkyDomeEx
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/renamefile.html b/doc/doc_files/renamefile.html
new file mode 100644
index 0000000..afd1e17
--- /dev/null
+++ b/doc/doc_files/renamefile.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RenameFile [RCBasic Doc]
+
+
+
+
function RenameFile(src$, dst$)
+
+ Renames src$ file to dst$ file.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/replace.html b/doc/doc_files/replace.html
new file mode 100644
index 0000000..944c221
--- /dev/null
+++ b/doc/doc_files/replace.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Replace$ [RCBasic Doc]
+
+
+
+
function Replace$(src$, tgt$, rpc$)
+
+ Replaces all occurrences of tgt$ with rpc$.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/replacesubstr.html b/doc/doc_files/replacesubstr.html
new file mode 100644
index 0000000..6d6cd59
--- /dev/null
+++ b/doc/doc_files/replacesubstr.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ReplaceSubstr$ [RCBasic Doc]
+
+
+
+
function ReplaceSubstr$(src$, rpc$, pos)
+
+ Overwrites the characters at the given position in src$ with rpc$.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/restorewindow.html b/doc/doc_files/restorewindow.html
new file mode 100644
index 0000000..049b24d
--- /dev/null
+++ b/doc/doc_files/restorewindow.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RestoreWindow [RCBasic Doc]
+
+
+
+
sub RestoreWindow( )
+
+ Restores the window if minimized
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/resumemusic.html b/doc/doc_files/resumemusic.html
new file mode 100644
index 0000000..769b616
--- /dev/null
+++ b/doc/doc_files/resumemusic.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ResumeMusic [RCBasic Doc]
+
+
+
+
sub ResumeMusic()
+
+ Resumes playing music.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/resumesound.html b/doc/doc_files/resumesound.html
new file mode 100644
index 0000000..c4cda35
--- /dev/null
+++ b/doc/doc_files/resumesound.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ResumeSound [RCBasic Doc]
+
+
+
+
sub ResumeSound(channel)
+
+ Resumes playing sound on the given channel.
+
+ Related:
+ PauseSound
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/resumevideo.html b/doc/doc_files/resumevideo.html
new file mode 100644
index 0000000..2b97a66
--- /dev/null
+++ b/doc/doc_files/resumevideo.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ResumeVideo [RCBasic Doc]
+
+
+
+
sub ResumeVideo()
+
+ Resumes the video
+
+ Related:
+ PauseVideo
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/reverse.html b/doc/doc_files/reverse.html
new file mode 100644
index 0000000..b9103fc
--- /dev/null
+++ b/doc/doc_files/reverse.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Reverse$ [RCBasic Doc]
+
+
+
+
function Reverse$(src$)
+
+ Returns src$ with the characters in reverse order.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rewindmusic.html b/doc/doc_files/rewindmusic.html
new file mode 100644
index 0000000..98096ee
--- /dev/null
+++ b/doc/doc_files/rewindmusic.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RewindMusic [RCBasic Doc]
+
+
+
+
sub RewindMusic()
+
+ Rewinds the music track.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rgb.html b/doc/doc_files/rgb.html
new file mode 100644
index 0000000..c953bb1
--- /dev/null
+++ b/doc/doc_files/rgb.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RGB [RCBasic Doc]
+
+
+
+
function RGB(r,g,b)
+
+ Returns a 32-bit color value.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rgba.html b/doc/doc_files/rgba.html
new file mode 100644
index 0000000..e190b43
--- /dev/null
+++ b/doc/doc_files/rgba.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ RGBA [RCBasic Doc]
+
+
+
+
function RGBA(r,g,b,a)
+
+ Returns a 32-bit color value.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/right.html b/doc/doc_files/right.html
new file mode 100644
index 0000000..bb0ad52
--- /dev/null
+++ b/doc/doc_files/right.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Right$ [RCBasic Doc]
+
+
+
+
function Right$(src$, n)
+
+ Returns n number of characters from the right side of src$.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rotateactor.html b/doc/doc_files/rotateactor.html
new file mode 100644
index 0000000..be24335
--- /dev/null
+++ b/doc/doc_files/rotateactor.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ RotateActor [RCBasic Doc]
+
+
+
+
sub RotateActor( actor, x, y, z )
+
+ Rotates and actor a given number of degrees from its current orientation
+
+ Related:
+ SetActorRotation
+ GetActorRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rotatecamera.html b/doc/doc_files/rotatecamera.html
new file mode 100644
index 0000000..c8d27af
--- /dev/null
+++ b/doc/doc_files/rotatecamera.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ RotateCamera [RCBasic Doc]
+
+
+
+
sub RotateCamera( x, y, z)
+
+ Rotates the camera a given number of degrees from its current orientation
+
+ Related:
+ SetCameraRotation
+ GetCameraRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rotatesprite.html b/doc/doc_files/rotatesprite.html
new file mode 100644
index 0000000..9d03bdb
--- /dev/null
+++ b/doc/doc_files/rotatesprite.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ RotateSprite [RCBasic Doc]
+
+
+
+
Sub RotateSprite(sprite, angle)
+
+ Sets the angle the sprite is rotated by relative to its current rotation
+
+ Related:
+ SetSpriteRotation
+ GetSpriteRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/round.html b/doc/doc_files/round.html
new file mode 100644
index 0000000..c150be5
--- /dev/null
+++ b/doc/doc_files/round.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Round [RCBasic Doc]
+
+
+
+
function Round(n)
+
+ Rounds n to the nearest whole number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/rtrim.html b/doc/doc_files/rtrim.html
new file mode 100644
index 0000000..2cfea1a
--- /dev/null
+++ b/doc/doc_files/rtrim.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Rtrim$ [RCBasic Doc]
+
+
+
+
function Rtrim$(src$)
+
+ Returns src$ with all the spaces after the last non-space character removed.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/runtime.html b/doc/doc_files/runtime.html
new file mode 100644
index 0000000..0b2322c
--- /dev/null
+++ b/doc/doc_files/runtime.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Runtime$ [RCBasic Doc]
+
+
+
+
function Runtime$()
+
+ Returns the path to the RCBasic runtime that launched the current program
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/runtime_utility_message.html b/doc/doc_files/runtime_utility_message.html
new file mode 100644
index 0000000..4974d86
--- /dev/null
+++ b/doc/doc_files/runtime_utility_message.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Runtime_Utility_Message$ [RCBasic Doc]
+
+
+
+
function Runtime_Utility_Message$(arg$)
+
+ Passes arg$ to the rc_intern_runtime_utility() function in the rc_media.h file. The function returns a string.
+
+
+ Note: On IOS there a file in the project called rcbasic_ios_native.h which is already setup for you to add your C++ code.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/scalarmatrix.html b/doc/doc_files/scalarmatrix.html
new file mode 100644
index 0000000..003f199
--- /dev/null
+++ b/doc/doc_files/scalarmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ScalarMatrix [RCBasic Doc]
+
+
+
+
sub ScalarMatrix(mA, mB, s_value)
+
+ Multiplies values in matrix mA by scalar value and stores the results in mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/scalarmatrixcolumns.html b/doc/doc_files/scalarmatrixcolumns.html
new file mode 100644
index 0000000..447d3b9
--- /dev/null
+++ b/doc/doc_files/scalarmatrixcolumns.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ScalarMatrixColumns [RCBasic Doc]
+
+
+
+
function ScalarMatrixColumns(mA, mB, c, num_cols, s_value)
+
+ Multiplies values in the specified columns of matrix mA by scalar value and stores the results in mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/scalarmatrixrows.html b/doc/doc_files/scalarmatrixrows.html
new file mode 100644
index 0000000..4f6d033
--- /dev/null
+++ b/doc/doc_files/scalarmatrixrows.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ScalarMatrixRows [RCBasic Doc]
+
+
+
+
function ScalarMatrixRows(mA, mB, r, num_rows, s_value)
+
+ Multiplies values in the specified rows of matrix mA by scalar value and stores the results in mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/scaleactor.html b/doc/doc_files/scaleactor.html
new file mode 100644
index 0000000..2fdd549
--- /dev/null
+++ b/doc/doc_files/scaleactor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ScaleActor [RCBasic Doc]
+
+
+
+
sub ScaleActor( actor, x, y, z )
+
+ Multiplies the actor's current scale by the vector given
+
+ Related:
+ SetActorScale
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/scalesprite.html b/doc/doc_files/scalesprite.html
new file mode 100644
index 0000000..ab5e780
--- /dev/null
+++ b/doc/doc_files/scalesprite.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ScaleSprite [RCBasic Doc]
+
+
+
+
Sub ScaleSprite(sprite, x, y)
+
+ Sets the scale of a sprite relative to its current scale
+
+ Related:
+ SetSpriteScale
+ GetSpriteScale
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/scaleterraintexture.html b/doc/doc_files/scaleterraintexture.html
new file mode 100644
index 0000000..e4f766a
--- /dev/null
+++ b/doc/doc_files/scaleterraintexture.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ ScaleTerrainTexture [RCBasic Doc]
+
+
+
+
sub ScaleTerrainTexture( actor, scale, scale2 )
+
+ Scales the base texture, similar to makePlanarTextureMapping.
+
+
+
+ scale - The scaling amount. Values above 1.0 increase the number of time the texture is drawn on the terrain. Values below 0 will decrease the number of times the texture is drawn on the terrain. Using negative values will flip the texture, as well as still scaling it.
+
+
+ scale2 - If set to 0 (default value), this will set the second texture coordinate set to the same values as in the first set. If this is another value than zero, it will scale the second texture coordinate set by this value.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/scope.html b/doc/doc_files/scope.html
new file mode 100644
index 0000000..56fc2a5
--- /dev/null
+++ b/doc/doc_files/scope.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ RCBasic Scope [RCBasic Doc]
+
+
+
+
SCOPE
+
+ Scope refers to where you are able to access a variable. Basically variables cannot be accessed from outside the scope they are created in. Look at the following:
+
+
+ A = 5
+
+ While A < 10
+ B = 1
+ A = A + 1
+ Wend
+
+ Print B
+
+
+ The above program WILL NOT COMPILE. That is because the variable B was created inside the scope of the WHILE loop and nothing outside the WHILE loop will be able to access it. The variable A was created outside the WHILE loop so the variable A could be used anywhere in this example. So a variable can go into a deeper scope than where it was created but it cannot go to a lesser scope than where it was created. A scope deepens every time a new block is started. Blocks refer to the code within a loop, within a Function, or within a Sub Routine.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/seek.html b/doc/doc_files/seek.html
new file mode 100644
index 0000000..b4d0282
--- /dev/null
+++ b/doc/doc_files/seek.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Seek [RCBasic Doc]
+
+
+
+
function Seek(stream, pos)
+
+ Sets the position within a file to read from or write to.
+
+ Related:
+ Tell
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorangularfactor.html b/doc/doc_files/setactorangularfactor.html
new file mode 100644
index 0000000..8edd8fc
--- /dev/null
+++ b/doc/doc_files/setactorangularfactor.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ SetActorAngularFactor [RCBasic Doc]
+
+
+
+
sub SetActorAngularFactor( actor, x, y, z)
+
+ Sets an actor's angular factor.
+
+
+ The angular factor determines how the actor responds to angular velocity or torque.
+
+ Related:
+ GetActorAngularFactor
+ SetActorAngularFactor
+ SetActorLinearFactor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorangularvelocitylocal.html b/doc/doc_files/setactorangularvelocitylocal.html
new file mode 100644
index 0000000..dd326d2
--- /dev/null
+++ b/doc/doc_files/setactorangularvelocitylocal.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ setActorAngularVelocityLocal [RCBasic Doc]
+
+
+
+
sub setActorAngularVelocityLocal( actor, x, y, z)
+
+ Sets an actor's Angular Velocity
+
+ Related:
+ GetActorAngularVelocityWorld
+ GetActorAngularVelocityLocal
+ SetActorAngularVelocityWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorangularvelocityworld.html b/doc/doc_files/setactorangularvelocityworld.html
new file mode 100644
index 0000000..568a1fd
--- /dev/null
+++ b/doc/doc_files/setactorangularvelocityworld.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ setActorAngularVelocityWorld [RCBasic Doc]
+
+
+
+
sub setActorAngularVelocityWorld( actor, x, y, z)
+
+ Sets an actor's Angular Velocity
+
+ Related:
+ GetActorAngularVelocityWorld
+ GetActorAngularVelocityLocal
+ SetActorAngularVelocityLocal
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactoranimation.html b/doc/doc_files/setactoranimation.html
new file mode 100644
index 0000000..572de60
--- /dev/null
+++ b/doc/doc_files/setactoranimation.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ SetActorAnimation [RCBasic Doc]
+
+
+
+
sub SetActorAnimation( actor, animation, num_loops)
+
+ Sets the current animation for an actor to start playing
+
+
+ Notes on num_loops
+
+
+
+ num_loops is the number of times to loop the animation after its done playing. To play the animation once, set num_loops to 0.
+
+
+ To loop an animation infinitely, set num_loops to -1
+
+
+ Related:
+ CreateActorAnimation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactoranimationframes.html b/doc/doc_files/setactoranimationframes.html
new file mode 100644
index 0000000..2e1687e
--- /dev/null
+++ b/doc/doc_files/setactoranimationframes.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetActorAnimationFrames [RCBasic Doc]
+
+
+
+
sub SetActorAnimationFrames(actor, animation, start_frame, end_frame)
+
+ Changes the frames that plays in an actor's animation
+
+ Related:
+ CreateActorAnimation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactoranimationspeed.html b/doc/doc_files/setactoranimationspeed.html
new file mode 100644
index 0000000..20d9ced
--- /dev/null
+++ b/doc/doc_files/setactoranimationspeed.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetActorAnimationSpeed [RCBasic Doc]
+
+
+
+
sub SetActorAnimationSpeed( actor, animation, speed )
+
+ Set the FPS of an actor animation
+
+ Related:
+ GetActorAnimationSpeed
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorautoculling.html b/doc/doc_files/setactorautoculling.html
new file mode 100644
index 0000000..b7bc3d6
--- /dev/null
+++ b/doc/doc_files/setactorautoculling.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ SetActorAutoCulling [RCBasic Doc]
+
+
+
+
sub SetActorAutoCulling( actor, cull_type )
+
+ Sets the automatic culling state for an actor
+
+
+ Possible Culling States
+
+
+
+ AUTOCULLING_OFF
+
+
+ AUTOCULLING_BOX
+
+
+ AUTOCULLING_FRUSTUM_BOX
+
+
+ AUTOCULLING_FRUSTUM_SPHERE
+
+
+ AUTOCULLING_OCC_QUERY
+
+
+ Related:
+ GetActorAutoCulling
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorcollisionshape.html b/doc/doc_files/setactorcollisionshape.html
new file mode 100644
index 0000000..762c079
--- /dev/null
+++ b/doc/doc_files/setactorcollisionshape.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+ SetActorCollisionShape [RCBasic Doc]
+
+
+
+
sub SetActorCollisionShape( actor, shape_type, mass)
+
+ Sets the actor's collision shape
+
+
+ Shape Types:
+
+
+
+ SHAPE_TYPE_NONE
+
+
+ SHAPE_TYPE_BOX
+
+
+ SHAPE_TYPE_SPHERE
+
+
+ SHAPE_TYPE_CYLINDER
+
+
+ SHAPE_TYPE_CAPSULE
+
+
+ SHAPE_TYPE_CONE
+
+
+ SHAPE_TYPE_CONVEXHULL
+
+
+ SHAPE_TYPE_TRIMESH
+
+
+ Related:
+ GetActorCollisionShape
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactordamping.html b/doc/doc_files/setactordamping.html
new file mode 100644
index 0000000..decd63e
--- /dev/null
+++ b/doc/doc_files/setactordamping.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ setActorDamping [RCBasic Doc]
+
+
+
+
sub setActorDamping( actor, lin_damping, ang_damping)
+
+ Sets the linear and angular damping for an actor
+
+ Related:
+ GetActorLinearDamping
+ GetActorAngularDamping
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorframe.html b/doc/doc_files/setactorframe.html
new file mode 100644
index 0000000..abca648
--- /dev/null
+++ b/doc/doc_files/setactorframe.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetActorFrame [RCBasic Doc]
+
+
+
+
sub SetActorFrame( actor, frame )
+
+ Sets the current frame of an actor
+
+
+ Note: This function will set the actor's animation to 0 which is a default 1 frame animation that is created when the actor is created.
+
+ Related:
+ GetActorFrame
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorgravity.html b/doc/doc_files/setactorgravity.html
new file mode 100644
index 0000000..707fdf7
--- /dev/null
+++ b/doc/doc_files/setactorgravity.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetActorGravity [RCBasic Doc]
+
+
+
+
sub SetActorGravity( actor, x, y, z )
+
+ Sets the gravity vector of an actor.
+
+ Related:
+ SetGravity3D
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorinverseinertiadiaglocal.html b/doc/doc_files/setactorinverseinertiadiaglocal.html
new file mode 100644
index 0000000..1d4290f
--- /dev/null
+++ b/doc/doc_files/setactorinverseinertiadiaglocal.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetActorInverseInertiaDiagLocal [RCBasic Doc]
+
+
+
+
sub SetActorInverseInertiaDiagLocal( actor, x, y, z)
+
+ Sets the inverse of the inertia tensor's diagonal components in an actor's local space. This is used to compute how the actor reacts to rotational forces (torques) applied to it.
+
+ Related:
+ GetActorInverseInertiaDiagLocal
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorlinearfactor.html b/doc/doc_files/setactorlinearfactor.html
new file mode 100644
index 0000000..b4b4961
--- /dev/null
+++ b/doc/doc_files/setactorlinearfactor.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ SetActorLinearFactor [RCBasic Doc]
+
+
+
+
sub SetActorLinearFactor( actor, x, y, z)
+
+ Sets an actor's linear factor.
+
+
+ The linear factor determines how the actor responds to linear velocity or force.
+
+ Related:
+ GetActorLinearFactor
+ SetActorAngularFactor
+ GetActorAngularFactor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorlinearvelocitylocal.html b/doc/doc_files/setactorlinearvelocitylocal.html
new file mode 100644
index 0000000..40bddcc
--- /dev/null
+++ b/doc/doc_files/setactorlinearvelocitylocal.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ setActorLinearVelocityLocal [RCBasic Doc]
+
+
+
+
sub setActorLinearVelocityLocal( actor, x, y, z)
+
+ Sets actor's linear velocity
+
+ Related:
+ GetActorLinearVelocityLocal
+ SetActorLinearVelocityWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorlinearvelocityworld.html b/doc/doc_files/setactorlinearvelocityworld.html
new file mode 100644
index 0000000..c98f700
--- /dev/null
+++ b/doc/doc_files/setactorlinearvelocityworld.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ setActorLinearVelocityWorld [RCBasic Doc]
+
+
+
+
sub setActorLinearVelocityWorld( actor, x, y, z)
+
+ Sets actor's linear velocity
+
+ Related:
+ SetActorLinearVelocityLocal
+ GetActorLinearVelocityWorld
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactormassproperties.html b/doc/doc_files/setactormassproperties.html
new file mode 100644
index 0000000..1453fc5
--- /dev/null
+++ b/doc/doc_files/setactormassproperties.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ setActorMassProperties [RCBasic Doc]
+
+
+
+
sub setActorMassProperties( actor, mass, inertia_x, inertia_y, inertia_z)
+
+ Set the mass and local inertia of an actor. This is crucial for defining how the actor behaves under the influence of forces and torques, especially when it comes to simulating realistic motion and rotation.
+
+
+ Mass
+
+
+
+ The mass of an actor defines how much it resists changes in its motion when forces are applied. A heavier object will require more force to accelerate or decelerate compared to a lighter object.
+
+
+
+ Inertial
+
+
+
+ The local inertia is a vector that represents how the mass is distributed within the actor relative to its center of mass. It affects how the actor resists rotational forces (torques).
+
+
+ An object with a larger inertia value along a specific axis will rotate more slowly when a torque is applied in that direction, and vice versa.
+
+
+ Related:
+ GetActorLocalInertia
+ GetActorInverseMass
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactormaterial.html b/doc/doc_files/setactormaterial.html
new file mode 100644
index 0000000..cbc4d92
--- /dev/null
+++ b/doc/doc_files/setactormaterial.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setActorMaterial [RCBasic Doc]
+
+
+
+
sub setActorMaterial( actor, material_num, material_id)
+
+ Sets a material on an actor
+
+
+ Note: Generally you just want to set material zero but actors can have multiple materials depending on the model format
+
+ Related:
+ GetActorMaterial
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactormaterialflag.html b/doc/doc_files/setactormaterialflag.html
new file mode 100644
index 0000000..96167af
--- /dev/null
+++ b/doc/doc_files/setactormaterialflag.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+ setActorMaterialFlag [RCBasic Doc]
+
+
+
+
sub setActorMaterialFlag( actor, flag, flag_value)
+
+ Sets the value of an actor's material flag.
+
+
+ Note: The material on this would be material 0. To set other material flag's you need to get a reference to the actor's material with GetActorMaterial().
+
+
+ Possible values for flag:
+
+
+
+ MATERIAL_FLAG_WIREFRAME
+
+
+ MATERIAL_FLAG_POINTCLOUD
+
+
+ MATERIAL_FLAG_GOURAUD_SHADING
+
+
+ MATERIAL_FLAG_LIGHTING
+
+
+ MATERIAL_FLAG_ZBUFFER
+
+
+ MATERIAL_FLAG_ZWRITE_ENABLE
+
+
+ MATERIAL_FLAG_BACK_FACE_CULLING
+
+
+ MATERIAL_FLAG_FRONT_FACE_CULLING
+
+
+ MATERIAL_FLAG_BILINEAR_FILTER
+
+
+ MATERIAL_FLAG_TRILINEAR_FILTER
+
+
+ MATERIAL_FLAG_ANISOTROPIC_FILTER
+
+
+ MATERIAL_FLAG_FOG_ENABLE
+
+
+ MATERIAL_FLAG_NORMALIZE_NORMALS
+
+
+ MATERIAL_FLAG_TEXTURE_WRAP
+
+
+ MATERIAL_FLAG_ANTI_ALIASING
+
+
+ MATERIAL_FLAG_COLOR_MASK
+
+
+ MATERIAL_FLAG_COLOR_MATERIAL
+
+
+ MATERIAL_FLAG_USE_MIP_MAPS
+
+
+ MATERIAL_FLAG_BLEND_OPERATION
+
+
+ MATERIAL_FLAG_POLYGON_OFFSET
+
+
+ Related:
+ GetActorMaterialFlag
+ GetActorMaterial
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactormaterialtype.html b/doc/doc_files/setactormaterialtype.html
new file mode 100644
index 0000000..d0d5809
--- /dev/null
+++ b/doc/doc_files/setactormaterialtype.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+ setActorMaterialType [RCBasic Doc]
+
+
+
+
sub setActorMaterialType( actor, material_type)
+
+ Sets the material type of an actor material
+
+
+ Note: This will set material 0. If your actor has more than one material you need to get a reference to the actor material with GetActorMaterial() to set them.
+
+
+ Possible material types
+
+
+
+ MATERIAL_TYPE_SOLID
+
+
+ MATERIAL_TYPE_SOLID_2_LAYER
+
+
+ MATERIAL_TYPE_LIGHTMAP
+
+
+ MATERIAL_TYPE_LIGHTMAP_ADD
+
+
+ MATERIAL_TYPE_LIGHTMAP_M2
+
+
+ MATERIAL_TYPE_LIGHTMAP_M4
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING_M2
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING_M4
+
+
+ MATERIAL_TYPE_DETAIL_MAP
+
+
+ MATERIAL_TYPE_SPHERE_MAP
+
+
+ MATERIAL_TYPE_REFLECTION_2_LAYER
+
+
+ MATERIAL_TYPE_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL
+
+
+ MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL_REF
+
+
+ MATERIAL_TYPE_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_TRANSPARENT_REFLECTION_2_LAYER
+
+
+ MATERIAL_TYPE_NORMAL_MAP_SOLID
+
+
+ MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_SOLID
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_ONETEXTURE_BLEND
+
+
+ MATERIAL_TYPE_FORCE_32BIT
+
+
+ Related:
+ GetActorMaterialType
+ GetActorMaterial
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactormd2animation.html b/doc/doc_files/setactormd2animation.html
new file mode 100644
index 0000000..66e48bf
--- /dev/null
+++ b/doc/doc_files/setactormd2animation.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+ SetActorMD2Animation [RCBasic Doc]
+
+
+
+
sub SetActorMD2Animation( actor, anim )
+
+ Sets the current animation for an *.md2 model
+
+
+ Possible Animations
+
+
+
+ MD2_ANIMATION_STAND
+
+
+ MD2_ANIMATION_RUN
+
+
+ MD2_ANIMATION_ATTACK
+
+
+ MD2_ANIMATION_PAIN_A
+
+
+ MD2_ANIMATION_PAIN_B
+
+
+ MD2_ANIMATION_PAIN_C
+
+
+ MD2_ANIMATION_JUMP
+
+
+ MD2_ANIMATION_FLIP
+
+
+ MD2_ANIMATION_SALUTE
+
+
+ MD2_ANIMATION_FALLBACK
+
+
+ MD2_ANIMATION_WAVE
+
+
+ MD2_ANIMATION_POINT
+
+
+ MD2_ANIMATION_CROUCH_STAND
+
+
+ MD2_ANIMATION_CROUCH_WALK
+
+
+ MD2_ANIMATION_CROUCH_ATTACK
+
+
+ MD2_ANIMATION_CROUCH_PAIN
+
+
+ MD2_ANIMATION_CROUCH_DEATH
+
+
+ MD2_ANIMATION_DEATH_FALLBACK
+
+
+ MD2_ANIMATION_DEATH_FALLFORWARD
+
+
+ MD2_ANIMATION_DEATH_FALLBACKSLOW
+
+
+ MD2_ANIMATION_BOOM
+
+
+ Related:
+ SetActorMD2AnimationByName
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactormd2animationbyname.html b/doc/doc_files/setactormd2animationbyname.html
new file mode 100644
index 0000000..2f1b6f6
--- /dev/null
+++ b/doc/doc_files/setactormd2animationbyname.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetActorMD2AnimationByName [RCBasic Doc]
+
+
+
+
sub SetActorMD2AnimationByName( actor, anim_name$ )
+
+ Sets the current animation for an *.md2 model
+
+ Related:
+ SetActorMD2Animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorposition.html b/doc/doc_files/setactorposition.html
new file mode 100644
index 0000000..ee1d056
--- /dev/null
+++ b/doc/doc_files/setactorposition.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ SetActorPosition [RCBasic Doc]
+
+
+
+
sub SetActorPosition( actor, x, y, z )
+
+ Sets the absolute position of an actor
+
+ Related:
+ TranslateActorLocal
+ TranslateActorWorld
+ GetActorPosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorrotation.html b/doc/doc_files/setactorrotation.html
new file mode 100644
index 0000000..70af4ed
--- /dev/null
+++ b/doc/doc_files/setactorrotation.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SetActorRotation [RCBasic Doc]
+
+
+
+
sub SetActorRotation( actor, x, y, z )
+
+ Sets the rotation of an actor around each axis
+
+ Related:
+ RotateActor
+ GetActorRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorscale.html b/doc/doc_files/setactorscale.html
new file mode 100644
index 0000000..f115673
--- /dev/null
+++ b/doc/doc_files/setactorscale.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SetActorScale [RCBasic Doc]
+
+
+
+
sub SetActorScale( actor, x, y, z )
+
+ Sets the scale of an actor
+
+ Related:
+ ScaleActor
+ GetActorScale
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorsleepstate.html b/doc/doc_files/setactorsleepstate.html
new file mode 100644
index 0000000..968f735
--- /dev/null
+++ b/doc/doc_files/setactorsleepstate.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ SetActorSleepState [RCBasic Doc]
+
+
+
+
sub SetActorSleepState(actor, state)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorsleepthresholds.html b/doc/doc_files/setactorsleepthresholds.html
new file mode 100644
index 0000000..cd19c17
--- /dev/null
+++ b/doc/doc_files/setactorsleepthresholds.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ setActorSleepThresholds [RCBasic Doc]
+
+
+
+
sub setActorSleepThresholds( actor, linear, angular)
+
+ Sets the linear and angular deactivation thresholds for an actor
+
+ Related:
+ GetActorLinearSleepThreshold
+ GetActorAngularSleepThreshold
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorsolid.html b/doc/doc_files/setactorsolid.html
new file mode 100644
index 0000000..71f6cb0
--- /dev/null
+++ b/doc/doc_files/setactorsolid.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetActorSolid [RCBasic Doc]
+
+
+
+
sub SetActorSolid(actor, flag)
+
+ Sets whether an actor has physics and collision response applied to it
+
+
+ Note: Collision detection will still work for non solid actors
+
+ Related:
+ ActorIsSolid
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactortexture.html b/doc/doc_files/setactortexture.html
new file mode 100644
index 0000000..35d04be
--- /dev/null
+++ b/doc/doc_files/setactortexture.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setActorTexture [RCBasic Doc]
+
+
+
+
sub setActorTexture( actor, layer, image_id)
+
+ Sets the texture for an actor's default material
+
+
+ Note: Generally you want to use texture layer 0
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setactorvisible.html b/doc/doc_files/setactorvisible.html
new file mode 100644
index 0000000..7892e26
--- /dev/null
+++ b/doc/doc_files/setactorvisible.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetActorVisible [RCBasic Doc]
+
+
+
+
sub SetActorVisible( actor, flag )
+
+ Sets whether the actor is visible in the scene
+
+ Related:
+ ActorIsVisible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setbilinearfilter.html b/doc/doc_files/setbilinearfilter.html
new file mode 100644
index 0000000..7c903d9
--- /dev/null
+++ b/doc/doc_files/setbilinearfilter.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setBilinearFilter [RCBasic Doc]
+
+
+
+
sub setBilinearFilter( flag )
+
+ Enables or disables the bilinear filter for drawing 2D images
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setblendmode.html b/doc/doc_files/setblendmode.html
new file mode 100644
index 0000000..4e1c251
--- /dev/null
+++ b/doc/doc_files/setblendmode.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+ SetBlendMode [RCBasic Doc]
+
+
+
+
sub SetBlendMode( blend_mode )
+
+ Sets the current blend mode
+
+
+ Note: Only applies to 2D image drawing commands
+
+
+ Possible Blend Modes
+
+
+
+ BLEND_MODE_NONE
+
+
+ BLEND_MODE_ADD
+
+
+ BLEND_MODE_SUBTRACT
+
+
+ BLEND_MODE_REVSUBTRACT
+
+
+ BLEND_MODE_MIN
+
+
+ BLEND_MODE_MAX
+
+
+ BLEND_MODE_MIN_FACTOR
+
+
+ BLEND_MODE_MAX_FACTOR
+
+
+ BLEND_MODE_MIN_ALPHA
+
+
+ BLEND_MODE_MAX_ALPHA
+
+
+ Related:
+ SetBlendMode
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcameraaspectratio.html b/doc/doc_files/setcameraaspectratio.html
new file mode 100644
index 0000000..19ce197
--- /dev/null
+++ b/doc/doc_files/setcameraaspectratio.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetCameraAspectRatio [RCBasic Doc]
+
+
+
+
sub SetCameraAspectRatio( aspect )
+
+ Sets the aspect ratio for the active canvas camera
+
+ Related:
+ GetCameraAspectRatio
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcamerafarvalue.html b/doc/doc_files/setcamerafarvalue.html
new file mode 100644
index 0000000..74ded46
--- /dev/null
+++ b/doc/doc_files/setcamerafarvalue.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetCameraFarValue [RCBasic Doc]
+
+
+
+
sub SetCameraFarValue( zf )
+
+ Sets the distance to the camera far plane
+
+ Related:
+ GetCameraFarValue
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcamerafov.html b/doc/doc_files/setcamerafov.html
new file mode 100644
index 0000000..30660fb
--- /dev/null
+++ b/doc/doc_files/setcamerafov.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetCameraFOV [RCBasic Doc]
+
+
+
+
sub SetCameraFOV( fov )
+
+ Sets the camera's field of view
+
+ Related:
+ GetCameraFOV
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcameranearvalue.html b/doc/doc_files/setcameranearvalue.html
new file mode 100644
index 0000000..f2645fe
--- /dev/null
+++ b/doc/doc_files/setcameranearvalue.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetCameraNearValue [RCBasic Doc]
+
+
+
+
sub SetCameraNearValue( zn )
+
+ Sets the distance of the camera near plane
+
+ Related:
+ GetCameraNearValue
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcameraposition.html b/doc/doc_files/setcameraposition.html
new file mode 100644
index 0000000..8c3277f
--- /dev/null
+++ b/doc/doc_files/setcameraposition.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SetCameraPosition [RCBasic Doc]
+
+
+
+
sub SetCameraPosition( x, y, z)
+
+ Sets the absolute position of the camera in the scene
+
+ Related:
+ TranslateCamera
+ GetCameraPosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcameraprojectionmatrix.html b/doc/doc_files/setcameraprojectionmatrix.html
new file mode 100644
index 0000000..528fb55
--- /dev/null
+++ b/doc/doc_files/setcameraprojectionmatrix.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ SetCameraProjectionMatrix [RCBasic Doc]
+
+
+
+
Sub SetCameraProjectionMatrix(matA, projection_type)
+
+ Sets the camera projection matrix for the active canvas
+
+
+ Possible values for projection_type
+
+
+
+ PROJECTION_TYPE_ORTHOGRAPHIC
+
+
+ PROJECTION_TYPE_PERSPECTIVE
+
+
+ Related:
+ GetCameraProjectionMatrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcamerarotation.html b/doc/doc_files/setcamerarotation.html
new file mode 100644
index 0000000..9b26220
--- /dev/null
+++ b/doc/doc_files/setcamerarotation.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SetCameraRotation [RCBasic Doc]
+
+
+
+
sub SetCameraRotation( x, y, z)
+
+ Sets the rotation of the camera around each axis
+
+ Related:
+ RotateCamera
+ GetCameraRotation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcanvas3d.html b/doc/doc_files/setcanvas3d.html
new file mode 100644
index 0000000..51e5bc0
--- /dev/null
+++ b/doc/doc_files/setcanvas3d.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ SetCanvas3D [RCBasic Doc]
+
+
+
+
Sub SetCanvas3D(c_num, flag)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcanvasalpha.html b/doc/doc_files/setcanvasalpha.html
new file mode 100644
index 0000000..07d853e
--- /dev/null
+++ b/doc/doc_files/setcanvasalpha.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetCanvasAlpha [RCBasic Doc]
+
+
+
+
sub SetCanvasAlpha(c_num, a)
+
+ Sets the alpha blending value for a canvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcanvascolormod.html b/doc/doc_files/setcanvascolormod.html
new file mode 100644
index 0000000..a931c8f
--- /dev/null
+++ b/doc/doc_files/setcanvascolormod.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetCanvasColorMod [RCBasic Doc]
+
+
+
+
sub SetCanvasColorMod(c_num, c)
+
+ Sets the color modulation value for a canvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcanvasoffset.html b/doc/doc_files/setcanvasoffset.html
new file mode 100644
index 0000000..e28e19f
--- /dev/null
+++ b/doc/doc_files/setcanvasoffset.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetCanvasOffset [RCBasic Doc]
+
+
+
+
sub SetCanvasOffset(c_num, x, y)
+
+ Sets the offset of a canvas
+
+
+ The canvas offset is what part of the canvas is visible during rendering.
+
+ Related:
+ GetCanvasOffset
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcanvasphysics2d.html b/doc/doc_files/setcanvasphysics2d.html
new file mode 100644
index 0000000..4479a6d
--- /dev/null
+++ b/doc/doc_files/setcanvasphysics2d.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ SetCanvasPhysics2D [RCBasic Doc]
+
+
+
+
sub SetCanvasPhysics2D(c_num, state)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcanvasviewport.html b/doc/doc_files/setcanvasviewport.html
new file mode 100644
index 0000000..e7c3277
--- /dev/null
+++ b/doc/doc_files/setcanvasviewport.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetCanvasViewport [RCBasic Doc]
+
+
+
+
sub SetCanvasViewport(cnum, x, y, w, h)
+
+ Sets the position and size of a canvas viewport
+
+ Related:
+ GetCanvasViewport
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcanvasvisible.html b/doc/doc_files/setcanvasvisible.html
new file mode 100644
index 0000000..c7e7553
--- /dev/null
+++ b/doc/doc_files/setcanvasvisible.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetCanvasVisible [RCBasic Doc]
+
+
+
+
sub SetCanvasVisible(c_num, flag)
+
+ Sets whether a canvas is shown or not.
+
+ Related:
+ CanvasIsVisible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcanvasz.html b/doc/doc_files/setcanvasz.html
new file mode 100644
index 0000000..acc6547
--- /dev/null
+++ b/doc/doc_files/setcanvasz.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetCanvasZ [RCBasic Doc]
+
+
+
+
sub SetCanvasZ(c_num, z)
+
+ Sets the Canvas Z Order.
+
+
+ Note: Canvases with a higher Z order are drawn first and those with lower values will be drawn on top
+
+ Related:
+ SetCanvasZ
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setchanneldistance.html b/doc/doc_files/setchanneldistance.html
new file mode 100644
index 0000000..38ad3a8
--- /dev/null
+++ b/doc/doc_files/setchanneldistance.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetChannelDistance [RCBasic Doc]
+
+
+
+
function SetChannelDistance(channel, dist_value)
+
+ Set a volume adjustment effect due to distance. distance must be a value between 0 and 255. Returns 0 on error.
+
+
+ NOTE: Setting distance to 0 will cancel the effect
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setchannelpanning.html b/doc/doc_files/setchannelpanning.html
new file mode 100644
index 0000000..fcce1d4
--- /dev/null
+++ b/doc/doc_files/setchannelpanning.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetChannelPanning [RCBasic Doc]
+
+
+
+
function SetChannelPanning(channel, left_value, right_value)
+
+ Set Panning effect for channel. left_value and right_value must be a value between 0 and 255. Returns 0 on error.
+
+
+ NOTE: Setting both left and right to 255 will cancel the pan effect
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setchannelspaceposition.html b/doc/doc_files/setchannelspaceposition.html
new file mode 100644
index 0000000..e26faca
--- /dev/null
+++ b/doc/doc_files/setchannelspaceposition.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ SetChannelSpacePosition [RCBasic Doc]
+
+
+
+
function SetChannelSpacePosition(channel, angle, distance)
+
+ Simulates audio in 3D space
+
+
+ Angle 0 is in front of the listener and increases clockwise
+
+ Related:
+ SetChannelDistance
+ SetChannelPanning
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setchannelvolume.html b/doc/doc_files/setchannelvolume.html
new file mode 100644
index 0000000..2da40fe
--- /dev/null
+++ b/doc/doc_files/setchannelvolume.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetChannelVolume [RCBasic Doc]
+
+
+
+
sub SetChannelVolume(channel, vol)
+
+ Sets the volume of the audio on a channel
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setclearcolor.html b/doc/doc_files/setclearcolor.html
new file mode 100644
index 0000000..e01229f
--- /dev/null
+++ b/doc/doc_files/setclearcolor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetClearColor [RCBasic Doc]
+
+
+
+
sub SetClearColor(c)
+
+ Sets the color that a canvas is cleared to on ClearCanvas()
+
+ Related:
+ ClearCanvas
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setclipboardtext.html b/doc/doc_files/setclipboardtext.html
new file mode 100644
index 0000000..ed45c23
--- /dev/null
+++ b/doc/doc_files/setclipboardtext.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetClipboardText [RCBasic Doc]
+
+
+
+
sub SetClipboardText(txt$)
+
+ Sets the clipboard text.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setcolor.html b/doc/doc_files/setcolor.html
new file mode 100644
index 0000000..21734b7
--- /dev/null
+++ b/doc/doc_files/setcolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetColor [RCBasic Doc]
+
+
+
+
sub SetColor(c)
+
+ Sets the current draw color
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setconedamping.html b/doc/doc_files/setconedamping.html
new file mode 100644
index 0000000..cca7c29
--- /dev/null
+++ b/doc/doc_files/setconedamping.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setConeDamping [RCBasic Doc]
+
+
+
+
sub setConeDamping( constraint_id, damping)
+
+ Returns the damping factor applied to the constraint. Damping is used to reduce the amount of oscillation or unwanted movement (such as excessive rotation or swinging) around the constrained actor's axes.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setconefixthresh.html b/doc/doc_files/setconefixthresh.html
new file mode 100644
index 0000000..f73d70c
--- /dev/null
+++ b/doc/doc_files/setconefixthresh.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setConeFixThresh [RCBasic Doc]
+
+
+
+
sub setConeFixThresh( constraint_id, fixThresh)
+
+ Sets the fix threshold value associated with that constraint. This threshold is used to control how the constraint behaves when the angle of the rotation between the actors approaches the limits defined by the cone twist constraint.
+
+
+ The fix threshold defines a limit or tolerance for how closely the angle between the two actors can approach the constraint's limits before corrective actions are taken. When the angular motion exceeds this threshold, the constraint applies corrective forces to bring the motion back within the allowed range.
+
+ Related:
+ GetConeFixThresh
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setconelimit.html b/doc/doc_files/setconelimit.html
new file mode 100644
index 0000000..e884fad
--- /dev/null
+++ b/doc/doc_files/setconelimit.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ setConeLimit [RCBasic Doc]
+
+
+
+
sub setConeLimit( constraint_id, swingSpan1, swingSpan2, twistSpan, softness, bias_factor, relaxation_factor)
+
+ Sets the angular limits for the rotation of the constrained actors. These limits specify how much twisting and swinging is permitted between the two actors connected by the constraint, ensuring the motion stays within a desired range.
+
+
+ Softness: Determines how soft or hard the constraint limits are. A value of 1.0 means the limits are hard, while lower values make the limit softer, allowing some flexibility.
+
+
+ Bias Factor: This parameter defines how quickly the constraint should try to correct errors that bring it near or beyond the limit.
+
+
+ Relaxation Factor: This affects how fast the constraint will "relax" after reaching its limit, allowing it to stabilize after hitting the constraint.
+
+ Related:
+ GetConeLimit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setconstraintangularonly.html b/doc/doc_files/setconstraintangularonly.html
new file mode 100644
index 0000000..0b47bc6
--- /dev/null
+++ b/doc/doc_files/setconstraintangularonly.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setConstraintAngularOnly [RCBasic Doc]
+
+
+
+
sub setConstraintAngularOnly( constraint_id, flag)
+
+ Sets the hinge constraint to limit only angular motion while allowing unrestricted linear (translational) motion.
+
+ Related:
+ GetConstraintAngularOnly
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setconstraintbreakingimpulsethreshold.html b/doc/doc_files/setconstraintbreakingimpulsethreshold.html
new file mode 100644
index 0000000..8068509
--- /dev/null
+++ b/doc/doc_files/setconstraintbreakingimpulsethreshold.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setConstraintBreakingImpulseThreshold [RCBasic Doc]
+
+
+
+
sub setConstraintBreakingImpulseThreshold( constraint_id, threshold)
+
+ Sets the breaking impulse threshold for a given constraint. The breaking impulse threshold defines the maximum force (impulse) a constraint can withstand before it "breaks," meaning that the constraint will be deactivated and no longer enforce its rules.
+
+ Related:
+ GetConstraintBreakingImpulseThreshold
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setconstraintframes.html b/doc/doc_files/setconstraintframes.html
new file mode 100644
index 0000000..faca0ba
--- /dev/null
+++ b/doc/doc_files/setconstraintframes.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setConstraintFrames [RCBasic Doc]
+
+
+
+
sub setConstraintFrames( constraint_id, frameA_matrix, frameB_matrix)
+
+ Defines the reference frames for the constraint. This function establishes how the constraint is oriented in the local coordinate systems of the connected actors.
+
+
+ The reference frames define the orientation and position of the constraint relative to each of the connected actors. Each actor can have its own local coordinate system, and the frames help establish how the constraint interacts with these systems.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setconstraintsolveriterations.html b/doc/doc_files/setconstraintsolveriterations.html
new file mode 100644
index 0000000..5e5a03d
--- /dev/null
+++ b/doc/doc_files/setconstraintsolveriterations.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setConstraintSolverIterations [RCBasic Doc]
+
+
+
+
sub setConstraintSolverIterations( constraint_id, num)
+
+ Sets the value for the number of solver iterations that have been overridden for a specific constraint or actor. Solver iterations refer to the number of times the physics engine solves for constraint forces during each simulation step.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setenv.html b/doc/doc_files/setenv.html
new file mode 100644
index 0000000..558774f
--- /dev/null
+++ b/doc/doc_files/setenv.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetEnv [RCBasic Doc]
+
+
+
+
sub SetEnv(var$, value$)
+
+ Sets the value of an environment variable
+
+ Related:
+ Env$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setfont.html b/doc/doc_files/setfont.html
new file mode 100644
index 0000000..168aee5
--- /dev/null
+++ b/doc/doc_files/setfont.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetFont [RCBasic Doc]
+
+
+
+
sub SetFont(fnt_id)
+
+ Sets the active font for text rendering
+
+ Related:
+ DrawText
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setgravity3d.html b/doc/doc_files/setgravity3d.html
new file mode 100644
index 0000000..0859ac0
--- /dev/null
+++ b/doc/doc_files/setgravity3d.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetGravity3D [RCBasic Doc]
+
+
+
+
sub SetGravity3D(x, y, z)
+
+ Sets the world gravity
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/sethingeaxis.html b/doc/doc_files/sethingeaxis.html
new file mode 100644
index 0000000..cf8117a
--- /dev/null
+++ b/doc/doc_files/sethingeaxis.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setHingeAxis [RCBasic Doc]
+
+
+
+
sub setHingeAxis( constraint_id, x, y, z)
+
+ Defines the axis of rotation around which the hinge constraint allows the connected actors to rotate. This function is essential for establishing how the two actors will interact in terms of rotational motion.
+
+
+ The axis of rotation defines the direction in which the hinge can rotate. For example, if you want a door to swing open, you would set the axis to be perpendicular to the plane of the door and aligned with the hinge line.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/sethingelimit.html b/doc/doc_files/sethingelimit.html
new file mode 100644
index 0000000..ae1849f
--- /dev/null
+++ b/doc/doc_files/sethingelimit.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ setHingeLimit [RCBasic Doc]
+
+
+
+
sub setHingeLimit( constraint_id, low, high, softness, bias_factor, relaxation_factor)
+
+ Defines the angular limits of the hinge's rotation. A hinge constraint allows two actors (or one actor and the world) to rotate around a single axis, similar to a door hinge. This function restricts how far this rotation can go by setting minimum and maximum angles.
+
+
+ By default, if no limits are applied, the hinge can rotate freely around the axis.
+
+
+
+ low: This is the minimum angular limit. It defines the smallest angle that the hinge can rotate to in the negative direction.
+
+
+ high: This is the maximum angular limit. It defines the largest angle that the hinge can rotate to in the positive direction.
+
+
+ softness: Controls how "soft" the limit is. A value closer to 0 results in a hard limit (instant stop when the limit is reached), while a value closer to 1 allows some "give" before the limit fully takes effect, making the motion smoother as the limit is approached.
+
+
+ bias_factor: Helps to correct drift or penetration by applying a correction bias when the hinge reaches the limit. A higher value will apply a stronger bias to correct errors in the position.
+
+
+ relaxation_factor: Controls how the hinge behaves once the limit is reached. A value closer to 1 results in faster relaxation after hitting the limit, while a lower value makes the motion more rigid.
+
+
+ Related:
+ GetHingeLimitBiasFactor
+ GetHingeLimitRelaxationFactor
+ GetHingeLimitSign
+ GetHingeSolveLimit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setidentitymatrix.html b/doc/doc_files/setidentitymatrix.html
new file mode 100644
index 0000000..a737be0
--- /dev/null
+++ b/doc/doc_files/setidentitymatrix.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetIdentityMatrix [RCBasic Doc]
+
+
+
+
sub SetIdentityMatrix(mA, n)
+
+ Sets matrix mA to an identity matrix of n rows and n columns.
+
+
+ For most transform operations (ie. translate, rotate, and scale) it is recommended to start from and identity matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setimagealpha.html b/doc/doc_files/setimagealpha.html
new file mode 100644
index 0000000..43ea08b
--- /dev/null
+++ b/doc/doc_files/setimagealpha.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetImageAlpha [RCBasic Doc]
+
+
+
+
sub SetImageAlpha(slot, a)
+
+ Sets the alpha blending value for an image. This value only applies in 2D drawing commands.
+
+ Related:
+ GetImageAlpha
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setimagecolormod.html b/doc/doc_files/setimagecolormod.html
new file mode 100644
index 0000000..1e1caa4
--- /dev/null
+++ b/doc/doc_files/setimagecolormod.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetImageColorMod [RCBasic Doc]
+
+
+
+
sub SetImageColorMod(img_id, c)
+
+ Sets the color modulation vlaue for an image
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightambientcolor.html b/doc/doc_files/setlightambientcolor.html
new file mode 100644
index 0000000..cc6293a
--- /dev/null
+++ b/doc/doc_files/setlightambientcolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetLightAmbientColor [RCBasic Doc]
+
+
+
+
sub SetLightAmbientColor( actor, color )
+
+ Sets the ambient color for a light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightattenuation.html b/doc/doc_files/setlightattenuation.html
new file mode 100644
index 0000000..4982366
--- /dev/null
+++ b/doc/doc_files/setlightattenuation.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetLightAttenuation [RCBasic Doc]
+
+
+
+
sub SetLightAttenuation( actor, l_constant, l_linear, l_quadratic )
+
+ Sets the light strength fading over distance. Overrident by setting radius.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightdiffusecolor.html b/doc/doc_files/setlightdiffusecolor.html
new file mode 100644
index 0000000..b412acf
--- /dev/null
+++ b/doc/doc_files/setlightdiffusecolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetLightDiffuseColor [RCBasic Doc]
+
+
+
+
sub SetLightDiffuseColor( actor, color )
+
+ Sets a light's diffuse color
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightfalloff.html b/doc/doc_files/setlightfalloff.html
new file mode 100644
index 0000000..deb7f5e
--- /dev/null
+++ b/doc/doc_files/setlightfalloff.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetLightFalloff [RCBasic Doc]
+
+
+
+
sub SetLightFalloff( actor, falloff )
+
+ Sets the strength decrease between the inner and outer cone of a light
+
+
+ Note: Only applies to spot lights
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightinnercone.html b/doc/doc_files/setlightinnercone.html
new file mode 100644
index 0000000..5a79e57
--- /dev/null
+++ b/doc/doc_files/setlightinnercone.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetLightInnerCone [RCBasic Doc]
+
+
+
+
sub SetLightInnerCone( actor, angle )
+
+ Sets the inner cone of a spot light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightoutercone.html b/doc/doc_files/setlightoutercone.html
new file mode 100644
index 0000000..a4bc1fc
--- /dev/null
+++ b/doc/doc_files/setlightoutercone.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetLightOuterCone [RCBasic Doc]
+
+
+
+
sub SetLightOuterCone( actor, angle)
+
+ Sets the outer cone of a spot light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightradius.html b/doc/doc_files/setlightradius.html
new file mode 100644
index 0000000..fdb58a2
--- /dev/null
+++ b/doc/doc_files/setlightradius.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetLightRadius [RCBasic Doc]
+
+
+
+
sub SetLightRadius( actor, radius )
+
+ Sets the radius of a light
+
+ Related:
+ GetLightRadius
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightshadowcast.html b/doc/doc_files/setlightshadowcast.html
new file mode 100644
index 0000000..e90f2de
--- /dev/null
+++ b/doc/doc_files/setlightshadowcast.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setLightShadowCast [RCBasic Doc]
+
+
+
+
sub setLightShadowCast( actor, flag )
+
+ Sets whether a light will cast shadows on actors that have shadows enabled
+
+ Related:
+ AddActorShadow
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlightspecularcolor.html b/doc/doc_files/setlightspecularcolor.html
new file mode 100644
index 0000000..9fd9afe
--- /dev/null
+++ b/doc/doc_files/setlightspecularcolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetLightSpecularColor [RCBasic Doc]
+
+
+
+
sub SetLightSpecularColor( actor, color )
+
+ Sets the specular color of a light
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setlighttype.html b/doc/doc_files/setlighttype.html
new file mode 100644
index 0000000..0dd4c80
--- /dev/null
+++ b/doc/doc_files/setlighttype.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ setLightType [RCBasic Doc]
+
+
+
+
sub setLightType( actor, light_type )
+
+ Sets the type of light
+
+
+ Possible Light Types
+
+
+
+ LIGHT_TYPE_POINT
+
+
+ LIGHT_TYPE_POINT
+
+
+ LIGHT_TYPE_POINT
+ Related:
+ SetLightType
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialambientcolor.html b/doc/doc_files/setmaterialambientcolor.html
new file mode 100644
index 0000000..46f78ef
--- /dev/null
+++ b/doc/doc_files/setmaterialambientcolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialAmbientColor [RCBasic Doc]
+
+
+
+
sub setMaterialAmbientColor( material_id, color)
+
+ Sets the ambient color of a material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialantialiasing.html b/doc/doc_files/setmaterialantialiasing.html
new file mode 100644
index 0000000..b8a2218
--- /dev/null
+++ b/doc/doc_files/setmaterialantialiasing.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ setMaterialAntiAliasing [RCBasic Doc]
+
+
+
+
sub setMaterialAntiAliasing( material_id, aa)
+
+ Sets the anti-aliasing mode for the material
+
+
+ Possible modes returned
+
+
+
+ AA_MODE_OFF=0,
+
+
+ AA_MODE_SIMPLE=1,
+
+
+ AA_MODE_QUALITY=3,
+
+
+ AA_MODE_LINE_SMOOTH=4,
+
+
+ AA_MODE_POINT_SMOOTH=8,
+
+
+ AA_MODE_FULL_BASIC=15,
+
+
+ AA_MODE_ALPHA_TO_COVERAGE=16
+
+
+ Related:
+ GetMaterialAntiAliasing
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialbackfaceculling.html b/doc/doc_files/setmaterialbackfaceculling.html
new file mode 100644
index 0000000..a5cc25e
--- /dev/null
+++ b/doc/doc_files/setmaterialbackfaceculling.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setMaterialBackfaceCulling [RCBasic Doc]
+
+
+
+
sub setMaterialBackfaceCulling( material_id, flag)
+
+ Enables or disables material backface culling
+
+ Related:
+ GetMaterialBackfaceCulling
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialblendfactor.html b/doc/doc_files/setmaterialblendfactor.html
new file mode 100644
index 0000000..b30bdc4
--- /dev/null
+++ b/doc/doc_files/setmaterialblendfactor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialBlendFactor [RCBasic Doc]
+
+
+
+
sub setMaterialBlendFactor( material_id, bf)
+
+ Sets the blend factor for a material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialblendmode.html b/doc/doc_files/setmaterialblendmode.html
new file mode 100644
index 0000000..1e9f7b7
--- /dev/null
+++ b/doc/doc_files/setmaterialblendmode.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+ setMaterialBlendMode [RCBasic Doc]
+
+
+
+
sub setMaterialBlendMode( material_id, blend_mode)
+
+ Sets a material's blend mode
+
+
+ Possible Blend Modes
+
+
+
+ BLEND_MODE_NONE
+
+
+ BLEND_MODE_ADD
+
+
+ BLEND_MODE_SUBTRACT
+
+
+ BLEND_MODE_REVSUBTRACT
+
+
+ BLEND_MODE_MIN
+
+
+ BLEND_MODE_MAX
+
+
+ BLEND_MODE_MIN_FACTOR
+
+
+ BLEND_MODE_MAX_FACTOR
+
+
+ BLEND_MODE_MIN_ALPHA
+
+
+ BLEND_MODE_MAX_ALPHA
+
+
+ Related:
+ SetMaterialBlendMode
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialcolormask.html b/doc/doc_files/setmaterialcolormask.html
new file mode 100644
index 0000000..240a9ca
--- /dev/null
+++ b/doc/doc_files/setmaterialcolormask.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setMaterialColorMask [RCBasic Doc]
+
+
+
+
sub setMaterialColorMask( material_id, color_mask)
+
+ Sets a color mask for a material
+
+ Related:
+ GetMaterialColorMask
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialcolormode.html b/doc/doc_files/setmaterialcolormode.html
new file mode 100644
index 0000000..fb42bb5
--- /dev/null
+++ b/doc/doc_files/setmaterialcolormode.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ setMaterialColorMode [RCBasic Doc]
+
+
+
+
sub setMaterialColorMode( material_id, color_mode)
+
+ Sets the color mode of a material
+
+
+ Possible modes
+
+
+
+ COLOR_MODE_NONE
+
+
+ COLOR_MODE_DIFFUSE
+
+
+ COLOR_MODE_AMBIENT
+
+
+ COLOR_MODE_EMISSIVE
+
+
+ COLOR_MODE_SPECULAR
+
+
+ COLOR_MODE_DIFFUSE_AND_AMBIENT
+
+
+ Related:
+ GetMaterialColorMode
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialdiffusecolor.html b/doc/doc_files/setmaterialdiffusecolor.html
new file mode 100644
index 0000000..45eb2d9
--- /dev/null
+++ b/doc/doc_files/setmaterialdiffusecolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialDiffuseColor [RCBasic Doc]
+
+
+
+
sub setMaterialDiffuseColor( material_id, color)
+
+ Set's a material's diffuse color
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialemissivecolor.html b/doc/doc_files/setmaterialemissivecolor.html
new file mode 100644
index 0000000..df51ebf
--- /dev/null
+++ b/doc/doc_files/setmaterialemissivecolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialEmissiveColor [RCBasic Doc]
+
+
+
+
sub setMaterialEmissiveColor( material_id, color)
+
+ Set's a material's emissive color
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialflag.html b/doc/doc_files/setmaterialflag.html
new file mode 100644
index 0000000..728f4fb
--- /dev/null
+++ b/doc/doc_files/setmaterialflag.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+ setMaterialFlag [RCBasic Doc]
+
+
+
+
sub setMaterialFlag( material_id, material_flag, f_value)
+
+ Sets the value of the specified material flag
+
+
+ Possible values for flag:
+
+
+
+ MATERIAL_FLAG_WIREFRAME
+
+
+ MATERIAL_FLAG_POINTCLOUD
+
+
+ MATERIAL_FLAG_GOURAUD_SHADING
+
+
+ MATERIAL_FLAG_LIGHTING
+
+
+ MATERIAL_FLAG_ZBUFFER
+
+
+ MATERIAL_FLAG_ZWRITE_ENABLE
+
+
+ MATERIAL_FLAG_BACK_FACE_CULLING
+
+
+ MATERIAL_FLAG_FRONT_FACE_CULLING
+
+
+ MATERIAL_FLAG_BILINEAR_FILTER
+
+
+ MATERIAL_FLAG_TRILINEAR_FILTER
+
+
+ MATERIAL_FLAG_ANISOTROPIC_FILTER
+
+
+ MATERIAL_FLAG_FOG_ENABLE
+
+
+ MATERIAL_FLAG_NORMALIZE_NORMALS
+
+
+ MATERIAL_FLAG_TEXTURE_WRAP
+
+
+ MATERIAL_FLAG_ANTI_ALIASING
+
+
+ MATERIAL_FLAG_COLOR_MASK
+
+
+ MATERIAL_FLAG_COLOR_MATERIAL
+
+
+ MATERIAL_FLAG_USE_MIP_MAPS
+
+
+ MATERIAL_FLAG_BLEND_OPERATION
+
+
+ MATERIAL_FLAG_POLYGON_OFFSET
+
+
+ Related:
+ GetMaterialFlag
+ GetActorMaterialFlag
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialfog.html b/doc/doc_files/setmaterialfog.html
new file mode 100644
index 0000000..b15ec5d
--- /dev/null
+++ b/doc/doc_files/setmaterialfog.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialFog [RCBasic Doc]
+
+
+
+
sub setMaterialFog( material_id, flag)
+
+ Enables or disables fog
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialfrontfaceculling.html b/doc/doc_files/setmaterialfrontfaceculling.html
new file mode 100644
index 0000000..75e2008
--- /dev/null
+++ b/doc/doc_files/setmaterialfrontfaceculling.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialFrontfaceCulling [RCBasic Doc]
+
+
+
+
sub setMaterialFrontFaceCulling( material_id, flag)
+
+ Enables or disables front face culling
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialgouraudshading.html b/doc/doc_files/setmaterialgouraudshading.html
new file mode 100644
index 0000000..a1493f2
--- /dev/null
+++ b/doc/doc_files/setmaterialgouraudshading.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setMaterialGouraudShading [RCBasic Doc]
+
+
+
+
sub setMaterialGouraudShading( material_id, flag)
+
+ Sets whether material will use gourad shading or flat shading
+
+
+ True for goraud, False for flat
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmateriallighting.html b/doc/doc_files/setmateriallighting.html
new file mode 100644
index 0000000..727e318
--- /dev/null
+++ b/doc/doc_files/setmateriallighting.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialLighting [RCBasic Doc]
+
+
+
+
sub setMaterialLighting( material_id, flag)
+
+ Sets whether material will be lighted or not
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialnormalize.html b/doc/doc_files/setmaterialnormalize.html
new file mode 100644
index 0000000..64a1396
--- /dev/null
+++ b/doc/doc_files/setmaterialnormalize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialNormalize [RCBasic Doc]
+
+
+
+
sub setMaterialNormalize( material_id, flag)
+
+ Sets whether normals should be normalized
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialpointcloud.html b/doc/doc_files/setmaterialpointcloud.html
new file mode 100644
index 0000000..b39615a
--- /dev/null
+++ b/doc/doc_files/setmaterialpointcloud.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialPointCloud [RCBasic Doc]
+
+
+
+
sub setMaterialPointCloud( material_id, flag)
+
+ Sets whether material is drawn as a point cloud or filled triangles
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialshininess.html b/doc/doc_files/setmaterialshininess.html
new file mode 100644
index 0000000..10b96ab
--- /dev/null
+++ b/doc/doc_files/setmaterialshininess.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setMaterialShininess [RCBasic Doc]
+
+
+
+
sub setMaterialShininess( material_id, shininess)
+
+ Sets the size of specular highlights
+
+
+ Values range from 0 to 128
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialspecularcolor.html b/doc/doc_files/setmaterialspecularcolor.html
new file mode 100644
index 0000000..3a85dbe
--- /dev/null
+++ b/doc/doc_files/setmaterialspecularcolor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialSpecularColor [RCBasic Doc]
+
+
+
+
sub setMaterialSpecularColor( material_id, color)
+
+ Sets the specular color of a material
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialtexture.html b/doc/doc_files/setmaterialtexture.html
new file mode 100644
index 0000000..428687e
--- /dev/null
+++ b/doc/doc_files/setmaterialtexture.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setMaterialTexture [RCBasic Doc]
+
+
+
+
sub setMaterialTexture( material_id, level, img_id)
+
+ Sets the texture on a specified texture level of a material
+
+
+ Note: Generally you want to just set level 0
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialtexturecanvas.html b/doc/doc_files/setmaterialtexturecanvas.html
new file mode 100644
index 0000000..3ba3dc7
--- /dev/null
+++ b/doc/doc_files/setmaterialtexturecanvas.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialTextureCanvas [RCBasic Doc]
+
+
+
+
sub setMaterialTextureCanvas( material_id, level, canvas_id)
+
+ Sets a material's texture source as a canvas.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialthickness.html b/doc/doc_files/setmaterialthickness.html
new file mode 100644
index 0000000..c1f3700
--- /dev/null
+++ b/doc/doc_files/setmaterialthickness.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialThickness [RCBasic Doc]
+
+
+
+
sub setMaterialThickness( material_id, thickness)
+
+ Sets the thickness of non 3d elements
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialtype.html b/doc/doc_files/setmaterialtype.html
new file mode 100644
index 0000000..5029ffa
--- /dev/null
+++ b/doc/doc_files/setmaterialtype.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+ SetMaterialType [RCBasic Doc]
+
+
+
+
sub SetMaterialType( material_id, mat_type)
+
+ Sets the material type
+
+
+ Possible material types
+
+
+
+ MATERIAL_TYPE_SOLID
+
+
+ MATERIAL_TYPE_SOLID_2_LAYER
+
+
+ MATERIAL_TYPE_LIGHTMAP
+
+
+ MATERIAL_TYPE_LIGHTMAP_ADD
+
+
+ MATERIAL_TYPE_LIGHTMAP_M2
+
+
+ MATERIAL_TYPE_LIGHTMAP_M4
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING_M2
+
+
+ MATERIAL_TYPE_LIGHTMAP_LIGHTING_M4
+
+
+ MATERIAL_TYPE_DETAIL_MAP
+
+
+ MATERIAL_TYPE_SPHERE_MAP
+
+
+ MATERIAL_TYPE_REFLECTION_2_LAYER
+
+
+ MATERIAL_TYPE_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL
+
+
+ MATERIAL_TYPE_TRANSPARENT_ALPHA_CHANNEL_REF
+
+
+ MATERIAL_TYPE_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_TRANSPARENT_REFLECTION_2_LAYER
+
+
+ MATERIAL_TYPE_NORMAL_MAP_SOLID
+
+
+ MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_SOLID
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
+
+
+ MATERIAL_TYPE_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
+
+
+ MATERIAL_TYPE_ONETEXTURE_BLEND
+
+
+ MATERIAL_TYPE_FORCE_32BIT
+
+
+ Related:
+ GetMaterialType
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaterialwireframe.html b/doc/doc_files/setmaterialwireframe.html
new file mode 100644
index 0000000..cdfb95c
--- /dev/null
+++ b/doc/doc_files/setmaterialwireframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setMaterialWireframe [RCBasic Doc]
+
+
+
+
sub setMaterialWireframe( material_id, flag)
+
+ Sets whether a material is draw as unfilled triangles or filled triangles
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmatrixrotation.html b/doc/doc_files/setmatrixrotation.html
new file mode 100644
index 0000000..b60280f
--- /dev/null
+++ b/doc/doc_files/setmatrixrotation.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetMatrixRotation [RCBasic Doc]
+
+
+
+
sub SetMatrixRotation( mA, x, y, z )
+
+ Sets the rotation vector of a matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmatrixscale.html b/doc/doc_files/setmatrixscale.html
new file mode 100644
index 0000000..1d596aa
--- /dev/null
+++ b/doc/doc_files/setmatrixscale.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetMatrixScale [RCBasic Doc]
+
+
+
+
sub SetMatrixScale( mA, x, y, z )
+
+ Sets the scale vector of a matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmatrixtranslation.html b/doc/doc_files/setmatrixtranslation.html
new file mode 100644
index 0000000..addc06f
--- /dev/null
+++ b/doc/doc_files/setmatrixtranslation.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetMatrixTranslation [RCBasic Doc]
+
+
+
+
sub SetMatrixTranslation( mA, x, y, z )
+
+ Sets the translation vector of a matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmatrixvalue.html b/doc/doc_files/setmatrixvalue.html
new file mode 100644
index 0000000..fb53102
--- /dev/null
+++ b/doc/doc_files/setmatrixvalue.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetMatrixValue [RCBasic Doc]
+
+
+
+
sub SetMatrixValue(mA, r, c, v)
+
+ Sets the value of a cell in a matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmaxparticlespersecond.html b/doc/doc_files/setmaxparticlespersecond.html
new file mode 100644
index 0000000..395147f
--- /dev/null
+++ b/doc/doc_files/setmaxparticlespersecond.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ setMaxParticlesPerSecond [RCBasic Doc]
+
+
+
+
sub setMaxParticlesPerSecond( actor, maxParticlesPerSecond)
+
+ Sets the max number of particles emitted per second
+
+ Related:
+ GetMaxParticlesPerSecond
+ GetMinParticlesPerSecond
+ SetMinParticlesPerSecond
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setminparticlespersecond.html b/doc/doc_files/setminparticlespersecond.html
new file mode 100644
index 0000000..d5a8b1d
--- /dev/null
+++ b/doc/doc_files/setminparticlespersecond.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ setMinParticlesPerSecond [RCBasic Doc]
+
+
+
+
sub setMinParticlesPerSecond( actor, minParticlesPerSecond)
+
+ Sets the max number of particles emitted per second
+
+ Related:
+ SetMaxParticlesPerSecond
+ GetMinParticlesPerSecond
+ SetMaxParticlesPerSecond
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmouserelative.html b/doc/doc_files/setmouserelative.html
new file mode 100644
index 0000000..f85d444
--- /dev/null
+++ b/doc/doc_files/setmouserelative.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetMouseRelative [RCBasic Doc]
+
+
+
+
sub SetMouseRelative(flag)
+
+ Constrains the mouse to the window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmousezone.html b/doc/doc_files/setmousezone.html
new file mode 100644
index 0000000..784a62e
--- /dev/null
+++ b/doc/doc_files/setmousezone.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetMouseZone [RCBasic Doc]
+
+
+
+
sub SetMouseZone(x, y, w, h)
+
+ Constrains the mouse to a specified area of the window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmusicposition.html b/doc/doc_files/setmusicposition.html
new file mode 100644
index 0000000..5770617
--- /dev/null
+++ b/doc/doc_files/setmusicposition.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetMusicPosition [RCBasic Doc]
+
+
+
+
sub SetMusicPosition(pos)
+
+ Sets the position of the loaded music track
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setmusicvolume.html b/doc/doc_files/setmusicvolume.html
new file mode 100644
index 0000000..e9bc35d
--- /dev/null
+++ b/doc/doc_files/setmusicvolume.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetMusicVolume [RCBasic Doc]
+
+
+
+
sub SetMusicVolume(vol)
+
+ Sets the volume of the loaded music track
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlebox.html b/doc/doc_files/setparticlebox.html
new file mode 100644
index 0000000..aeb4177
--- /dev/null
+++ b/doc/doc_files/setparticlebox.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setParticleBox [RCBasic Doc]
+
+
+
+
sub setParticleBox( actor, min_x, min_y, min_z, max_x, max_y, max_z)
+
+ Sets the bounding box for a particle emitter
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlecenter.html b/doc/doc_files/setparticlecenter.html
new file mode 100644
index 0000000..c7cde86
--- /dev/null
+++ b/doc/doc_files/setparticlecenter.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setParticleCenter [RCBasic Doc]
+
+
+
+
sub setParticleCenter( actor, x, y, z)
+
+ Sets the center of a particle emitter
+
+
+ Note: applies to Sphere, Cylinder, and Ring emitters
+
+ Related:
+ GetParticleCenter
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticledirection.html b/doc/doc_files/setparticledirection.html
new file mode 100644
index 0000000..c4385f6
--- /dev/null
+++ b/doc/doc_files/setparticledirection.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setParticleDirection [RCBasic Doc]
+
+
+
+
sub setParticleDirection( actor, x, y, z)
+
+ Sets the direction of a particle emitter
+
+ Related:
+ GetParticleDirection
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlelength.html b/doc/doc_files/setparticlelength.html
new file mode 100644
index 0000000..f7623d2
--- /dev/null
+++ b/doc/doc_files/setparticlelength.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setParticleLength [RCBasic Doc]
+
+
+
+
sub setParticleLength( actor, p_len)
+
+ Sets the length of a cylinder particle emitter
+
+
+ Note: Only applies to cylinder particles
+
+ Related:
+ GetParticleLength
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlemaxangle.html b/doc/doc_files/setparticlemaxangle.html
new file mode 100644
index 0000000..95f204d
--- /dev/null
+++ b/doc/doc_files/setparticlemaxangle.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setParticleMaxAngle [RCBasic Doc]
+
+
+
+
sub setParticleMaxAngle( actor, maxAngle)
+
+ Sets the max angle of particle emission
+
+ Related:
+ GetParticleMaxAngle
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlemaxlife.html b/doc/doc_files/setparticlemaxlife.html
new file mode 100644
index 0000000..d636ab5
--- /dev/null
+++ b/doc/doc_files/setparticlemaxlife.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setParticleMaxLife [RCBasic Doc]
+
+
+
+
sub setParticleMaxLife( actor, maxLife)
+
+ Sets the max life of the particle emission
+
+
+ Note: maxLife is in milliseconds
+
+ Related:
+ GetParticleMaxLife
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlemaxstartcolor.html b/doc/doc_files/setparticlemaxstartcolor.html
new file mode 100644
index 0000000..cc22d19
--- /dev/null
+++ b/doc/doc_files/setparticlemaxstartcolor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setParticleMaxStartColor [RCBasic Doc]
+
+
+
+
sub setParticleMaxStartColor( actor, color)
+
+ Sets max starting color for particles
+
+ Related:
+ SetParticleMaxStartColor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlemaxstartsize.html b/doc/doc_files/setparticlemaxstartsize.html
new file mode 100644
index 0000000..333289d
--- /dev/null
+++ b/doc/doc_files/setparticlemaxstartsize.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setParticleMaxStartSize [RCBasic Doc]
+
+
+
+
sub setParticleMaxStartSize( actor, w, h)
+
+ Sets the max start size for the particles
+
+ Related:
+ SetParticleMaxStartSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlemesh.html b/doc/doc_files/setparticlemesh.html
new file mode 100644
index 0000000..b5d20bf
--- /dev/null
+++ b/doc/doc_files/setparticlemesh.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setParticleMesh [RCBasic Doc]
+
+
+
+
sub setParticleMesh( actor, mesh)
+
+ Sets the mesh for a mesh particle emitter
+
+
+ Note: Only applies to mesh emitter
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticleminlife.html b/doc/doc_files/setparticleminlife.html
new file mode 100644
index 0000000..fca52ad
--- /dev/null
+++ b/doc/doc_files/setparticleminlife.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setParticleMinLife [RCBasic Doc]
+
+
+
+
sub setParticleMinLife( actor, minLife)
+
+ Set the min life of particles
+
+
+ Note: minLife is in milliseconds
+
+ Related:
+ SetParticleMinLife
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticleminstartcolor.html b/doc/doc_files/setparticleminstartcolor.html
new file mode 100644
index 0000000..75d3b1b
--- /dev/null
+++ b/doc/doc_files/setparticleminstartcolor.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setParticleMinStartColor [RCBasic Doc]
+
+
+
+
sub setParticleMinStartColor( actor, color)
+
+ Sets the min start color for particles
+
+ Related:
+ GetParticleMinStartColor
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticleminstartsize.html b/doc/doc_files/setparticleminstartsize.html
new file mode 100644
index 0000000..0d11976
--- /dev/null
+++ b/doc/doc_files/setparticleminstartsize.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setParticleMinStartSize [RCBasic Doc]
+
+
+
+
sub setParticleMinStartSize( actor, w, h)
+
+ Sets the min start size for particle emitter
+
+ Related:
+ GetParticleMinStartSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlenormal.html b/doc/doc_files/setparticlenormal.html
new file mode 100644
index 0000000..02298b6
--- /dev/null
+++ b/doc/doc_files/setparticlenormal.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setParticleNormal [RCBasic Doc]
+
+
+
+
sub setParticleNormal( actor, x, y, z)
+
+ Sets the normal of a particle emitter
+
+
+ Note: Only applies to cylinder particle emitter
+
+ Related:
+ GetParticleNormal
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticlenormaldirectionmod.html b/doc/doc_files/setparticlenormaldirectionmod.html
new file mode 100644
index 0000000..f685ae2
--- /dev/null
+++ b/doc/doc_files/setparticlenormaldirectionmod.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setParticleNormalDirectionMod [RCBasic Doc]
+
+
+
+
sub setParticleNormalDirectionMod( actor, nd_mod)
+
+ Sets the normal direction modifier for a particle emitter
+
+
+ Note: Only applies to mesh particle emitter
+
+ Related:
+ GetParticleNormalDirectionMod
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticleradius.html b/doc/doc_files/setparticleradius.html
new file mode 100644
index 0000000..389b3de
--- /dev/null
+++ b/doc/doc_files/setparticleradius.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setParticleRadius [RCBasic Doc]
+
+
+
+
sub setParticleRadius( actor, radius)
+
+ Sets the radius of a particle emitter
+
+
+ Note: Only applies to Sphere, Cylinder, and Ring emitters
+
+ Related:
+ SetParticleRadius
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setparticleringthickness.html b/doc/doc_files/setparticleringthickness.html
new file mode 100644
index 0000000..d65bb93
--- /dev/null
+++ b/doc/doc_files/setparticleringthickness.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setParticleRingThickness [RCBasic Doc]
+
+
+
+
sub setParticleRingThickness( actor, ringThickness)
+
+ Sets the thickness of a ring emitter
+
+
+ Note: Only applies to ring emitter
+
+ Related:
+ GetParticleRingThickness
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setpointpivota.html b/doc/doc_files/setpointpivota.html
new file mode 100644
index 0000000..6c1c183
--- /dev/null
+++ b/doc/doc_files/setpointpivota.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ setPointPivotA [RCBasic Doc]
+
+
+
+
sub setPointPivotA( constraint_id, x, y, z)
+
+ Sets the pivot point on the first actor (Body A) of the constraint. This pivot point defines the specific location in the local space of Body A where the point-to-point constraint is anchored.
+
+ Related:
+ GetPointPivotA
+ SetPointPivotB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setpointpivotb.html b/doc/doc_files/setpointpivotb.html
new file mode 100644
index 0000000..cb75d1d
--- /dev/null
+++ b/doc/doc_files/setpointpivotb.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ setPointPivotB [RCBasic Doc]
+
+
+
+
sub setPointPivotB( constraint_id, x, y, z)
+
+ Sets the pivot point on the second actor (Body B) of the constraint. This pivot point defines the specific location in the local space of Body B where the point-to-point constraint is anchored.
+
+ Related:
+ GetPointPivotA
+ SetPointPivotB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setprojectionmatrix.html b/doc/doc_files/setprojectionmatrix.html
new file mode 100644
index 0000000..6eebabc
--- /dev/null
+++ b/doc/doc_files/setprojectionmatrix.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ SetProjectionMatrix [RCBasic Doc]
+
+
+
+
Sub SetProjectionMatrix(matA, projection_type)
+
+ Sets the camera projection matrix for the active canvas
+
+
+ Possible values for projection_type
+
+
+
+ PROJECTION_TYPE_ORTHOGRAPHIC
+
+
+ PROJECTION_TYPE_PERSPECTIVE
+
+
+ Related:
+ GetProjectionMatrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidedampingdirang.html b/doc/doc_files/setslidedampingdirang.html
new file mode 100644
index 0000000..4a6c3fa
--- /dev/null
+++ b/doc/doc_files/setslidedampingdirang.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setSlideDampingDirAng [RCBasic Doc]
+
+
+
+
sub setSlideDampingDirAng( constraint_id, n)
+
+ Sets the angular directional damping value. This damping factor specifically affects angular motion in the direction of movement along the constraint's axes.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidedampingdirlin.html b/doc/doc_files/setslidedampingdirlin.html
new file mode 100644
index 0000000..069b735
--- /dev/null
+++ b/doc/doc_files/setslidedampingdirlin.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ setSlideDampingDirLin [RCBasic Doc]
+
+
+
+
sub setSlideDampingDirLin( constraint_id, n)
+
+ Sets the linear directional damping value for a constraint. This value applies to the linear (translational) motion of an object along the constraint's axis of movement.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidedampinglimang.html b/doc/doc_files/setslidedampinglimang.html
new file mode 100644
index 0000000..f52aa50
--- /dev/null
+++ b/doc/doc_files/setslidedampinglimang.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setSlideDampingLimAng [RCBasic Doc]
+
+
+
+
sub setSlideDampingLimAng( constraint_id, n)
+
+ Sets the angular limit damping factor for a constraint. This damping applies specifically to the angular motion of an object when it reaches the limit of its allowed rotational range.
+
+ Related:
+ GetSlideDampingLimAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidedampinglimlin.html b/doc/doc_files/setslidedampinglimlin.html
new file mode 100644
index 0000000..28636a7
--- /dev/null
+++ b/doc/doc_files/setslidedampinglimlin.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setSlideDampingLimLin [RCBasic Doc]
+
+
+
+
sub setSlideDampingLimLin( constraint_id, n)
+
+ Sets the linear limit damping factor for a constraint. This damping applies specifically to the linear (translational) motion of an object when it reaches the limit of its allowed range of movement along a specific axis.
+
+ Related:
+ GetSlideDampingLimLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidedampingorthoang.html b/doc/doc_files/setslidedampingorthoang.html
new file mode 100644
index 0000000..b0a69df
--- /dev/null
+++ b/doc/doc_files/setslidedampingorthoang.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setSlideDampingOrthoAng [RCBasic Doc]
+
+
+
+
sub setSlideDampingOrthoAng( constraint_id, n)
+
+ Sets the orthogonal angular damping factor applied to a constraint. This damping affects angular (rotational) motion that occurs perpendicular to the primary axis of movement defined by the constraint.
+
+ Related:
+ GetSlideDampingOrthoAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidedampingortholin.html b/doc/doc_files/setslidedampingortholin.html
new file mode 100644
index 0000000..a65a902
--- /dev/null
+++ b/doc/doc_files/setslidedampingortholin.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setSlideDampingOrthoLin [RCBasic Doc]
+
+
+
+
sub setSlideDampingOrthoLin( constraint_id, n)
+
+ Sets the orthogonal linear damping factor for a constraint. This damping affects the linear (translational) motion of an object that occurs perpendicular to the primary direction of movement defined by the constraint.
+
+ Related:
+ GetSlideDampingOrthoLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslideloweranglimit.html b/doc/doc_files/setslideloweranglimit.html
new file mode 100644
index 0000000..279bd9d
--- /dev/null
+++ b/doc/doc_files/setslideloweranglimit.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetSlideLowerAngLimit [RCBasic Doc]
+
+
+
+
sub SetSlideLowerAngLimit( constraint_id, n)
+
+ Sets the lower angular limit of the constraint. This value specifies the minimum angle allowed for the rotation of the connected actors around the axis perpendicular to the sliding direction defined by the slider constraint.
+
+
+ The lower angular limit indicates the smallest angle that the actors can rotate about the axis perpendicular to the sliding direction. If the rotation tries to exceed this limit, the physics engine will apply corrective forces to maintain the bodies within the allowed range.
+
+ Related:
+ GetSlideLowerAngLimit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidelowerlinlimit.html b/doc/doc_files/setslidelowerlinlimit.html
new file mode 100644
index 0000000..2c53377
--- /dev/null
+++ b/doc/doc_files/setslidelowerlinlimit.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideLowerLinLimit [RCBasic Doc]
+
+
+
+
sub setSlideLowerLinLimit( constraint_id, n)
+
+ Sets the lower linear limit for the translational (sliding) motion along the slider's axis. This value specifies the minimum allowable position for the connected actors along the defined axis of the slider constraint.
+
+
+ This defines the minimum translation distance along the slider’s axis that the connected actors are allowed to reach. If the actors' relative position along the axis goes below this limit, the constraint will prevent further movement.
+
+ Related:
+ GetSlideLowerLinLimit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setsliderestitutiondirang.html b/doc/doc_files/setsliderestitutiondirang.html
new file mode 100644
index 0000000..be7d1dd
--- /dev/null
+++ b/doc/doc_files/setsliderestitutiondirang.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideRestitutionDirAng [RCBasic Doc]
+
+
+
+
sub setSlideRestitutionDirAng( constraint_id, n)
+
+ Sets the restitution value for angular motion. The restitution coefficient is a measure of how much energy is conserved in a collision or constraint interaction, specifically for angular movements.
+
+
+ When actors collide or interact, their angular momentum and position can change, and the restitution value governs how much of that energy is retained after the interaction.
+
+ Related:
+ GetSlideRestitutionDirAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setsliderestitutiondirlin.html b/doc/doc_files/setsliderestitutiondirlin.html
new file mode 100644
index 0000000..0af7708
--- /dev/null
+++ b/doc/doc_files/setsliderestitutiondirlin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideRestitutionDirLin [RCBasic Doc]
+
+
+
+
sub setSlideRestitutionDirLin( constraint_id, n)
+
+ Sets the restitution value for linear motion. This value determines how much energy is conserved in a collision or interaction involving linear movements of the connected actors.
+
+
+ When the actors collide or interact, the restitution value dictates how much of their energy is retained after the interaction.
+
+ Related:
+ SetSlideRestitutionDirLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setsliderestitutionlimang.html b/doc/doc_files/setsliderestitutionlimang.html
new file mode 100644
index 0000000..955b9a3
--- /dev/null
+++ b/doc/doc_files/setsliderestitutionlimang.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideRestitutionLimAng [RCBasic Doc]
+
+
+
+
sub setSlideRestitutionLimAng( constraint_id, n)
+
+ Sets the restitution value for angular limit. This value determines how much energy is conserved when the angular motion of the connected actors reaches the angular limits of the slider constraint. Essentially, it controls how "bouncy" the rotation is when it hits the angular limit of the constraint.
+
+
+ A value of 0.0 means no bounce (perfectly inelastic), while a value of 1.0 allows maximum bounce (perfectly elastic).
+
+ Related:
+ GetSlideRestitutionLimAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setsliderestitutionlimlin.html b/doc/doc_files/setsliderestitutionlimlin.html
new file mode 100644
index 0000000..4747276
--- /dev/null
+++ b/doc/doc_files/setsliderestitutionlimlin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideRestitutionLimLin [RCBasic Doc]
+
+
+
+
sub setSlideRestitutionLimLin( constraint_id, n)
+
+ Sets the restitution value for the linear limit of the constraint. This value controls how much energy is conserved (or how "bouncy" the interaction is) when the connected actors reach the linear limits of the slider constraint, which restricts the movement along the sliding axis.
+
+
+ Restitution is a measure of how much energy is retained after a collision or interaction. In this context, when the linear movement reaches the limits, restitution controls how much the actors "bounce" back. A restitution value of 0.0 means no bounce (the collision is perfectly inelastic), and 1.0 allows maximum bounce (the collision is perfectly elastic).
+
+ Related:
+ GetSlideRestitutionLimLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setsliderestitutionorthoang.html b/doc/doc_files/setsliderestitutionorthoang.html
new file mode 100644
index 0000000..2e877cd
--- /dev/null
+++ b/doc/doc_files/setsliderestitutionorthoang.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ setSlideRestitutionOrthoAng [RCBasic Doc]
+
+
+
+
sub setSlideRestitutionOrthoAng( constraint_id, n)
+
+ Sets the restitution value for orthogonal angular motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when rotational movement occurs in a direction orthogonal (perpendicular) to the slider's primary axis of movement.
+
+
+ Orthogonal Angular Motion: In the context of a slider constraint, orthogonal angular motion refers to rotational movement around axes that are perpendicular to the slider's main movement axis.
+
+
+ Restitution: Restitution is a measure of how much energy is retained in a collision or interaction. A restitution value of 0.0 means no bounce (inelastic collision), and 1.0 means maximum bounce (elastic collision). For orthogonal angular motion, this describes how much bounce occurs after the rotational motion hits the constraints or limits in a perpendicular direction to the slider axis.
+
+ Related:
+ GetSlideRestitutionOrthoAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setsliderestitutionortholin.html b/doc/doc_files/setsliderestitutionortholin.html
new file mode 100644
index 0000000..8ee4b4c
--- /dev/null
+++ b/doc/doc_files/setsliderestitutionortholin.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ setSlideRestitutionOrthoLin [RCBasic Doc]
+
+
+
+
sub setSlideRestitutionOrthoLin( constraint_id, n)
+
+ Sets the restitution value for orthogonal linear motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when linear motion occurs in a direction orthogonal (perpendicular) to the primary sliding axis of the constraint.
+
+
+ Orthogonal Linear Motion: In the context of a slider constraint, orthogonal linear motion refers to translational movement along axes that are perpendicular to the main sliding axis of the constraint.
+
+
+ Restitution: Restitution is a measure of how much energy is retained or conserved during a collision or interaction. A restitution value of 0.0 indicates no bounce (perfectly inelastic), while 1.0 indicates maximum bounce (perfectly elastic). For orthogonal linear motion, this value describes how much the actors bounce or retain energy when they hit limits or experience movement perpendicular to the slider’s main axis.
+
+ Related:
+ GetSlideRestitutionOrthoLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidesoftnessdirang.html b/doc/doc_files/setslidesoftnessdirang.html
new file mode 100644
index 0000000..b2080b3
--- /dev/null
+++ b/doc/doc_files/setslidesoftnessdirang.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideSoftnessDirAng [RCBasic Doc]
+
+
+
+
sub setSlideSoftnessDirAng( constraint_id, n)
+
+ Sets the softness parameter for the angular motion of the constraint. This parameter is used to define how "soft" or "rigid" the limits of angular motion are, particularly when the angular limits are reached.
+
+
+ The softness parameter defines how smoothly the constraint responds to limit violations. A higher softness value allows for more gradual movements when limits are approached, while a lower value creates a more rigid response. Softness is particularly useful in simulations to avoid harsh impacts or stiff movements when limits are reached.
+
+ Related:
+ GetSlideSoftnessDirAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidesoftnessdirlin.html b/doc/doc_files/setslidesoftnessdirlin.html
new file mode 100644
index 0000000..910a7af
--- /dev/null
+++ b/doc/doc_files/setslidesoftnessdirlin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setConstraintSoftnessDirLin [RCBasic Doc]
+
+
+
+
sub setConstraintSoftnessDirLin( constraint_id, n)
+
+ Sets the softness parameter for the linear motion of the constraint. This parameter influences how the constraint responds when the linear limits of movement are reached along the sliding axis, determining whether the response is soft and gradual or more rigid.
+
+
+ In the context of constraints, softness defines how "compliant" or "stiff" the constraint behaves when the limits are approached. A higher softness value makes the constraint respond more softly and gradually as the limit is approached, while a lower value makes the response stiffer and more rigid.
+
+ Related:
+ GetSlideSoftnessDirLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidesoftnesslimang.html b/doc/doc_files/setslidesoftnesslimang.html
new file mode 100644
index 0000000..7e873fa
--- /dev/null
+++ b/doc/doc_files/setslidesoftnesslimang.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideSoftnessLimAng [RCBasic Doc]
+
+
+
+
sub setSlideSoftnessLimAng( constraint_id, n)
+
+ Sets the softness parameter for the angular limits of the constraint. This parameter affects how "soft" or "rigid" the constraint behaves when the connected actors reach their angular rotational limits around the slider's axis of rotation.
+
+
+ The softness parameter defines how compliant or stiff the constraint behaves when the motion approaches a limit. A higher softness makes the constraint more flexible, allowing for smoother motion near the limit. A lower softness makes the limit response more rigid and immediate.
+
+ Related:
+ GetSlideSoftnessLimAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidesoftnesslimlin.html b/doc/doc_files/setslidesoftnesslimlin.html
new file mode 100644
index 0000000..b6bbce0
--- /dev/null
+++ b/doc/doc_files/setslidesoftnesslimlin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideSoftnessLimLin [RCBasic Doc]
+
+
+
+
sub setSlideSoftnessLimLin( constraint_id, n)
+
+ Sets the softness parameter for the linear limits of the constraint. This parameter influences how "soft" or "rigid" the constraint behaves when the connected actors reach their linear (sliding) limits along the constraint's axis of motion.
+
+
+ The softness parameter defines how compliant or stiff the constraint behaves when limits are approached. A higher softness value allows for a more gradual and flexible response as the limit is reached, while a lower softness value results in a stiffer and more rigid response.
+
+ Related:
+ GetSlideSoftnessLimLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidesoftnessorthoang.html b/doc/doc_files/setslidesoftnessorthoang.html
new file mode 100644
index 0000000..cad7674
--- /dev/null
+++ b/doc/doc_files/setslidesoftnessorthoang.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setSlideSoftnessOrthoAng [RCBasic Doc]
+
+
+
+
sub setSlideSoftnessOrthoAng( constraint_id, n)
+
+ Sets the softness parameter for the orthogonal angular limits of the constraint. This parameter controls how "soft" or "rigid" the constraint behaves when angular rotation is limited along directions orthogonal (perpendicular) to the primary axis of motion.
+
+
+ The softness parameter defines how compliant (soft) or stiff (rigid) the constraint behaves when the bodies approach their angular or linear limits. A higher softness value makes the limit more flexible, allowing for gradual motion, while a lower value makes the limit more rigid and restrictive.
+
+ Related:
+ GetSlideSoftnessOrthoAng
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslidesoftnessortholin.html b/doc/doc_files/setslidesoftnessortholin.html
new file mode 100644
index 0000000..a48db4b
--- /dev/null
+++ b/doc/doc_files/setslidesoftnessortholin.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ setConstraintSoftnessOrthoLin [RCBasic Doc]
+
+
+
+
sub setSlideSoftnessOrthoLin( constraint_id, n)
+
+ Sets the softness parameter for the orthogonal linear limits of the constraint. This parameter affects how "soft" or "rigid" the constraint behaves when the connected actors approach their linear movement limits in directions that are orthogonal (perpendicular) to the primary sliding axis.
+
+
+ The softness parameter determines how rigid or compliant the constraint is when the actors approach their movement limits. A higher softness value allows for smoother, more flexible movement near the limit, while a lower value results in a more rigid, immediate response.
+
+ Related:
+ GetSlideSoftnessOrthoLin
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslideupperanglimit.html b/doc/doc_files/setslideupperanglimit.html
new file mode 100644
index 0000000..927a49c
--- /dev/null
+++ b/doc/doc_files/setslideupperanglimit.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setSlideUpperAngLimit [RCBasic Doc]
+
+
+
+
sub setSlideUpperAngLimit( constraint_id, n)
+
+ Sets the upper limit of the angular movement allowed for the constraint. This function is crucial for determining how much rotational freedom is allowed around the axis of rotation defined by the slider constraint.
+
+
+ The upper angular limit specifies the maximum allowed rotation around the rotational axis for the slider constraint. If the relative rotation between the two actors exceeds this angle, corrective forces are applied to maintain the constraint and prevent further rotation.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setslideupperlinlimit.html b/doc/doc_files/setslideupperlinlimit.html
new file mode 100644
index 0000000..957fe31
--- /dev/null
+++ b/doc/doc_files/setslideupperlinlimit.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ setSlideUpperLinLimit [RCBasic Doc]
+
+
+
+
sub setSlideUpperLinLimit( constraint_id, n)
+
+ Sets the upper limit for linear movement along the constraint's axis. This is a crucial function for controlling how far the connected actors can slide along that axis before the constraint enforces limits.
+
+
+ The upper linear limit specifies the maximum distance that the connected actors can move away from each other along the slider's axis. If the relative movement exceeds this limit, the constraint will apply corrective forces to stop further movement.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setsoundchannels.html b/doc/doc_files/setsoundchannels.html
new file mode 100644
index 0000000..e1374e8
--- /dev/null
+++ b/doc/doc_files/setsoundchannels.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetSoundChannels [RCBasic Doc]
+
+
+
+
sub SetSoundChannels(max_channels)
+
+ Sets the maximum number of sound channels.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setsoundvolume.html b/doc/doc_files/setsoundvolume.html
new file mode 100644
index 0000000..07a5d38
--- /dev/null
+++ b/doc/doc_files/setsoundvolume.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetSoundVolume [RCBasic Doc]
+
+
+
+
sub SetSoundVolume(snd, vol)
+
+ Sets the volume of a sound
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspriteanimation.html b/doc/doc_files/setspriteanimation.html
new file mode 100644
index 0000000..026c7da
--- /dev/null
+++ b/doc/doc_files/setspriteanimation.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetSpriteAnimation [RCBasic Doc]
+
+
+
+
Sub SetSpriteAnimation(sprite, animation)
+
+ Sets the current animation for a sprite
+
+
+ Note: Once an animation is set, it will automatically start
+
+ Related:
+ GetSpriteAnimation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspriteanimationframe.html b/doc/doc_files/setspriteanimationframe.html
new file mode 100644
index 0000000..1975a65
--- /dev/null
+++ b/doc/doc_files/setspriteanimationframe.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetSpriteAnimationFrame [RCBasic Doc]
+
+
+
+
Sub SetSpriteAnimationFrame(sprite, animation, anim_frame, frame)
+
+ Sets a frame in a sprite animation
+
+ Related:
+ GetSpriteAnimationFrame
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspriteanimationlength.html b/doc/doc_files/setspriteanimationlength.html
new file mode 100644
index 0000000..85e21a6
--- /dev/null
+++ b/doc/doc_files/setspriteanimationlength.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetSpriteAnimationLength [RCBasic Doc]
+
+
+
+
Sub SetSpriteAnimationLength(sprite, animation, anim_length)
+
+ Sets the number of frames in a sprite animation
+
+ Related:
+ GetSpriteAnimationLength
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspriteanimationloops.html b/doc/doc_files/setspriteanimationloops.html
new file mode 100644
index 0000000..e8d9898
--- /dev/null
+++ b/doc/doc_files/setspriteanimationloops.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetSpriteAnimationLoops [RCBasic Doc]
+
+
+
+
Sub SetSpriteAnimationLoops(sprite, num_loops)
+
+ Sets the number of animation loops for the sprite
+
+ Related:
+ NumSpriteAnimationLoops
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspriteanimationspeed.html b/doc/doc_files/setspriteanimationspeed.html
new file mode 100644
index 0000000..84924cf
--- /dev/null
+++ b/doc/doc_files/setspriteanimationspeed.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetSpriteAnimationSpeed [RCBasic Doc]
+
+
+
+
Sub SetSpriteAnimationSpeed(sprite, animation, speed)
+
+ Sets the speed in frames per second for a sprite animation
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspriteframe.html b/doc/doc_files/setspriteframe.html
new file mode 100644
index 0000000..48a4752
--- /dev/null
+++ b/doc/doc_files/setspriteframe.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetSpriteFrame [RCBasic Doc]
+
+
+
+
Sub SetSpriteFrame(sprite, frame)
+
+ Sets a sprite to a frame in its frame sheet
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspriteposition.html b/doc/doc_files/setspriteposition.html
new file mode 100644
index 0000000..89e90c8
--- /dev/null
+++ b/doc/doc_files/setspriteposition.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetSpritePosition [RCBasic Doc]
+
+
+
+
Sub SetSpritePosition( sprite, x, y )
+
+ Sets the position of the sprite in the canvas
+
+
+ Note: This is canvas position and not screen position
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspriterotation.html b/doc/doc_files/setspriterotation.html
new file mode 100644
index 0000000..7ca8963
--- /dev/null
+++ b/doc/doc_files/setspriterotation.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SetSpriteRotation [RCBasic Doc]
+
+
+
+
Sub SetSpriteRotation(sprite, angle)
+
+ Sets the angle the sprite is rotated by
+
+ Related:
+ GetSpriteRotation
+ RotateSprite
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspritescale.html b/doc/doc_files/setspritescale.html
new file mode 100644
index 0000000..f79dad7
--- /dev/null
+++ b/doc/doc_files/setspritescale.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SetSpriteScale [RCBasic Doc]
+
+
+
+
Sub SetSpriteScale(sprite, x, y)
+
+ Sets the scale of a sprite
+
+ Related:
+ ScaleSprite
+ GetSpriteScale
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspritesolid.html b/doc/doc_files/setspritesolid.html
new file mode 100644
index 0000000..89402e7
--- /dev/null
+++ b/doc/doc_files/setspritesolid.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetSpriteSolid [RCBasic Doc]
+
+
+
+
Sub SetSpriteSolid(sprite, flag)
+
+ Sets whether a sprite has physics and collision response enabled
+
+ Related:
+ SpriteIsSolid
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspritesource.html b/doc/doc_files/setspritesource.html
new file mode 100644
index 0000000..88c6940
--- /dev/null
+++ b/doc/doc_files/setspritesource.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetSpriteSource [RCBasic Doc]
+
+
+
+
Sub SetSpriteSource(sprite, img)
+
+ Changes the image source for a sprite frame sheet
+
+
+ Note: This needs to be the same size as the current image source or you will have rendering issues
+
+ Related:
+ GetSpriteSource
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspritetype.html b/doc/doc_files/setspritetype.html
new file mode 100644
index 0000000..27f5b01
--- /dev/null
+++ b/doc/doc_files/setspritetype.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ SetSpriteType [RCBasic Doc]
+
+
+
+
Sub SetSpriteType(sprite, sprite_type)
+
+ Sets the type of collision body a sprite has
+
+
+
+ SPRITE_TYPE_STATIC
+
+
+ SPRITE_TYPE_KINEMATIC
+
+
+ SPRITE_TYPE_DYNAMIC
+
+
+ Related:
+ GetSpriteType
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspritevisible.html b/doc/doc_files/setspritevisible.html
new file mode 100644
index 0000000..91162f8
--- /dev/null
+++ b/doc/doc_files/setspritevisible.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetSpriteVisible [RCBasic Doc]
+
+
+
+
Sub SetSpriteVisible(sprite, flag)
+
+ Sets whether the sprite is visible
+
+ Related:
+ SpriteIsVisible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setspritez.html b/doc/doc_files/setspritez.html
new file mode 100644
index 0000000..93754eb
--- /dev/null
+++ b/doc/doc_files/setspritez.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetSpriteZ [RCBasic Doc]
+
+
+
+
Sub SetSpriteZ(sprite, z)
+
+ Sets the drawing priority for sprites.
+
+
+ Note: Sprites with a higher Z order are drawn first and those with lower values will be drawn on top
+
+ Related:
+ SpriteZ
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setterraincameramovementdelta.html b/doc/doc_files/setterraincameramovementdelta.html
new file mode 100644
index 0000000..0a89d1c
--- /dev/null
+++ b/doc/doc_files/setterraincameramovementdelta.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetTerrainCameraMovementDelta [RCBasic Doc]
+
+
+
+
sub SetTerrainCameraMovementDelta( actor, delta )
+
+ Sets the movement camera threshold.
+
+
+ It is used to determine when to recalculate indices for the actor. The default value is 10.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setterraincamerarotationdelta.html b/doc/doc_files/setterraincamerarotationdelta.html
new file mode 100644
index 0000000..12b1fdb
--- /dev/null
+++ b/doc/doc_files/setterraincamerarotationdelta.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetTerrainCameraRotationDelta [RCBasic Doc]
+
+
+
+
sub SetTerrainCameraRotationDelta( actor, delta )
+
+ Sets the rotation camera threshold.
+
+
+ It is used to determine when to recalculate indices for the scene node. The default value is 1.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setterrainloddistance.html b/doc/doc_files/setterrainloddistance.html
new file mode 100644
index 0000000..78ee84b
--- /dev/null
+++ b/doc/doc_files/setterrainloddistance.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetTerrainLODDistance [RCBasic Doc]
+
+
+
+
sub SetTerrainLODDistance( actor, LOD, distance )
+
+ Override the default generation of distance thresholds.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setterrainpatchlod.html b/doc/doc_files/setterrainpatchlod.html
new file mode 100644
index 0000000..7fe03f8
--- /dev/null
+++ b/doc/doc_files/setterrainpatchlod.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetTerrainPatchLOD [RCBasic Doc]
+
+
+
+
sub SetTerrainPatchLOD( actor, patchX, patchZ, LOD )
+
+ Manually sets the LOD of a patch.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/settile.html b/doc/doc_files/settile.html
new file mode 100644
index 0000000..9b0c3e8
--- /dev/null
+++ b/doc/doc_files/settile.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetTile [RCBasic Doc]
+
+
+
+
Sub SetTile(tilemap, tile, x, y)
+
+ Places a tile on a tilemap
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/settileanimationframe.html b/doc/doc_files/settileanimationframe.html
new file mode 100644
index 0000000..9dd63d1
--- /dev/null
+++ b/doc/doc_files/settileanimationframe.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ SetTileAnimationFrame [RCBasic Doc]
+
+
+
+
Sub SetTileAnimationFrame(tileset, base_tile, anim_frame, tile)
+
+ Sets a frame of animation for a tile
+
+
+ Parameters:
+
+
+
+ tileset - The tileset that the base_tile is in
+
+
+ base_tile - The tile with the frame of animation being set
+
+
+ anim_frame - The specific index in the animation
+
+
+ tile - The tile to set this frame to
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/settileanimationlength.html b/doc/doc_files/settileanimationlength.html
new file mode 100644
index 0000000..d86a5e3
--- /dev/null
+++ b/doc/doc_files/settileanimationlength.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetTileAnimationLength [RCBasic Doc]
+
+
+
+
Sub SetTileAnimationLength(tileset, base_tile, num_frames)
+
+ Sets the number of frames in a tile's animation
+
+ Related:
+ GetTileAnimationLength
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/settileanimationspeed.html b/doc/doc_files/settileanimationspeed.html
new file mode 100644
index 0000000..027f3d1
--- /dev/null
+++ b/doc/doc_files/settileanimationspeed.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetTileAnimationSpeed [RCBasic Doc]
+
+
+
+
Sub SetTileAnimationSpeed(tileset, base_tile, speed)
+
+ Sets the speed of a tile's animation
+
+ Related:
+ GetTileAnimationSpeed
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/settilemapsize.html b/doc/doc_files/settilemapsize.html
new file mode 100644
index 0000000..5aedd8d
--- /dev/null
+++ b/doc/doc_files/settilemapsize.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SetTileMapSize [RCBasic Doc]
+
+
+
+
Sub SetTileMapSize(tilemap, widthInTiles, heightInTiles)
+
+ Resize a tile map
+
+ Related:
+ CreateTileMap
+ GetTileMapSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setup.html b/doc/doc_files/setup.html
new file mode 100644
index 0000000..472dfec
--- /dev/null
+++ b/doc/doc_files/setup.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+ RCBasic Setup [RCBasic Doc]
+
+
+
+
SETTING UP RCBASIC
+
+ RCBasic comes with 2 command-line tools for creating programs. The first is rcbasic_build which takes your sourcecode in your *.bas file and compiles it into a *.cbc file. The *.cbc file contains intermediate bytecode which can be ran with the rcbasic (rcbasic.exe on windows) application.
+
+
+ NOTE: On Windows, you need to include all the 32-bit dlls with the 32-bit executable and all the 64-bit dlls with the 64-bit executable. The rcbasic package tool will automatically do all of this for you as well as package for other systems as well.
+
+
+
RUN PROGRAMS FROM GEANY
+
+
+ LINUX In the installer directory there is a folder called geany_files. Inside the folder there is a file named filetypes.rcbasic. You can override the geany *.bas configuration by replacing the freeBasic configuration with this file. Just copy this file to the geany filedefs path, which on most linux distibutions should be (/home/.config/geany/filedefs), and rename the file to filetypes.freebasic.
+
+
+ Once you have rcbasic set up with geany you just need to create a new file and save it as *.bas. Then you can compile your program by going to Build->Compile. Once your program is compiled you can run it by going to Build->Execute.
+
+
+ NOTE: If you want to use a different file extension for rcbasic programs you can still use this file and just set it up for a different extension. Refer to the geany documentation on how to set up different file types.
+
+
+ WINDOWS Geany comes preconfigured with rcbasic on windows. Just run the start_editor.bat file and create a new *.bas file. Select the File->New with Template option in the menu to start with a simple template program. Once you have created a new *.bas file goto Build->Compile to compile your program to a *.cbc file. Then goto Build->Execute to run your program.
+
+
+
USING RCBASIC FROM THE COMMAND-LINE RCBasic will be added to path on install on linux. On Windows you will need to add the rcbasic folder to your path. Either (rcbasic/rcbasic_32) or (rcbasic/rcbasic_64) depending on your operating system. Once rcbasic is in your path you can simple pass a source file to rcbasic_build to create a *.cbc file.
+
+
+ rcbasic_build myprogram.bas
+
+
+ Once you have a *.cbc file you can pass it to rcbasic to run it.
+
+
+ rcbasic myprogram.cbc
+
+
+ Both tools also except the --version argument which will simply output the version of rcbasic you are using.
+
+
+ rcbasic_build --version
+ rcbasic -version
+
+
+
PORTING TO OTHER PLATFORMS
+
+
+ From RCBasic Studio, select tools->distribute and then select the platforms you want to distribute to and click the "MAKE APP" button.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setvideodrawrect.html b/doc/doc_files/setvideodrawrect.html
new file mode 100644
index 0000000..a982606
--- /dev/null
+++ b/doc/doc_files/setvideodrawrect.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetVideoDrawRect [RCBasic Doc]
+
+
+
+
sub SetVideoDrawRect(x, y, w, h)
+
+ Sets the area on the current canvas where the video will be displayed.
+
+
+ Note: This is a function that was more useful in older versions of RCBasic. Currently its better to use canvas controls for this.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setvideoposition.html b/doc/doc_files/setvideoposition.html
new file mode 100644
index 0000000..b9864fc
--- /dev/null
+++ b/doc/doc_files/setvideoposition.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetVideoPosition [RCBasic Doc]
+
+
+
+
sub SetVideoPosition(pos)
+
+ Sets the position within the current video in milliseconds
+
+ Related:
+ GetVideoPosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setvideovolume.html b/doc/doc_files/setvideovolume.html
new file mode 100644
index 0000000..3315799
--- /dev/null
+++ b/doc/doc_files/setvideovolume.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetVideoVolume [RCBasic Doc]
+
+
+
+
sub SetVideoVolume( vol )
+
+ Sets the volume of the video track
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwatercolor.html b/doc/doc_files/setwatercolor.html
new file mode 100644
index 0000000..c5e2f82
--- /dev/null
+++ b/doc/doc_files/setwatercolor.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ setWaterColor [RCBasic Doc]
+
+
+
+
sub setWaterColor( actor, c)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwatercolorblendfactor.html b/doc/doc_files/setwatercolorblendfactor.html
new file mode 100644
index 0000000..864ce48
--- /dev/null
+++ b/doc/doc_files/setwatercolorblendfactor.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ setWaterColorBlendFactor [RCBasic Doc]
+
+
+
+
sub setWaterColorBlendFactor( actor, cbfactor)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwaterwaveheight.html b/doc/doc_files/setwaterwaveheight.html
new file mode 100644
index 0000000..015f34f
--- /dev/null
+++ b/doc/doc_files/setwaterwaveheight.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ setWaterWaveHeight [RCBasic Doc]
+
+
+
+
sub setWaterWaveHeight( actor, h)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwaterwinddirection.html b/doc/doc_files/setwaterwinddirection.html
new file mode 100644
index 0000000..dd717fc
--- /dev/null
+++ b/doc/doc_files/setwaterwinddirection.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ setWaterWindDirection [RCBasic Doc]
+
+
+
+
sub setWaterWindDirection( actor, x, z)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwaterwindforce.html b/doc/doc_files/setwaterwindforce.html
new file mode 100644
index 0000000..7c81415
--- /dev/null
+++ b/doc/doc_files/setwaterwindforce.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ setWaterWindForce [RCBasic Doc]
+
+
+
+
sub setWaterWindForce( actor, f)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowalwaysontop.html b/doc/doc_files/setwindowalwaysontop.html
new file mode 100644
index 0000000..51cd0a2
--- /dev/null
+++ b/doc/doc_files/setwindowalwaysontop.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowAlwaysOnTop [RCBasic Doc]
+
+
+
+
sub SetWindowAlwaysOnTop( flag )
+
+ Sets the window as the highest priority on the display.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowautoclose.html b/doc/doc_files/setwindowautoclose.html
new file mode 100644
index 0000000..cae6f61
--- /dev/null
+++ b/doc/doc_files/setwindowautoclose.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowAutoClose [RCBasic Doc]
+
+
+
+
sub SetWindowAutoClose( exit_on_close )
+
+ Sets whether the close button on the window closes it.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowbordered.html b/doc/doc_files/setwindowbordered.html
new file mode 100644
index 0000000..838eee9
--- /dev/null
+++ b/doc/doc_files/setwindowbordered.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SetWindowBordered [RCBasic Doc]
+
+
+
+
sub SetWindowBordered( flag)
+
+ Sets whether the window has a border or not.
+
+ Related:
+ WindowIsBordered
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowfullscreen.html b/doc/doc_files/setwindowfullscreen.html
new file mode 100644
index 0000000..f853b17
--- /dev/null
+++ b/doc/doc_files/setwindowfullscreen.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowFullscreen [RCBasic Doc]
+
+
+
+
sub SetWindowFullscreen( flag)
+
+ You will never guess what this does
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowicon.html b/doc/doc_files/setwindowicon.html
new file mode 100644
index 0000000..daf713a
--- /dev/null
+++ b/doc/doc_files/setwindowicon.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowIcon [RCBasic Doc]
+
+
+
+
sub SetWindowIcon( img )
+
+ Sets the icon that is displayed on the window border
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowmaxsize.html b/doc/doc_files/setwindowmaxsize.html
new file mode 100644
index 0000000..68bff67
--- /dev/null
+++ b/doc/doc_files/setwindowmaxsize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowMaxSize [RCBasic Doc]
+
+
+
+
sub SetWindowMaxSize( w, h)
+
+ Sets the max size for a resizable window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowminsize.html b/doc/doc_files/setwindowminsize.html
new file mode 100644
index 0000000..17fcb12
--- /dev/null
+++ b/doc/doc_files/setwindowminsize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowMinSize [RCBasic Doc]
+
+
+
+
sub SetWindowMinSize( w, h)
+
+ Sets the min size for a resizable window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowposition.html b/doc/doc_files/setwindowposition.html
new file mode 100644
index 0000000..2590838
--- /dev/null
+++ b/doc/doc_files/setwindowposition.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowPosition [RCBasic Doc]
+
+
+
+
sub SetWindowPosition( x, y )
+
+ Sets the position of the window on the display
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowresizable.html b/doc/doc_files/setwindowresizable.html
new file mode 100644
index 0000000..fc79bf9
--- /dev/null
+++ b/doc/doc_files/setwindowresizable.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowResizable [RCBasic Doc]
+
+
+
+
sub SetWindowResizable( flag )
+
+ Sets whether or not a window is resizable
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowsize.html b/doc/doc_files/setwindowsize.html
new file mode 100644
index 0000000..678bcc8
--- /dev/null
+++ b/doc/doc_files/setwindowsize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowSize [RCBasic Doc]
+
+
+
+
sub SetWindowSize( w, h )
+
+ Sets the size of a window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowtitle.html b/doc/doc_files/setwindowtitle.html
new file mode 100644
index 0000000..f4c8180
--- /dev/null
+++ b/doc/doc_files/setwindowtitle.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SetWindowTitle [RCBasic Doc]
+
+
+
+
sub SetWindowTitle( title$ )
+
+ Sets the title of the window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setwindowvsync.html b/doc/doc_files/setwindowvsync.html
new file mode 100644
index 0000000..2f311c1
--- /dev/null
+++ b/doc/doc_files/setwindowvsync.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ SetWindowVSync [RCBasic Doc]
+
+
+
+
sub SetWindowVSync( flag )
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setworld3ddeltatime.html b/doc/doc_files/setworld3ddeltatime.html
new file mode 100644
index 0000000..907b8c0
--- /dev/null
+++ b/doc/doc_files/setworld3ddeltatime.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ SetWorld3DDeltaTime [RCBasic Doc]
+
+
+
+
sub SetWorld3DDeltaTime( dt )
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setworld3dmaxsubsteps.html b/doc/doc_files/setworld3dmaxsubsteps.html
new file mode 100644
index 0000000..dab9c54
--- /dev/null
+++ b/doc/doc_files/setworld3dmaxsubsteps.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetWorld3DMaxSubSteps [RCBasic Doc]
+
+
+
+
sub SetWorld3DMaxSubSteps( steps )
+
+ Sets the max sub steps to break the simulation up into
+
+
+ maxSubSteps - The maximum number of substeps to perform if the time step is larger than the fixedTimeStep. When simulating in real-time, if a frame takes longer than expected (e.g., a frame is delayed), you can break the simulation into several smaller substeps to ensure the simulation is accurate.
+
+ Related:
+ SetWorld3DMaxTimeStep
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/setworld3dtimestep.html b/doc/doc_files/setworld3dtimestep.html
new file mode 100644
index 0000000..ac1a233
--- /dev/null
+++ b/doc/doc_files/setworld3dtimestep.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SetWorld3DTimeStep [RCBasic Doc]
+
+
+
+
sub SetWorld3DTimeStep( ts )
+
+ Sets the fixed time step for the physics simulation
+
+
+ fixedTimeStep - The fixed time step size, which is the interval at which the physics simulation runs internally. It is often set to 1/60th of a second (0.0166667 seconds) by default, meaning the physics engine updates 60 times per second.
+
+ Related:
+ SetWorld3DMaxSubSteps
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/showmouse.html b/doc/doc_files/showmouse.html
new file mode 100644
index 0000000..8e4974b
--- /dev/null
+++ b/doc/doc_files/showmouse.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ShowMouse [RCBasic Doc]
+
+
+
+
sub ShowMouse()
+
+ Sets the mouse cursor visible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/showwindow.html b/doc/doc_files/showwindow.html
new file mode 100644
index 0000000..080d503
--- /dev/null
+++ b/doc/doc_files/showwindow.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ShowWindow [RCBasic Doc]
+
+
+
+
sub ShowWindow( )
+
+ Sets the window visible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/sign.html b/doc/doc_files/sign.html
new file mode 100644
index 0000000..272b35d
--- /dev/null
+++ b/doc/doc_files/sign.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Sign [RCBasic Doc]
+
+
+
+
function Sign(n)
+
+ Returns the sign of a number
+
+
+ n < 0 returns -1 n = 0 returns 0 n > 0 returns 1
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/sin.html b/doc/doc_files/sin.html
new file mode 100644
index 0000000..62e7947
--- /dev/null
+++ b/doc/doc_files/sin.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Sin [RCBasic Doc]
+
+
+
+
function Sin(n)
+
+ Returns the sine of angle n
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/size.html b/doc/doc_files/size.html
new file mode 100644
index 0000000..3fd05dc
--- /dev/null
+++ b/doc/doc_files/size.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Size [RCBasic Doc]
+
+
+
+
function Size(s$)
+
+ Returns the size in bytes of a string
+
+
+ The size will not always be the same as the length. For instance, a lot of unicode characters are represented by more than one byte.
+
+ Related:
+ Len
+ Length
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/solvematrix.html b/doc/doc_files/solvematrix.html
new file mode 100644
index 0000000..597d09e
--- /dev/null
+++ b/doc/doc_files/solvematrix.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SolveMatrix [RCBasic Doc]
+
+
+
+
function SolveMatrix(mA, mB, mC)
+
+ Solve the system that has mA as coefficient and mB as the hand side of the equation. Stores the result in mC.
+
+
+ Returns true if it was able to be solved and false if not.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/sound.html b/doc/doc_files/sound.html
new file mode 100644
index 0000000..8c1aeb4
--- /dev/null
+++ b/doc/doc_files/sound.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+ RCBasic Sound [RCBasic Doc]
+
+
+
+
SOUND
+
+ Loading sound and music is fairly straight forward. The big difference between sounds and music is that your program can only have one music track but you could have several sound tracks at once.
+
+
+ Lets first go over loading and playing sounds.
+
+
+ snd = LoadSound( "MySound.wav" )
+ PlaySound( snd, 1 , 3 )
+
+
+ There is a lot you can do with sounds when playing them including simulating 3D positional audio. I highly encourage you to play around with the audio to find the right mix for your project.
+
+
+ There is only 1 music track that can be loaded at one time. Loading and playing music is pretty straight forward.
+
+
+ LoadMusic ( "MYMUSIC.MP3" )
+ PlayMusic ( -1 )
+
+
+ Music is even simpler than sound. Generally all you will want to do is load a music track and set it to loop infinitely but you have a lot of control over how the music plays as well.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/soundexists.html b/doc/doc_files/soundexists.html
new file mode 100644
index 0000000..263c791
--- /dev/null
+++ b/doc/doc_files/soundexists.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SoundExists [RCBasic Doc]
+
+
+
+
function SoundExists(snd)
+
+ Returns true if the snd id given is associated with an allocated audio track in memory
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/soundisenabled.html b/doc/doc_files/soundisenabled.html
new file mode 100644
index 0000000..b74f6b6
--- /dev/null
+++ b/doc/doc_files/soundisenabled.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SoundIsEnabled [RCBasic Doc]
+
+
+
+
function SoundIsEnabled()
+
+ Returns true if the audio subsystem has been initialized.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/spriteanimationisplaying.html b/doc/doc_files/spriteanimationisplaying.html
new file mode 100644
index 0000000..6c7540b
--- /dev/null
+++ b/doc/doc_files/spriteanimationisplaying.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ SpriteAnimationIsPlaying [RCBasic Doc]
+
+
+
+
Function SpriteAnimationIsPlaying(sprite)
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/spriteheight.html b/doc/doc_files/spriteheight.html
new file mode 100644
index 0000000..5573c94
--- /dev/null
+++ b/doc/doc_files/spriteheight.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SpriteHeight [RCBasic Doc]
+
+
+
+
Function SpriteHeight(sprite)
+
+ Returns the frame height of a sprite
+
+ Related:
+ SpriteWidth
+ GetSpriteSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/spriteissolid.html b/doc/doc_files/spriteissolid.html
new file mode 100644
index 0000000..73e1d13
--- /dev/null
+++ b/doc/doc_files/spriteissolid.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SpriteIsSolid [RCBasic Doc]
+
+
+
+
Function SpriteIsSolid(sprite)
+
+ Returns true if a sprite is has physics and collision response enabled
+
+ Related:
+ SetSpriteSolid
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/spriteisvisible.html b/doc/doc_files/spriteisvisible.html
new file mode 100644
index 0000000..cef8c71
--- /dev/null
+++ b/doc/doc_files/spriteisvisible.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SpriteIsVisible [RCBasic Doc]
+
+
+
+
Function SpriteIsVisible(sprite)
+
+ Returns whether the sprite is visible
+
+ Related:
+ SetSpriteVisible
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/spritewidth.html b/doc/doc_files/spritewidth.html
new file mode 100644
index 0000000..5350a5f
--- /dev/null
+++ b/doc/doc_files/spritewidth.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SpriteWidth [RCBasic Doc]
+
+
+
+
Function SpriteWidth(sprite)
+
+ Returns the frame width of a sprite
+
+ Related:
+ SpriteHeight
+ GetSpriteSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/spritex.html b/doc/doc_files/spritex.html
new file mode 100644
index 0000000..54fed33
--- /dev/null
+++ b/doc/doc_files/spritex.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ SpriteX [RCBasic Doc]
+
+
+
+
Function SpriteX(sprite)
+
+ Returns the X position of a sprite on a canvas
+
+ Related:
+ SpriteY
+ SetSpritePosition
+ GetSpritePosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/spritey.html b/doc/doc_files/spritey.html
new file mode 100644
index 0000000..3f01bb0
--- /dev/null
+++ b/doc/doc_files/spritey.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ SpriteY [RCBasic Doc]
+
+
+
+
Function SpriteY(sprite)
+
+ Returns the Y position of a sprite on a canvas
+
+ Related:
+ SpriteX
+ SetSpritePosition
+ GetSpritePosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/spritez.html b/doc/doc_files/spritez.html
new file mode 100644
index 0000000..2c71ab8
--- /dev/null
+++ b/doc/doc_files/spritez.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ SpriteZ [RCBasic Doc]
+
+
+
+
Function SpriteZ(sprite)
+
+ Returns the drawing priority for sprites.
+
+
+ Note: Sprites with a higher Z order are drawn first and those with lower values will be drawn on top
+
+ Related:
+ SetSpriteZ
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/sqrt.html b/doc/doc_files/sqrt.html
new file mode 100644
index 0000000..58e9a70
--- /dev/null
+++ b/doc/doc_files/sqrt.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Sqrt [RCBasic Doc]
+
+
+
+
function Sqrt(n)
+
+ Returns the square root of n
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/squarematrix.html b/doc/doc_files/squarematrix.html
new file mode 100644
index 0000000..8a30349
--- /dev/null
+++ b/doc/doc_files/squarematrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SquareMatrix [RCBasic Doc]
+
+
+
+
function SquareMatrix(mA, mB)
+
+ Stores the square of matrix mA in the matrix mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stack_size_n.html b/doc/doc_files/stack_size_n.html
new file mode 100644
index 0000000..d2eb11d
--- /dev/null
+++ b/doc/doc_files/stack_size_n.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Stack_Size_N [RCBasic Doc]
+
+
+
+
function Stack_Size_N( num_stack )
+
+ Returns the number of elements on a number stack
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stack_size_s.html b/doc/doc_files/stack_size_s.html
new file mode 100644
index 0000000..2aba495
--- /dev/null
+++ b/doc/doc_files/stack_size_s.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Stack_Size_S [RCBasic Doc]
+
+
+
+
function Stack_Size_S( str_stack )
+
+ Returns the number of elements on a string stack
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/startactortransition.html b/doc/doc_files/startactortransition.html
new file mode 100644
index 0000000..b1e0eb8
--- /dev/null
+++ b/doc/doc_files/startactortransition.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ StartActorTransition [RCBasic Doc]
+
+
+
+
sub StartActorTransition( actor, frame, transition_time )
+
+ Starts an actor transition from its current frame in an animation to a specified frame
+
+
+
+ frame - The frame to transition to
+
+
+ transition_time - The amount of time to transition
+
+
+ Related:
+ StopActorTransition
+ ActorIsInTransition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/startparticleemitter.html b/doc/doc_files/startparticleemitter.html
new file mode 100644
index 0000000..27a678a
--- /dev/null
+++ b/doc/doc_files/startparticleemitter.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ startParticleEmitter [RCBasic Doc]
+
+
+
+
sub startParticleEmitter( actor)
+
+ Starts particle emission for a particle actor
+
+ Related:
+ StopParticleEmitter
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stopactortransition.html b/doc/doc_files/stopactortransition.html
new file mode 100644
index 0000000..3213d7a
--- /dev/null
+++ b/doc/doc_files/stopactortransition.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ StopActorTransition [RCBasic Doc]
+
+
+
+
sub StopActorTransition( actor )
+
+ Stops a transition that was started with StartActorTransition
+
+ Related:
+ StartActorTransition
+ ActorIsInTransition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stopmusic.html b/doc/doc_files/stopmusic.html
new file mode 100644
index 0000000..dbf89ea
--- /dev/null
+++ b/doc/doc_files/stopmusic.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ StopMusic [RCBasic Doc]
+
+
+
+
sub StopMusic()
+
+ Stops playing the loaded music track and resets the music position to 0
+
+ Related:
+ PlayMusic
+ PauseMusic
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stopparticleemitter.html b/doc/doc_files/stopparticleemitter.html
new file mode 100644
index 0000000..e6a603b
--- /dev/null
+++ b/doc/doc_files/stopparticleemitter.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ stopParticleEmitter [RCBasic Doc]
+
+
+
+
sub stopParticleEmitter( actor)
+
+ Stops particle emission for a particle actor
+
+ Related:
+ StartParticleEmitter
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stopsound.html b/doc/doc_files/stopsound.html
new file mode 100644
index 0000000..967ed26
--- /dev/null
+++ b/doc/doc_files/stopsound.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ StopSound [RCBasic Doc]
+
+
+
+
sub StopSound(channel)
+
+ Stops playing sound on the specified channel
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stopvideo.html b/doc/doc_files/stopvideo.html
new file mode 100644
index 0000000..77bfba6
--- /dev/null
+++ b/doc/doc_files/stopvideo.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ StopVideo [RCBasic Doc]
+
+
+
+
sub StopVideo()
+
+ Stops playing the loaded video track and resets the video position to 0
+
+ Related:
+ PlayVideo
+ PauseVideo
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/str.html b/doc/doc_files/str.html
new file mode 100644
index 0000000..bfb27a0
--- /dev/null
+++ b/doc/doc_files/str.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Str$ [RCBasic Doc]
+
+
+
+
function Str$(n)
+
+ Returns a number converted to a string
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/str_f.html b/doc/doc_files/str_f.html
new file mode 100644
index 0000000..0012aee
--- /dev/null
+++ b/doc/doc_files/str_f.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Str_F$ [RCBasic Doc]
+
+
+
+
function Str_F$(n)
+
+ Returns a number converted to a string in fixed notation
+
+
+ The number will be returned with 6 decimal places of precision.
+
+ Related:
+ Str$
+ Str_S$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/str_s.html b/doc/doc_files/str_s.html
new file mode 100644
index 0000000..8ddbed5
--- /dev/null
+++ b/doc/doc_files/str_s.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Str_S$ [RCBasic Doc]
+
+
+
+
function Str_S$(n)
+
+ Returns a number converted to a string in scientific notation
+
+ Related:
+ Str$
+ Str_F$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stringarraycopy.html b/doc/doc_files/stringarraycopy.html
new file mode 100644
index 0000000..7e76381
--- /dev/null
+++ b/doc/doc_files/stringarraycopy.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ StringArrayCopy [RCBasic Doc]
+
+
+
+
sub StringArrayCopy(ByRef src$, ByRef dst$)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayCopy()
+
+ Related:
+ ArrayCopy
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stringarraydim.html b/doc/doc_files/stringarraydim.html
new file mode 100644
index 0000000..8d1ce4f
--- /dev/null
+++ b/doc/doc_files/stringarraydim.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ StringArrayDim [RCBasic Doc]
+
+
+
+
function StringArrayDim(Byref id$)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayDim()
+
+ Related:
+ ArrayDim
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stringarrayfill.html b/doc/doc_files/stringarrayfill.html
new file mode 100644
index 0000000..cfa606c
--- /dev/null
+++ b/doc/doc_files/stringarrayfill.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ StringArrayFill [RCBasic Doc]
+
+
+
+
sub StringArrayFill(ByRef src$, fdata$)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayFill()
+
+ Related:
+ ArrayFill
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stringarraysize.html b/doc/doc_files/stringarraysize.html
new file mode 100644
index 0000000..a761347
--- /dev/null
+++ b/doc/doc_files/stringarraysize.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ StringArraySize [RCBasic Doc]
+
+
+
+
function StringArraySize(Byref id$, array_dim)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArraySize()
+
+ Related:
+ ArraySize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stringfill.html b/doc/doc_files/stringfill.html
new file mode 100644
index 0000000..fb98e68
--- /dev/null
+++ b/doc/doc_files/stringfill.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ StringFill$ [RCBasic Doc]
+
+
+
+
function StringFill$(src$, n)
+
+ Returns a string filled with src$ repeated n times
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/stringfrombuffer.html b/doc/doc_files/stringfrombuffer.html
new file mode 100644
index 0000000..0bc5554
--- /dev/null
+++ b/doc/doc_files/stringfrombuffer.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ StringFromBuffer$ [RCBasic Doc]
+
+
+
+
function StringFromBuffer$(ByRef buffer, buffer_size)
+
+ Returns a string generated from the character values stored in the buffer
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/subtractmatrix.html b/doc/doc_files/subtractmatrix.html
new file mode 100644
index 0000000..efce740
--- /dev/null
+++ b/doc/doc_files/subtractmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SubtractMatrix [RCBasic Doc]
+
+
+
+
function SubtractMatrix(mA, mB, mC)
+
+ Stores matrix mA minus matrix mB in matrix mC
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/swapmatrix.html b/doc/doc_files/swapmatrix.html
new file mode 100644
index 0000000..9aeb654
--- /dev/null
+++ b/doc/doc_files/swapmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SwapMatrix [RCBasic Doc]
+
+
+
+
sub SwapMatrix(mA, mB)
+
+ Swaps the contents of 2 matrices
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/swapmatrixcolumn.html b/doc/doc_files/swapmatrixcolumn.html
new file mode 100644
index 0000000..d1930ff
--- /dev/null
+++ b/doc/doc_files/swapmatrixcolumn.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SwapMatrixColumn [RCBasic Doc]
+
+
+
+
function SwapMatrixColumn(mA, C1, C2)
+
+ Swaps the contents of 2 columns in a matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/swapmatrixrow.html b/doc/doc_files/swapmatrixrow.html
new file mode 100644
index 0000000..cafced5
--- /dev/null
+++ b/doc/doc_files/swapmatrixrow.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SwapMatrixRow [RCBasic Doc]
+
+
+
+
function SwapMatrixRow(mA, R1, R2)
+
+ Swaps the contents of 2 rows in a matrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/system.html b/doc/doc_files/system.html
new file mode 100644
index 0000000..ec28956
--- /dev/null
+++ b/doc/doc_files/system.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ System [RCBasic Doc]
+
+
+
+
function System(cmd$)
+
+ Runs an operating system command
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/systemram.html b/doc/doc_files/systemram.html
new file mode 100644
index 0000000..c4ed040
--- /dev/null
+++ b/doc/doc_files/systemram.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ SystemRam [RCBasic Doc]
+
+
+
+
function SystemRam()
+
+ Returns the amount of RAM available
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/systemreturnstdout.html b/doc/doc_files/systemreturnstdout.html
new file mode 100644
index 0000000..7aa7ca9
--- /dev/null
+++ b/doc/doc_files/systemreturnstdout.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ SystemReturnStdOut$ [RCBasic Doc]
+
+
+
+
function SystemReturnStdOut$(cmd$)
+
+ Runs an operating system command and returns the output
+
+ Related:
+ System
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tally.html b/doc/doc_files/tally.html
new file mode 100644
index 0000000..1c4819c
--- /dev/null
+++ b/doc/doc_files/tally.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Tally [RCBasic Doc]
+
+
+
+
function Tally(src$, substr$)
+
+ Returns the number of instances of substr$ in the src$ string
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tan.html b/doc/doc_files/tan.html
new file mode 100644
index 0000000..0a3e829
--- /dev/null
+++ b/doc/doc_files/tan.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Tan [RCBasic Doc]
+
+
+
+
function Tan(n)
+
+ Returns the tangent of n
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tcp_acceptsocket.html b/doc/doc_files/tcp_acceptsocket.html
new file mode 100644
index 0000000..7708fc2
--- /dev/null
+++ b/doc/doc_files/tcp_acceptsocket.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TCP_AcceptSocket [RCBasic Doc]
+
+
+
+
function TCP_AcceptSocket(server, client)
+
+ Attempts to accept a connection from a server socket. If successful it will open a client socket to communicate with the server and return true. If it fails it will return false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tcp_closesocket.html b/doc/doc_files/tcp_closesocket.html
new file mode 100644
index 0000000..d4080c1
--- /dev/null
+++ b/doc/doc_files/tcp_closesocket.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TCP_CloseSocket [RCBasic Doc]
+
+
+
+
sub TCP_CloseSocket(socket)
+
+ Closes a socket
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tcp_getdata.html b/doc/doc_files/tcp_getdata.html
new file mode 100644
index 0000000..3d19ae9
--- /dev/null
+++ b/doc/doc_files/tcp_getdata.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TCP_GetData [RCBasic Doc]
+
+
+
+
function TCP_GetData(socket, numBytes, ByRef sData$)
+
+ Reads a given number of bytes from a socket
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tcp_opensocket.html b/doc/doc_files/tcp_opensocket.html
new file mode 100644
index 0000000..1545bdf
--- /dev/null
+++ b/doc/doc_files/tcp_opensocket.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TCP_OpenSocket [RCBasic Doc]
+
+
+
+
function TCP_OpenSocket(host$, port)
+
+ Opens a socket to talk to host$ on the given port
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tcp_remotehost.html b/doc/doc_files/tcp_remotehost.html
new file mode 100644
index 0000000..aeeb9a7
--- /dev/null
+++ b/doc/doc_files/tcp_remotehost.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TCP_RemoteHost [RCBasic Doc]
+
+
+
+
function TCP_RemoteHost(socket)
+
+ Returns the destination host address
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tcp_remoteport.html b/doc/doc_files/tcp_remoteport.html
new file mode 100644
index 0000000..d17b60a
--- /dev/null
+++ b/doc/doc_files/tcp_remoteport.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TCP_RemotePort [RCBasic Doc]
+
+
+
+
function TCP_RemotePort(socket)
+
+ Returns the port the socket is connecting on
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tcp_senddata.html b/doc/doc_files/tcp_senddata.html
new file mode 100644
index 0000000..342f683
--- /dev/null
+++ b/doc/doc_files/tcp_senddata.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TCP_SendData [RCBasic Doc]
+
+
+
+
sub TCP_SendData(socket, sData$)
+
+ Send data through the given socket.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tcp_socketready.html b/doc/doc_files/tcp_socketready.html
new file mode 100644
index 0000000..408fa0b
--- /dev/null
+++ b/doc/doc_files/tcp_socketready.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TCP_SocketReady [RCBasic Doc]
+
+
+
+
function TCP_SocketReady(socket)
+
+ Returns 0 for no activity and non zero for activity. You need to call CheckSockets() at some point before this otherwise it will always return 0.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tell.html b/doc/doc_files/tell.html
new file mode 100644
index 0000000..f583808
--- /dev/null
+++ b/doc/doc_files/tell.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Tell [RCBasic Doc]
+
+
+
+
function Tell(stream)
+
+ Returns the current position within the file stream
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/textheight.html b/doc/doc_files/textheight.html
new file mode 100644
index 0000000..b0f3f2d
--- /dev/null
+++ b/doc/doc_files/textheight.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ TextHeight [RCBasic Doc]
+
+
+
+
function TextHeight(txt$)
+
+ The height of text rendered with the active font
+
+ Related:
+ TextWidth
+ GetTextSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/textwidth.html b/doc/doc_files/textwidth.html
new file mode 100644
index 0000000..8852b65
--- /dev/null
+++ b/doc/doc_files/textwidth.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ TextWidth [RCBasic Doc]
+
+
+
+
function TextWidth(txt$)
+
+ The width of text rendered with the active font
+
+ Related:
+ TextHeight
+ GetTextSize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/ticks.html b/doc/doc_files/ticks.html
new file mode 100644
index 0000000..cec9e29
--- /dev/null
+++ b/doc/doc_files/ticks.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Ticks [RCBasic Doc]
+
+
+
+
function Ticks()
+
+ Returns the number of CPU ticks since the start of a program
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/time.html b/doc/doc_files/time.html
new file mode 100644
index 0000000..2e0bc47
--- /dev/null
+++ b/doc/doc_files/time.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Time$ [RCBasic Doc]
+
+
+
+
function Time$()
+
+ Returns the current time in "HH:MM:SS" format
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/timer.html b/doc/doc_files/timer.html
new file mode 100644
index 0000000..813b266
--- /dev/null
+++ b/doc/doc_files/timer.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Timer [RCBasic Doc]
+
+
+
+
function Timer()
+
+ Returns the number of milliseconds since the start of the program.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/touchpressure.html b/doc/doc_files/touchpressure.html
new file mode 100644
index 0000000..76e0774
--- /dev/null
+++ b/doc/doc_files/touchpressure.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TouchPressure [RCBasic Doc]
+
+
+
+
function TouchPressure()
+
+ Returns the touch pressure of a touch event.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/translateactor.html b/doc/doc_files/translateactor.html
new file mode 100644
index 0000000..645b627
--- /dev/null
+++ b/doc/doc_files/translateactor.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ TranslateActor [RCBasic Doc]
+
+
+
+
sub TranslateActor( actor, x, y, z )
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/translateactorlocal.html b/doc/doc_files/translateactorlocal.html
new file mode 100644
index 0000000..e6c2f7c
--- /dev/null
+++ b/doc/doc_files/translateactorlocal.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TranslateActorLocal [RCBasic Doc]
+
+
+
+
sub TranslateActorLocal( actor, x, y, z )
+
+ Moves an actor relative to its current position
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/translateactorworld.html b/doc/doc_files/translateactorworld.html
new file mode 100644
index 0000000..7147fce
--- /dev/null
+++ b/doc/doc_files/translateactorworld.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TranslateActorWorld [RCBasic Doc]
+
+
+
+
sub TranslateActorWorld( actor, x, y, z )
+
+ Moves an actor relative to its current position
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/translatecamera.html b/doc/doc_files/translatecamera.html
new file mode 100644
index 0000000..5c7c46b
--- /dev/null
+++ b/doc/doc_files/translatecamera.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TranslateCamera [RCBasic Doc]
+
+
+
+
sub TranslateCamera( x, y, z)
+
+ Moves the camera relative to its current position
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/translatesprite.html b/doc/doc_files/translatesprite.html
new file mode 100644
index 0000000..11f67fb
--- /dev/null
+++ b/doc/doc_files/translatesprite.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ TranslateSprite [RCBasic Doc]
+
+
+
+
Sub TranslateSprite(sprite, x, y)
+
+ Move a sprite relative to its current position
+
+
+ Note: This function sets the position of a sprite without regards to physics properties so it will not trigger collision detection or collision response.
+
+ Related:
+ SetSpritePosition
+ GetSpritePosition
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/transposematrix.html b/doc/doc_files/transposematrix.html
new file mode 100644
index 0000000..eebd419
--- /dev/null
+++ b/doc/doc_files/transposematrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ TransposeMatrix [RCBasic Doc]
+
+
+
+
function TransposeMatrix(mA, mB)
+
+ Stores the transpose of matrix mA in matrix mB
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/trim.html b/doc/doc_files/trim.html
new file mode 100644
index 0000000..888f6a2
--- /dev/null
+++ b/doc/doc_files/trim.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Trim$ [RCBasic Doc]
+
+
+
+
function Trim$(src$)
+
+ Returns src$ with all leading and trailing spaces removed
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/tst.html b/doc/doc_files/tst.html
new file mode 100644
index 0000000..27be6f1
--- /dev/null
+++ b/doc/doc_files/tst.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ tst [RCBasic Doc]
+
+
+
+
sub tst()
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/typearraycopy.html b/doc/doc_files/typearraycopy.html
new file mode 100644
index 0000000..31eb52e
--- /dev/null
+++ b/doc/doc_files/typearraycopy.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ TypeArrayCopy [RCBasic Doc]
+
+
+
+
sub TypeArrayCopy(ByRef src as empty, ByRef dst as empty)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayCopy()
+
+ Related:
+ ArrayCopy
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/typearraydim.html b/doc/doc_files/typearraydim.html
new file mode 100644
index 0000000..c1b7213
--- /dev/null
+++ b/doc/doc_files/typearraydim.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ TypeArrayDim [RCBasic Doc]
+
+
+
+
function TypeArrayDim(Byref id as empty)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayDim()
+
+ Related:
+ ArrayDim
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/typearrayfill.html b/doc/doc_files/typearrayfill.html
new file mode 100644
index 0000000..a93ae77
--- /dev/null
+++ b/doc/doc_files/typearrayfill.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ TypeArrayFill [RCBasic Doc]
+
+
+
+
sub TypeArrayFill(ByRef src as empty, fdata as empty)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArrayFill()
+
+ Related:
+ ArrayFill
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/typearraysize.html b/doc/doc_files/typearraysize.html
new file mode 100644
index 0000000..67be110
--- /dev/null
+++ b/doc/doc_files/typearraysize.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ TypeArraySize [RCBasic Doc]
+
+
+
+
function TypeArraySize(Byref id as empty, array_dim)
+
+ This function is exists to be internally called by the runtime but should not be called directly.
+
+
+ Use ArraySize()
+
+ Related:
+ ArraySize
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/ucase.html b/doc/doc_files/ucase.html
new file mode 100644
index 0000000..23d0d2e
--- /dev/null
+++ b/doc/doc_files/ucase.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Ucase$ [RCBasic Doc]
+
+
+
+
function Ucase$(src$)
+
+ Returns src$ with all characters uppercase
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_closesocket.html b/doc/doc_files/udp_closesocket.html
new file mode 100644
index 0000000..77c1f24
--- /dev/null
+++ b/doc/doc_files/udp_closesocket.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UDP_CloseSocket [RCBasic Doc]
+
+
+
+
sub UDP_CloseSocket(socket)
+
+ Closes a UDP Socket
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_getdata.html b/doc/doc_files/udp_getdata.html
new file mode 100644
index 0000000..4d195aa
--- /dev/null
+++ b/doc/doc_files/udp_getdata.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UDP_GetData [RCBasic Doc]
+
+
+
+
function UDP_GetData(socket, byref host$, byref port, byref sData$)
+
+ Reads data from a udp socket.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_length.html b/doc/doc_files/udp_length.html
new file mode 100644
index 0000000..061a3e0
--- /dev/null
+++ b/doc/doc_files/udp_length.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UDP_Length [RCBasic Doc]
+
+
+
+
function UDP_Length()
+
+ Returns the number of bytes read from a udp socket
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_maxlength.html b/doc/doc_files/udp_maxlength.html
new file mode 100644
index 0000000..6323217
--- /dev/null
+++ b/doc/doc_files/udp_maxlength.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UDP_MaxLength [RCBasic Doc]
+
+
+
+
function UDP_MaxLength()
+
+ Returns the maximum number of bytes from a udp socket
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_opensocket.html b/doc/doc_files/udp_opensocket.html
new file mode 100644
index 0000000..cc77368
--- /dev/null
+++ b/doc/doc_files/udp_opensocket.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UDP_OpenSocket [RCBasic Doc]
+
+
+
+
function UDP_OpenSocket(port)
+
+ Opens a UDP socket
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_remotehost.html b/doc/doc_files/udp_remotehost.html
new file mode 100644
index 0000000..c7b5ba2
--- /dev/null
+++ b/doc/doc_files/udp_remotehost.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UDP_RemoteHost$ [RCBasic Doc]
+
+
+
+
function UDP_RemoteHost$(socket)
+
+ Returns the connected host in a udp connection
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_remoteport.html b/doc/doc_files/udp_remoteport.html
new file mode 100644
index 0000000..f3ab41b
--- /dev/null
+++ b/doc/doc_files/udp_remoteport.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UDP_RemotePort [RCBasic Doc]
+
+
+
+
function UDP_RemotePort(socket)
+
+ Returns the port the socket is connected on.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_senddata.html b/doc/doc_files/udp_senddata.html
new file mode 100644
index 0000000..5784dda
--- /dev/null
+++ b/doc/doc_files/udp_senddata.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UDP_SendData [RCBasic Doc]
+
+
+
+
sub UDP_SendData(socket, host$, port, sData$)
+
+ Sends data to a host using UDP
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udp_socketready.html b/doc/doc_files/udp_socketready.html
new file mode 100644
index 0000000..0d58e74
--- /dev/null
+++ b/doc/doc_files/udp_socketready.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ UDP_SocketReady [RCBasic Doc]
+
+
+
+
function UDP_SocketReady(socket)
+
+ Returns 0 for no activity and non zero for activity. You need to call CheckSockets() at some point before this otherwise it will always return 0.
+
+
+ If UDP_SocketReady ( 0 ) > 0 Then
+
+ End If
+
+ Related:
+ CheckSockets
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/udt.html b/doc/doc_files/udt.html
new file mode 100644
index 0000000..169e885
--- /dev/null
+++ b/doc/doc_files/udt.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+ RCBasic UDTs [RCBasic Doc]
+
+
+
+
USER DEFINED TYPES (UDTs)
+
+ RCBasic v4 and up introduces the ability to create user defined types. These are basically structures that allow you to store and manage related data. To create a user defined type you need to use the TYPE keyword. Look at the following:
+
+
+ Type player
+ Dim x, y
+ End Type
+
+
+ In the above code, a type called player is created. The DIM keyword must be used to add attributes to our type. Now we can create a variable with the data type player as follows:
+
+
+ Dim hero As player
+
+
+ Notice that in the above code, we are using the DIM keyword we have used in previous sections to create variables and arrays. We now have a variable called hero whose data type is player .
+
+
+ Since our hero variable is of type player , it has all the attributes of that type. So we can access the attribute's with a "." like so:
+
+
+ hero.x = 23
+ Print "Hero x is " ; hero.x
+
+
+ The attributes of a UDT variable are accessed the same way a normal variable is. You can also create an array of UDT's the same way you would create a normal array. Look at the following:
+
+
+ Dim enemy[ 20 ] As player
+
+
+ If you read through the section on arrays then this should make sense. We are using the DIM keyword to make an array called enemy and then we use the AS keyword to set the type of enemy to player .
+
+
+ UDTs can also be used for attributes inside other UDTs. Lets say we wanted each player to have stats like health and power. We could create a UDT for player stats and have an attribute of that stat type inside our player UDT. Here is that example demonstrated:
+
+
+ Type Player_Stats
+ Dim health
+ Dim power
+ End Type
+
+ Type Player
+ Dim x, y
+ Dim stats As Player_Stats
+ End Type
+
+ Dim hero As Player
+
+
+ In the above example, hero now has an attribute called stats that is of type Player_Stats . So now we can access the stats attributes like so:
+
+
+ hero.stats.health = 100
+ Print "Hero Health = " ; hero.stats.health
+
+
+ If used effectively, you can drastically increase the readability and maintainability of your code. Especially in large projects.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/unaugmentmatrix.html b/doc/doc_files/unaugmentmatrix.html
new file mode 100644
index 0000000..4b355d6
--- /dev/null
+++ b/doc/doc_files/unaugmentmatrix.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ UnAugmentMatrix [RCBasic Doc]
+
+
+
+
function UnAugmentMatrix(mA, mB, mC)
+
+ Splits matrix mA into coefficient mB and augment mC
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/update.html b/doc/doc_files/update.html
new file mode 100644
index 0000000..7ef63ef
--- /dev/null
+++ b/doc/doc_files/update.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+ Update [RCBasic Doc]
+
+
+
+
sub Update()
+
+ This is the most important function in a graphics window. It must be called every frame.
+
+
+ It performs a few different operations
+
+
+
+ Renders all graphics
+
+
+ Checks for every event on the window
+
+
+ Updates the physics simulation for 2D and 3D objects if enabled
+
+
+ Makes breakfast if you are hungry
+
+
+
+ If you have a window open, you should have this function being called in your main render loop every frame.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/updateactorinertiatensor.html b/doc/doc_files/updateactorinertiatensor.html
new file mode 100644
index 0000000..ae77614
--- /dev/null
+++ b/doc/doc_files/updateactorinertiatensor.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ updateActorInertiaTensor [RCBasic Doc]
+
+
+
+
sub updateActorInertiaTensor( actor)
+
+ Recalculates the inertia tensor of an actor, which is essential for accurately simulating how the actor reacts to forces and torques during its motion. The inertia tensor defines how the mass of the body is distributed in space and influences how the body rotates in response to applied torques.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/useconstraintframeoffset.html b/doc/doc_files/useconstraintframeoffset.html
new file mode 100644
index 0000000..1746c40
--- /dev/null
+++ b/doc/doc_files/useconstraintframeoffset.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ useConstraintFrameOffset [RCBasic Doc]
+
+
+
+
sub useConstraintFrameOffset( constraint_id, flag)
+
+ Enables or disables the use of frame offsets in a constraint. When frame offsets are used, the constraint operates relative to specific local frames defined in the two connected actors, rather than directly in the world frame.
+
+
+ Note: Only applies to the hinge and slide constraint
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/usehingereferenceframea.html b/doc/doc_files/usehingereferenceframea.html
new file mode 100644
index 0000000..c8cb9b2
--- /dev/null
+++ b/doc/doc_files/usehingereferenceframea.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ useHingeReferenceFrameA [RCBasic Doc]
+
+
+
+
sub useHingeReferenceFrameA( constraint_id, flag)
+
+ Allows you to specify which actor's local reference frame is used to determine the hinge’s angular limits and motor direction.
+
+
+ When flag is true the hinge constraint will use actor A's reference frame as the basis for calculating angular limits and motor directions.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/useparticleeverymeshvertex.html b/doc/doc_files/useparticleeverymeshvertex.html
new file mode 100644
index 0000000..841c562
--- /dev/null
+++ b/doc/doc_files/useparticleeverymeshvertex.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ useParticleEveryMeshVertex [RCBasic Doc]
+
+
+
+
sub useParticleEveryMeshVertex( actor, flag)
+
+ Sets whether to emit min<->max particles for every vertex or to pick min<->max vertices.
+
+ Related:
+ particleIsUsingEveryMeshVertex
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/useparticlenormaldirection.html b/doc/doc_files/useparticlenormaldirection.html
new file mode 100644
index 0000000..d72f018
--- /dev/null
+++ b/doc/doc_files/useparticlenormaldirection.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ useParticleNormalDirection [RCBasic Doc]
+
+
+
+
sub useParticleNormalDirection( actor, flag)
+
+ Sets whether particle emitter is using vertex normal for direction, or direction specified.
+
+ Related:
+ particleIsUsingNormalDirection
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/useparticleoutlineonly.html b/doc/doc_files/useparticleoutlineonly.html
new file mode 100644
index 0000000..0524db2
--- /dev/null
+++ b/doc/doc_files/useparticleoutlineonly.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ useParticleOutlineOnly [RCBasic Doc]
+
+
+
+
sub useParticleOutlineOnly( actor, flag)
+
+ Set whether or not to draw points inside the cylinder.
+
+
+ Note: Only applies to cylinder emitter
+
+ Related:
+ particleIsUsingOutlineOnly
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/val.html b/doc/doc_files/val.html
new file mode 100644
index 0000000..bb16765
--- /dev/null
+++ b/doc/doc_files/val.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Val [RCBasic Doc]
+
+
+
+
function Val(n$)
+
+ Converts a string to a number and returns the value.
+
+
+ Returns 0 if the string was not a valid number.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/var_data.html b/doc/doc_files/var_data.html
new file mode 100644
index 0000000..e1a4e4e
--- /dev/null
+++ b/doc/doc_files/var_data.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+ RCBasic Variables [RCBasic Doc]
+
+
+
+
VARIABLES AND DATA TYPES
+
+ RC Basic supports two basic types of data: Numbers and Strings. These data types can be used to represent any type of data used in a program.
+
+
+ Numbers can be either integers or floating point. To designate an integer value you simply write out the number where you need to use it. Floating point numbers are similiar except that you would write a decimal point to denote the start of the floating point value. Look at the following:
+
+
+ 5
+
+ 5.5
+
+
+ Strings are used to store and manipulate data other than numbers. They can be used to refer to single characters, words, sentences, paragraphs, etc. Look at the Following:
+
+
+ "HELLO WORLD"
+
+
+ Notice that the string "HELLO WORLD" is surrounded by quotation marks. When setting a strings value manually you must use quotation marks.
+
+
+ In order to be able to use string or number data to do anything useful we have to be able to store and retrieve the data. This is what variables are used for. Look at the following:
+
+
+ A = 5
+
+ B$ = "HELLO WORLD"
+
+
+ The above example creates two variables. The variable A stores the number 5 and the variable B$ stores the string HELLO WORLD. Note that the variable B ends with a $. The $ has to be used when creating a string variable to let RC BASIC know its a string and to not treat it as a number. You only have to use the $ when you first create the variable.
+
+
+ If you don't want to set the value of a variable when you create it you can create the variable with the DIM keyword like this:
+
+
+ Dim A
+
+ Dim B$
+
+
+ You can also declare multiple variables with DIM .
+
+
+ Dim A, B$, C
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/videoend.html b/doc/doc_files/videoend.html
new file mode 100644
index 0000000..0c54bb4
--- /dev/null
+++ b/doc/doc_files/videoend.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ VideoEnd [RCBasic Doc]
+
+
+
+
function VideoEnd()
+
+ Returns true when the currently playing video reaches the end
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/videoexists.html b/doc/doc_files/videoexists.html
new file mode 100644
index 0000000..be0496c
--- /dev/null
+++ b/doc/doc_files/videoexists.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ VideoExists [RCBasic Doc]
+
+
+
+
function VideoExists()
+
+ Returns true if there is a video loaded
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/videoisplaying.html b/doc/doc_files/videoisplaying.html
new file mode 100644
index 0000000..117f66d
--- /dev/null
+++ b/doc/doc_files/videoisplaying.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ VideoIsPlaying [RCBasic Doc]
+
+
+
+
function VideoIsPlaying()
+
+ Returns true if a video is playing
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/wait.html b/doc/doc_files/wait.html
new file mode 100644
index 0000000..ec887cb
--- /dev/null
+++ b/doc/doc_files/wait.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Wait [RCBasic Doc]
+
+
+
+
sub Wait(m_sec)
+
+ Halts execution of a program for a given number of milliseconds.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/waitkey.html b/doc/doc_files/waitkey.html
new file mode 100644
index 0000000..4597cdc
--- /dev/null
+++ b/doc/doc_files/waitkey.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WaitKey [RCBasic Doc]
+
+
+
+
function WaitKey()
+
+ Halts execution of a program until a key is pressed.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/warpmouse.html b/doc/doc_files/warpmouse.html
new file mode 100644
index 0000000..d029003
--- /dev/null
+++ b/doc/doc_files/warpmouse.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WarpMouse [RCBasic Doc]
+
+
+
+
sub WarpMouse(x, y)
+
+ Move the mouse cursor to xy position in the window
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/warpmouseglobal.html b/doc/doc_files/warpmouseglobal.html
new file mode 100644
index 0000000..820b931
--- /dev/null
+++ b/doc/doc_files/warpmouseglobal.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WarpMouseGlobal [RCBasic Doc]
+
+
+
+
sub WarpMouseGlobal(x, y)
+
+ Move the mouse cursor to xy position in the display
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowclip.html b/doc/doc_files/windowclip.html
new file mode 100644
index 0000000..9b39ea0
--- /dev/null
+++ b/doc/doc_files/windowclip.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ WindowClip [RCBasic Doc]
+
+
+
+
function WindowClip(x, y, w, h)
+
+ Returns an image with a portion of the window stored
+
+ Related:
+ CanvasClip
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowevent_close.html b/doc/doc_files/windowevent_close.html
new file mode 100644
index 0000000..cfd4652
--- /dev/null
+++ b/doc/doc_files/windowevent_close.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowEvent_Close [RCBasic Doc]
+
+
+
+
function WindowEvent_Close()
+
+ Returns true if the window close event is called.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowevent_maximize.html b/doc/doc_files/windowevent_maximize.html
new file mode 100644
index 0000000..0771210
--- /dev/null
+++ b/doc/doc_files/windowevent_maximize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowEvent_Maximize [RCBasic Doc]
+
+
+
+
function WindowEvent_Maximize()
+
+ Returns true if the window maximize event is called.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowevent_minimize.html b/doc/doc_files/windowevent_minimize.html
new file mode 100644
index 0000000..7300635
--- /dev/null
+++ b/doc/doc_files/windowevent_minimize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowEvent_Minimize [RCBasic Doc]
+
+
+
+
function WindowEvent_Minimize()
+
+ Returns true if the window minimize event is called.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowevent_resize.html b/doc/doc_files/windowevent_resize.html
new file mode 100644
index 0000000..d8e6529
--- /dev/null
+++ b/doc/doc_files/windowevent_resize.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowEvent_Resize [RCBasic Doc]
+
+
+
+
function WindowEvent_Resize()
+
+ Returns true if the window resize event is called.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowexists.html b/doc/doc_files/windowexists.html
new file mode 100644
index 0000000..3611124
--- /dev/null
+++ b/doc/doc_files/windowexists.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowExists [RCBasic Doc]
+
+
+
+
function WindowExists()
+
+ Returns true if the window is open
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowhasinputfocus.html b/doc/doc_files/windowhasinputfocus.html
new file mode 100644
index 0000000..45662a4
--- /dev/null
+++ b/doc/doc_files/windowhasinputfocus.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowHasInputFocus [RCBasic Doc]
+
+
+
+
function WindowHasInputFocus()
+
+ Returns true if the window has input focus, otherwise it returns false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowhasmousefocus.html b/doc/doc_files/windowhasmousefocus.html
new file mode 100644
index 0000000..3da56fd
--- /dev/null
+++ b/doc/doc_files/windowhasmousefocus.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowHasMouseFocus [RCBasic Doc]
+
+
+
+
function WindowHasMouseFocus()
+
+ Returns true if the window has mouse focus, otherwise it returns false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowisbordered.html b/doc/doc_files/windowisbordered.html
new file mode 100644
index 0000000..97a56b1
--- /dev/null
+++ b/doc/doc_files/windowisbordered.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowIsBordered [RCBasic Doc]
+
+
+
+
function WindowIsBordered()
+
+ Returns true if the window has a border, otherwise it will return false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowisfullscreen.html b/doc/doc_files/windowisfullscreen.html
new file mode 100644
index 0000000..9a493e0
--- /dev/null
+++ b/doc/doc_files/windowisfullscreen.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowIsFullscreen [RCBasic Doc]
+
+
+
+
function WindowIsFullscreen()
+
+ Returns true if the window is fullscreen, otherwise it will return false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowisgrabbed.html b/doc/doc_files/windowisgrabbed.html
new file mode 100644
index 0000000..6d7cd80
--- /dev/null
+++ b/doc/doc_files/windowisgrabbed.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowIsGrabbed [RCBasic Doc]
+
+
+
+
function WindowIsGrabbed( )
+
+ Returns the window that is currently grabbing input. It returns -1 on failure.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowismaximized.html b/doc/doc_files/windowismaximized.html
new file mode 100644
index 0000000..1e41434
--- /dev/null
+++ b/doc/doc_files/windowismaximized.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowIsMaximized [RCBasic Doc]
+
+
+
+
function WindowIsMaximized()
+
+ Returns true if the window is maximized, otherwise it will return false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowisminimized.html b/doc/doc_files/windowisminimized.html
new file mode 100644
index 0000000..bebd6a4
--- /dev/null
+++ b/doc/doc_files/windowisminimized.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowIsMinimized [RCBasic Doc]
+
+
+
+
function WindowIsMinimized()
+
+ Returns true if the window is minimized, otherwise it will return false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowisresizable.html b/doc/doc_files/windowisresizable.html
new file mode 100644
index 0000000..4adbfa3
--- /dev/null
+++ b/doc/doc_files/windowisresizable.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowIsResizable [RCBasic Doc]
+
+
+
+
function WindowIsResizable()
+
+ Returns true if the window is resizable, otherwise it will return false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowisvisible.html b/doc/doc_files/windowisvisible.html
new file mode 100644
index 0000000..62ad21a
--- /dev/null
+++ b/doc/doc_files/windowisvisible.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WindowIsVisible [RCBasic Doc]
+
+
+
+
function WindowIsVisible()
+
+ Returns true if the window is visible, otherwise it returns false.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowmode.html b/doc/doc_files/windowmode.html
new file mode 100644
index 0000000..3013cdd
--- /dev/null
+++ b/doc/doc_files/windowmode.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ WindowMode [RCBasic Doc]
+
+
+
+
function WindowMode(visible, fullscreen, resizable, borderless, highDPI)
+
+ Returns a bitmask of the combined window flags that can be used in OpenWindow() to set the mode for the window.
+
+
+ Each flag is a boolean that determines whether or not to set that flag in the mask.
+
+
+ Note: For most use cases, one of the following will work
+
+
+ Window
+
+
+ mode = WindowMode( 1 , 0 , 0 , 0 , 0 )
+
+
+ Fullscreen
+
+
+ mode = WindowMode( 1 , 1 , 0 , 0 , 0 )
+
+ Related:
+ OpenWindow
+ GetWindowMode
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/windowtitle.html b/doc/doc_files/windowtitle.html
new file mode 100644
index 0000000..f833cd0
--- /dev/null
+++ b/doc/doc_files/windowtitle.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ WindowTitle$ [RCBasic Doc]
+
+
+
+
function WindowTitle$( )
+
+ Returns the window title
+
+ Related:
+ SetWindowTitle
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/write.html b/doc/doc_files/write.html
new file mode 100644
index 0000000..859d72c
--- /dev/null
+++ b/doc/doc_files/write.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Write [RCBasic Doc]
+
+
+
+
sub Write(stream, txt$)
+
+ Writes a string to a file.
+
+ Related:
+ WriteLine
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/writebyte.html b/doc/doc_files/writebyte.html
new file mode 100644
index 0000000..d760352
--- /dev/null
+++ b/doc/doc_files/writebyte.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ WriteByte [RCBasic Doc]
+
+
+
+
sub WriteByte(stream, byte)
+
+ Writes a byte to the file.
+
+ Related:
+ WriteByteBuffer
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/writebytebuffer.html b/doc/doc_files/writebytebuffer.html
new file mode 100644
index 0000000..5534572
--- /dev/null
+++ b/doc/doc_files/writebytebuffer.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ WriteByteBuffer [RCBasic Doc]
+
+
+
+
function WriteByteBuffer(stream, ByRef buf, buf_size)
+
+ Writes a number of bytes from a buffer to the file stream.
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/writeline.html b/doc/doc_files/writeline.html
new file mode 100644
index 0000000..126cd6f
--- /dev/null
+++ b/doc/doc_files/writeline.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ WriteLine [RCBasic Doc]
+
+
+
+
sub WriteLine(stream, txt$)
+
+ Writes a string to a text file with a new-line appended at the end
+
+ Related:
+ Write
+ ReadLine$
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/xorbit.html b/doc/doc_files/xorbit.html
new file mode 100644
index 0000000..81d1fe0
--- /dev/null
+++ b/doc/doc_files/xorbit.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ XOrBit [RCBasic Doc]
+
+
+
+
function XOrBit(a, b)
+
+ Returns the value of the bitwise XOR operation on the operands A and B
+
+ Related:
+ OrBit
+ AndBit
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/doc_files/zeromatrix.html b/doc/doc_files/zeromatrix.html
new file mode 100644
index 0000000..2700775
--- /dev/null
+++ b/doc/doc_files/zeromatrix.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ ZeroMatrix [RCBasic Doc]
+
+
+
+
sub ZeroMatrix(mA)
+
+ Clears a matrix
+
+
+ Note: Literally does the exact same thing as ClearMatrix. Its here as a legacy call convention.
+
+ Related:
+ ClearMatrix
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/files/applyspriteangularimpulse.txt b/doc/files/applyspriteangularimpulse.txt
new file mode 100644
index 0000000..f95015d
--- /dev/null
+++ b/doc/files/applyspriteangularimpulse.txt
@@ -0,0 +1,6 @@
+#title applySpriteAngularImpulse [RCBasic Doc]
+#header sub applySpriteAngularImpulse( spr_id, impulse)
+
+Apply an angular impulse to a body. This method affects the body’s rotational motion, changing its angular velocity based on the impulse applied.
+
+#ref ApplySpriteLinearImpulse
diff --git a/doc/files/applyspritecentralforce.txt b/doc/files/applyspritecentralforce.txt
new file mode 100644
index 0000000..2853be5
--- /dev/null
+++ b/doc/files/applyspritecentralforce.txt
@@ -0,0 +1,4 @@
+#title applySpriteCentralForce [RCBasic Doc]
+#header sub applySpriteCentralForce( spr_id, x, y)
+
+Apply a continuous force to a body at its center of mass, regardless of the body's current orientation. This method affects the body's linear motion and is useful for simulating forces like gravity, wind, or any other directional force.
diff --git a/doc/files/applyspriteforce.txt b/doc/files/applyspriteforce.txt
new file mode 100644
index 0000000..e7c803f
--- /dev/null
+++ b/doc/files/applyspriteforce.txt
@@ -0,0 +1,4 @@
+#title applySpriteForce [RCBasic Doc]
+#header sub applySpriteForce( spr_id, fX, fY, pX, pY)
+
+Apply a force at a world point. If the force is not applied at the center of mass, it will generate a torque and affect the angular velocity. This wakes up the body.
diff --git a/doc/files/applyspritelinearimpulse.txt b/doc/files/applyspritelinearimpulse.txt
new file mode 100644
index 0000000..2ec8881
--- /dev/null
+++ b/doc/files/applyspritelinearimpulse.txt
@@ -0,0 +1,6 @@
+#title applySpriteLinearImpulse [RCBasic Doc]
+#header sub applySpriteLinearImpulse( spr_id, iX, iY, pX, pY)
+
+Apply an instantaneous linear impulse to a body. This method directly affects the body’s linear motion by changing its velocity based on the impulse applied.
+
+#ref ApplySpriteAngularImpulse
diff --git a/doc/files/applyspritetorque.txt b/doc/files/applyspritetorque.txt
new file mode 100644
index 0000000..6e8c84a
--- /dev/null
+++ b/doc/files/applyspritetorque.txt
@@ -0,0 +1,4 @@
+#title applySpriteTorque [RCBasic Doc]
+#header sub applySpriteTorque( spr_id, torque)
+
+Apply a torque. This affects the angular velocity without affecting the linear velocity of the center of mass.
diff --git a/doc/files/arrays.txt b/doc/files/arrays.txt
new file mode 100644
index 0000000..b9985d4
--- /dev/null
+++ b/doc/files/arrays.txt
@@ -0,0 +1,44 @@
+#title RCBasic Arrays [RCBasic Doc]
+#header ARRAYS
+
+
+In complex programs there is often a need to be able to store large amounts of data. It would be unreasonable to have to create a variable for each piece of data we may need to store. This is where an array can come in handy. Arrays are simply ways of using one variable to store multiple different values. You can create arrays of numbers or strings. Look at the following:
+#code
+Dim A[5]
+#/code
+
+The above example creates an array of numbers called A. A can store five numbers which are retrieved using A[0] to A[4]. Notice that A[4] is the last element in the array and not A[5]. That is because the first index in the array is 0 and the array only stores 5 numbers. To set the values in this array you could do the following:
+#code
+A[0] = 3
+A[1] = 2
+A[2] = 7
+A[3] = 1
+A[4] = 0
+#/code
+
+You would access and array just like you would a variable. Look at the following:
+#code
+X = A[0] + A[3] '( Based on the above example the variable X would be set to 4. )
+#/code
+
+To make a string variable you would do the same thing you do to make a number variable except you would use the $ just like you would use to make a normal string variable. Look at the following:
+#code
+Dim B$[3]
+
+B[0] = "ABC"
+B[1] = "DEF"
+B[2] = "I KNOW THE ALPHABET"
+#/code
+
+Arrays can have up to 3 dimensions. Adding more dimensions to an array can make organizing data in the array easier depending on the situation. Look at the following:
+#code
+Dim X[2, 3]
+Dim Y[3, 4, 5]
+#/code
+
+The above example creates a 2 dimensional array called X which has 2 indices in its first dimension. Its second dimension has 3 indices. This means that each of the 2 indices in the first dimension can store 3 different values. So X can store a total of 6 different values. The second line creates a 3 dimensional array called Y. Y has 3 indices in its first dimension. Each of those 3 indices has 4 indices in its 2nd dimension. Each of the 4 indices has 5 values it can store. This means that Y can store a total of 60 different values. Look at the following for an example on how to work with these multi-dimensional arrays:
+#code
+X[0, 2] = 5 '(This line sets the 3rd value in the first index to 5. Remember that the first index is always 0 so the 3rd index will be 2.)
+
+Y[1, 2, 3] = 6 '(This line sets the 4th value of the 3rd index in the 2nd index in the array to 6. That was a mouth full. )
+#/code
diff --git a/doc/files/comments.txt b/doc/files/comments.txt
new file mode 100644
index 0000000..f839f32
--- /dev/null
+++ b/doc/files/comments.txt
@@ -0,0 +1,17 @@
+#title RCBasic Comments [RCBasic Doc]
+#header COMMENTS
+
+Comments are remarks you can add to your code which will be ignored by the compiler. To make a comment you would use a single quote. Look at the following:
+#code
+' THIS IS A COMMENT
+Print HELLO WORLD" ' THIS IS ANOTHER COMMENT
+#/code
+
+MULTI-LINE COMMENTS
+
+Multi-line comments are comments that can span multiple lines. To start a multi-line comment you would use forward slash followed by a single quote and you would end it with a single quote followed by a forward slash. Look at the following:
+#code
+/' THIS IS
+A
+MULTI-LINE COMMENT '/
+#/code
diff --git a/doc/files/conditions.txt b/doc/files/conditions.txt
new file mode 100644
index 0000000..a6fb6b6
--- /dev/null
+++ b/doc/files/conditions.txt
@@ -0,0 +1,43 @@
+#title RCBasic Conditions [RCBasic Doc]
+#header CONDITIONS
+
+RC BASIC uses the same conventions of other programming languages to control the flow of the program. There are two main ways of getting your program to decide on its next course of action. The most common way is with the IF statement block.
+#code
+If 5 > 6 Then
+ Print "THIS WILL NOT PRINT"
+ElseIf 5 < 6 Then
+ Print "THIS WILL PRINT"
+Else
+ Print "THIS ALSO WILL NOT PRINT"
+End If
+#/code
+
+The above example does different comparisons and will output text to a console depending on which condition is true.
+
+The next method of control flow is the SELECT statement block.
+#code
+Select Case 5
+Case 6
+ Print THIS WILL NOT PRINT"
+Case 5
+ Print "THIS WILL PRINT"
+Default
+ 'Note: Default will be true if every other case is false.
+ ' Default is optional and can be excluded if you don't need it
+ Print "THIS WILL NOT PRINT"
+End Select
+#/code
+
+The above example will compare each case in the block to the SELECT CASE . If the case is equal to the select case then the code in that case will be executed. You can also add multiple values to compare to each CASE .
+#code
+Select Case 5
+Case 6
+ Print "THIS WILL NOT PRINT"
+Case 4, 5
+ Print "THIS WILL PRINT"
+Default
+ Print "THIS WILL NOT PRINT"
+End Select
+#/code
+
+The above example is mostly the same as the previous example. The difference is that in our second CASE we are comparing both 4 and 5. If either of them are equal to our SELECT argument then the code inside the CASE block will execute.
diff --git a/doc/files/constants.txt b/doc/files/constants.txt
new file mode 100644
index 0000000..a658c22
--- /dev/null
+++ b/doc/files/constants.txt
@@ -0,0 +1,8 @@
+#title RCBasic Constants [RCBasic Doc]
+#header CONSTANTS
+
+RCBasic has a special type of variable called a constant which can hold an expression. This means it can hold an expression and not determine its value until its used. For example you can have a constant called C that is equal to A + B. Everytime you change the value of A or B, C's value will also change. Because constants hold expressions, any valid expression in RCBasic can be stored in a constant.
+#code
+const A = 5
+const MY_PRINT = print "hello world"
+#/code
diff --git a/doc/files/createdistancejoint.txt b/doc/files/createdistancejoint.txt
new file mode 100644
index 0000000..11b0ca9
--- /dev/null
+++ b/doc/files/createdistancejoint.txt
@@ -0,0 +1,14 @@
+#title createDistanceJoint [RCBasic Doc]
+#header function createDistanceJoint( spriteA, spriteB, aX, aY, bX, bY, collide_connect)
+
+Creates a distance joint
+
+A distance joint constrains two points on two bodies to remain at a fixed distance from each other. You can view this as a massless, rigid rod.
+
+Parameters
+#list ul
+#li spriteA - first body
+#li spriteB - second body
+#li aX, aY - Anchor point on spriteA
+#li bX, bY - Anchor point on spriteB
+#/list
diff --git a/doc/files/createfrictionjoint.txt b/doc/files/createfrictionjoint.txt
new file mode 100644
index 0000000..bd5442b
--- /dev/null
+++ b/doc/files/createfrictionjoint.txt
@@ -0,0 +1,14 @@
+#title createFrictionJoint [RCBasic Doc]
+#header function createFrictionJoint( spriteA, spriteB, x, y, collide_connect)
+
+Creates a Friction Joint
+
+Friction joint. This is used for top-down friction. It provides 2D translational friction and angular friction.
+
+Parameters
+#list ul
+#li spriteA - first body
+#li spriteB - second body
+#li x, y - Anchor point. A common world-space point where the friction forces will be applied on both bodies. This is usually set to the point where you want the bodies to "grip" or resist slipping relative to each other.
+#/list
+
diff --git a/doc/files/creategearjoint.txt b/doc/files/creategearjoint.txt
new file mode 100644
index 0000000..8ef7d8a
--- /dev/null
+++ b/doc/files/creategearjoint.txt
@@ -0,0 +1,14 @@
+#title createGearJoint [RCBasic Doc]
+#header function createGearJoint( jointA, jointB, g_ratio, collide_connect)
+
+Creates a Gear Joint
+
+A gear joint is used to connect two joints together. Either joint can be a revolute or prismatic joint. You specify a gear ratio to bind the motions together: coordinate1 + ratio * coordinate2 = constant The ratio can be negative or positive. If one joint is a revolute joint and the other joint is a prismatic joint, then the ratio will have units of length or units of 1/length.
+
+Parameters
+#list ul
+#li spriteA - first body
+#li spriteB - second body
+#li ratio - ratio of how much influence jointA has compared to jointB
+#/list
+
diff --git a/doc/files/createmotorjoint.txt b/doc/files/createmotorjoint.txt
new file mode 100644
index 0000000..f5426a7
--- /dev/null
+++ b/doc/files/createmotorjoint.txt
@@ -0,0 +1,6 @@
+#title createMotorJoint [RCBasic Doc]
+#header function createMotorJoint( spriteA, spriteB, collide_connect)
+
+Creates a Motor Joint
+
+A motor joint is used to control the relative motion between two bodies. A typical usage is to control the movement of a dynamic body with respect to the ground.
diff --git a/doc/files/createprismaticjoint.txt b/doc/files/createprismaticjoint.txt
new file mode 100644
index 0000000..3925f8e
--- /dev/null
+++ b/doc/files/createprismaticjoint.txt
@@ -0,0 +1,14 @@
+#title createPrismaticJoint [RCBasic Doc]
+#header function createPrismaticJoint( spriteA, spriteB, aX, aY, axisX, axisY, collide_connect)
+
+Creates a Prismatic Joint
+
+A prismatic joint. This joint provides one degree of freedom: translation along an axis fixed in bodyA. Relative rotation is prevented. You can use a joint limit to restrict the range of motion and a joint motor to drive the motion or to model joint friction.
+
+Parameters
+#list ul
+#li spriteA - first body
+#li spriteB - second body
+#li aX, aY - anchor point
+#li axisX, axisY - Used to define a linear direction from anchor point
+#/list
diff --git a/doc/files/createpulleyjoint.txt b/doc/files/createpulleyjoint.txt
new file mode 100644
index 0000000..04eee70
--- /dev/null
+++ b/doc/files/createpulleyjoint.txt
@@ -0,0 +1,6 @@
+#title createPulleyJoint [RCBasic Doc]
+#header function createPulleyJoint( spriteA, spriteB, gaX, gaY, gbX, gbY, aX, aY, bX, bY, j_ratio, collide_connect)
+
+Creates a pulley joint
+
+The pulley joint is connected to two bodies and two fixed ground points. The pulley supports a ratio such that: length1 + ratio * length2 <= constant Yes, the force transmitted is scaled by the ratio. Warning: the pulley joint can get a bit squirrelly by itself. They often work better when combined with prismatic joints. You should also cover the the anchor points with static shapes to prevent one side from going to zero length.
diff --git a/doc/files/createrevolutejoint.txt b/doc/files/createrevolutejoint.txt
new file mode 100644
index 0000000..979114b
--- /dev/null
+++ b/doc/files/createrevolutejoint.txt
@@ -0,0 +1,6 @@
+#title createRevoluteJoint [RCBasic Doc]
+#header function createRevoluteJoint( spriteA, spriteB, x, y, collide_connect)
+
+Creates a revolute joint
+
+A revolute joint constrains two bodies to share a common point while they are free to rotate about the point. The relative rotation about the shared point is the joint angle. You can limit the relative rotation with a joint limit that specifies a lower and upper angle. You can use a motor to drive the relative rotation about the shared point. A maximum motor torque is provided so that infinite forces are not generated.
diff --git a/doc/files/createtilemap.txt b/doc/files/createtilemap.txt
new file mode 100644
index 0000000..ebcd366
--- /dev/null
+++ b/doc/files/createtilemap.txt
@@ -0,0 +1,13 @@
+#title CreateTileMap [RCBasic Doc]
+#header Function CreateTileMap(tileset, widthInTiles, heightInTiles)
+
+Returns a new tile map.
+
+Parameters
+#list ul
+#li tileset - A tileset Id. ( Tilesets are created with CreateTileSet() )
+#li widthInTiles - The number of tiles wide ( Note: Not the pixel width but number of tiles )
+#li widthInTiles - The number of tiles high ( Note: Not the pixel height but number of tiles )
+#/list
+
+#ref CreateTileSet
diff --git a/doc/files/createtileset.txt b/doc/files/createtileset.txt
new file mode 100644
index 0000000..7c0e90b
--- /dev/null
+++ b/doc/files/createtileset.txt
@@ -0,0 +1,13 @@
+#title CreateTileSet [RCBasic Doc]
+#header Function CreateTileSet(img_id, tile_w, tile_h)
+
+Return a new Tileset
+
+Parameters:
+#list ul
+#li img_id - A image to use as a tile sheet
+#li tile_w - The width of each tile
+#li tile_h - The height of each tile
+#/list
+
+#ref CreateTileMap
diff --git a/doc/files/createweldjoint.txt b/doc/files/createweldjoint.txt
new file mode 100644
index 0000000..997d9ff
--- /dev/null
+++ b/doc/files/createweldjoint.txt
@@ -0,0 +1,6 @@
+#title createWeldJoint [RCBasic Doc]
+#header function createWeldJoint( spriteA, spriteB, x, y, collide_connect)
+
+Creates a Weld Joint
+
+A weld joint essentially glues two bodies together. A weld joint may distort somewhat because the island constraint solver is approximate.
diff --git a/doc/files/createwheeljoint.txt b/doc/files/createwheeljoint.txt
new file mode 100644
index 0000000..430cc6e
--- /dev/null
+++ b/doc/files/createwheeljoint.txt
@@ -0,0 +1,6 @@
+#title createWheelJoint [RCBasic Doc]
+#header function createWheelJoint( spriteA, spriteB, aX, aY, axisX, axisY, collide_connect)
+
+Creates a wheel joint.
+
+A wheel joint. This joint provides two degrees of freedom: translation along an axis fixed in bodyA and rotation in the plane. In other words, it is a point to line constraint with a rotational motor and a linear spring/damper. The spring/damper is initialized upon creation. This joint is designed for vehicle suspensions.
diff --git a/doc/files/drawtilemap.txt b/doc/files/drawtilemap.txt
new file mode 100644
index 0000000..cf491fa
--- /dev/null
+++ b/doc/files/drawtilemap.txt
@@ -0,0 +1,15 @@
+#title DrawTileMap [RCBasic Doc]
+#header Sub DrawTileMap(tilemap, x, y, w, h, offset_x, offset_y)
+
+Draws a tile map
+
+Note: Can only be drawn on a regular 2D canvas
+
+Parameters:
+#list ul
+#li tilemap - the tilemap to draw
+#li x, y - Where to draw the map on the active canvas
+#li w, h - The size of the tilemap viewport
+#li offset_x, offset_y - The location in the tilemap to start drawing from
+#/list
+
diff --git a/doc/files/enablejointlimit.txt b/doc/files/enablejointlimit.txt
new file mode 100644
index 0000000..231e99a
--- /dev/null
+++ b/doc/files/enablejointlimit.txt
@@ -0,0 +1,13 @@
+#title enableJointLimit [RCBasic Doc]
+#header sub enableJointLimit( joint_id, flag)
+
+Enables or disables joint limits
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref JointIsLimitEnabled SetJointLimits
diff --git a/doc/files/enablejointmotor.txt b/doc/files/enablejointmotor.txt
new file mode 100644
index 0000000..26a4640
--- /dev/null
+++ b/doc/files/enablejointmotor.txt
@@ -0,0 +1,13 @@
+#title enableJointMotor [RCBasic Doc]
+#header sub enableJointMotor( joint_id, flag)
+
+Enables or disables the joint motor
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref JointMotorIsEnabled
diff --git a/doc/files/filltile.txt b/doc/files/filltile.txt
new file mode 100644
index 0000000..2d33d7a
--- /dev/null
+++ b/doc/files/filltile.txt
@@ -0,0 +1,6 @@
+#title FillTile [RCBasic Doc]
+#header Sub FillTile(tilemap, tile, x, y, widthInTiles, heightInTiles)
+
+Fills an area of a tile map with a specified tile
+
+
diff --git a/doc/files/func_sub.txt b/doc/files/func_sub.txt
new file mode 100644
index 0000000..7437549
--- /dev/null
+++ b/doc/files/func_sub.txt
@@ -0,0 +1,136 @@
+#title RCBasic Functions and Sub Routines [RCBasic Doc]
+#header FUNCTIONS AND SUB ROUTINES
+
+Functions and Sub Routines are blocks of code that can be executed any where in your program.
+
+The biggest difference between Functions and Sub Routines is that Functions can return a value. Basically Functions and be used as a string or number value in an expression. RCBASIC has several built-in functions to perform different task such as compute square roots, get the time, etc. Functions are either numbers or strings just like variables and arrays. As such, functions can be used anywhere a variable or array can be used. Look at the following:
+
+#code
+Dim x[2]
+x[0] = Sqrt(25)
+x[1] = Sqrt(36)
+Print "THE SQUARE ROOT OF 25 IS "; x[0]
+Print "THE SQUARE ROOT OF 36 IS "; x[1]
+#/code
+
+The above code creates a number array called X with 2 elements in it. It stores the square root of 25 in the first index and stores the square root of 36 in the second index. It then outputs both values to the console. The output should look like this:
+
+THE SQUARE ROOT OF 25 IS 5
+THE SQUARE ROOT OF 36 IS 6
+
+String functions can be used in a string expression just like number functions can be used in a number expression. Look at the following code:
+
+#code
+B$ = Mid$("HELLO WORLD", 0, 2)
+Print "THE FIRST TWO CHARACTERS IN HELLO WORLD ARE ";B$
+#/code
+
+The above code creates a string variable called B and stores 2 characters starting from position 0 in the string HELLO WORLD. It then outputs the value to the console. The output should look like the following:
+
+THE FIRST TWO CHARACTERS IN HELLO WORLD ARE HE
+
+Sub Routines can execute code in other parts of your program just like a function. However Sub Routines cannot return values and cannot be used in expressions. So why would you want to use a Sub Routine over a function? Well Sub Routines have less over head since it does not have to internally push a value onto the stack like a function does. So in cases where you do not need to return a value you should use a Sub Routine. RC BASIC has several built-in Sub Routines to perform task where a return value is not necessary. Look at the following:
+
+#code
+FPrint("test")
+#/code
+
+FPrint is a Sub Routine that outputs text to the console. Since FPrint doesn't perform calculations of any kind it did not need to be implemented as a Function.
+
+In addition to the built-in Functions and Sub Routines RCBASIC also allows programmers to build there own Functions and Sub Routines. You do this using the FUNCTION or SUB keywords.
+
+#code
+Function MyFunc(a, b)
+ c = a + b
+ Return c
+End Function
+#/code
+
+The above code creates a function called MyFunc which takes in two arguments: a and b. To use this function you would call it like this:
+
+#code
+MyFunc(3, 4)
+#/code
+
+The code above will pass 3 and 4 to the variables A and B in MYFUNC respectively. The function creates a variable called C and sets it equal to the sum of 3 + 4. It then returns C. So the function equals 7. Since this is a number function you could store the value in a number variable or use PRINT to output the value to the console.
+
+
+To make a string function you simply add $ to the end of the function name when you create it just like with variables and arrays.
+
+#code
+Function MyString$ ( G$ )
+ Return "YOU ENTERED " + G$
+End Function
+
+Print MyString("SOMETHING")
+#/code
+
+The above code should output the following:
+
+YOU ENTERED SOMETHING
+
+Functions can also return a UDT(User Defined Type) as well. Look at the following:
+
+#code
+Type test_type
+ Dim a$
+ Dim b
+End Type
+
+Function test(a$, b) As test_type
+ Dim ret_val As test_type
+ ret_val.a = a
+ ret_val.b = b
+ Return ret_val
+End Function
+
+Dim myVar as test_type
+
+myVar = test("hello", 42)
+#/code
+
+You can also have a UDT as a parameter in a function:
+#code
+Function test2(n as test_type, j)
+ Return 0
+End Function
+#/code
+
+Sub Routines are created using the SUB keyword. Look at the following:
+#code
+Sub MySub ( )
+ For i = 1 To 5
+ Print i
+ Next
+End Sub
+
+MySub ( )
+#/code
+
+The code above creates a Sub Routine called MYSUB which uses a FOR loop to output the numbers 1 to 5 to the console.
+
+Functions and Sub Routines pass variables by value by default. Look at the following:
+#code
+Sub MySub ( a )
+ a = 5
+End Sub
+
+n = 0
+
+MySub ( n )
+Print n
+#/code
+
+In the above code the Sub Routine has a variable called A as an argument. It sets A equal to 5. Then we create a variable called N outside of the Sub Routine and set N equal to 0. N is passed as an argument to MYSUB. Then N is output to the console. This will output 0 to the console. That is because only the value of N is passed to MYSUB so MYSUB is not able to change N itself. In order to allow MYSUB to change N we must have MYSUB accept an argument by Reference. To do this we will use the BYREF keyword.
+#code
+Sub MySub ( ByRef a )
+ a = 5
+End Sub
+
+n = 0
+
+MySub ( n )
+Print n
+#/code
+
+The above code is the same as the previous example except that now we use the BYREF keyword to change a to a reference rather than a value. This means the when we pass the variable N to MYSUB, instead of the value stored in N being used as A, whatever we do to A will be done to N directly. This example will output 5 to the console.
diff --git a/doc/files/getactorcenter.txt b/doc/files/getactorcenter.txt
new file mode 100644
index 0000000..d5812bd
--- /dev/null
+++ b/doc/files/getactorcenter.txt
@@ -0,0 +1,4 @@
+#title getActorCenter [RCBasic Doc]
+#header sub getActorCenter( actor, ByRef x, ByRef y, ByRef z)
+
+Gets an actor's center of mass position. This is useful for setting the origin of constraints.
diff --git a/doc/files/getactorcomposition.txt b/doc/files/getactorcomposition.txt
deleted file mode 100644
index 0dc7ed3..0000000
--- a/doc/files/getactorcomposition.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title getActorCOMPosition [RCBasic Doc]
-#header sub getActorCOMPosition( actor, ByRef x, ByRef y, ByRef z)
-
-Gets an actor's center of mass position. This is useful for setting the origin of constraints.
diff --git a/doc/bu/files/getactorlocalpointvelocity.txt b/doc/files/getactorvelocityinlocalpoint.txt
similarity index 67%
rename from doc/bu/files/getactorlocalpointvelocity.txt
rename to doc/files/getactorvelocityinlocalpoint.txt
index cc914e0..9df2656 100644
--- a/doc/bu/files/getactorlocalpointvelocity.txt
+++ b/doc/files/getactorvelocityinlocalpoint.txt
@@ -1,4 +1,5 @@
-#title getActorLocalPointVelocity [RCBasic Doc]
-#header sub getActorLocalPointVelocity( actor, rel_x, rel_y, rel_z, ByRef x, ByRef y, ByRef z)
+#title getActorVelocityInLocalPoint [RCBasic Doc]
+#header sub getActorVelocityInLocalPoint( actor, rel_x, rel_y, rel_z, ByRef x, ByRef y, ByRef z)
Gets the linear velocity of a specific point on an actor, given its position in the actor's local coordinate space. This is useful for determining how fast and in what direction a particular point on the actor is moving, accounting for both the body's linear velocity and its rotational motion (angular velocity).
+
diff --git a/doc/files/getjointangle.txt b/doc/files/getjointangle.txt
new file mode 100644
index 0000000..995f3c9
--- /dev/null
+++ b/doc/files/getjointangle.txt
@@ -0,0 +1,10 @@
+#title getJointAngle [RCBasic Doc]
+#header function getJointAngle( joint_id)
+
+Returns the current joint angle
+
+Used with
+#list ul
+#li Revolute Joint
+#li Wheel Joint
+#/list
diff --git a/doc/files/getjointangularoffset.txt b/doc/files/getjointangularoffset.txt
new file mode 100644
index 0000000..cc20881
--- /dev/null
+++ b/doc/files/getjointangularoffset.txt
@@ -0,0 +1,8 @@
+#title getJointAngularOffset [RCBasic Doc]
+#header function getJointAngularOffset( joint_id)
+
+Returns the target angular offset
+
+Used with Motor Joint
+
+#ref SetJointAngularOffset
diff --git a/doc/files/getjointangularspeed.txt b/doc/files/getjointangularspeed.txt
new file mode 100644
index 0000000..de5013b
--- /dev/null
+++ b/doc/files/getjointangularspeed.txt
@@ -0,0 +1,6 @@
+#title getJointAngularSpeed [RCBasic Doc]
+#header function getJointAngularSpeed( joint_id)
+
+Return the current joint angular speed
+
+Used with Wheel Joint
diff --git a/doc/files/getjointcorrectionfactor.txt b/doc/files/getjointcorrectionfactor.txt
new file mode 100644
index 0000000..08ab123
--- /dev/null
+++ b/doc/files/getjointcorrectionfactor.txt
@@ -0,0 +1,9 @@
+#title getJointCorrectionFactor [RCBasic Doc]
+#header function getJointCorrectionFactor( joint_id)
+
+Returns a factor for how quickly the joint corrects deviations from its target position and rotation. This correction factor determines the responsiveness of the motor joint in achieving the desired linear and angular offsets between two connected bodies.
+
+Used with Motor Joints
+
+#ref GetJointCorrectionFactor
+
diff --git a/doc/files/getjointcurrentlength.txt b/doc/files/getjointcurrentlength.txt
new file mode 100644
index 0000000..e265efc
--- /dev/null
+++ b/doc/files/getjointcurrentlength.txt
@@ -0,0 +1,8 @@
+#title getJointCurrentLength [RCBasic Doc]
+#header function getJointCurrentLength( joint_id)
+
+Returns the current distance between BodyA and BodyB
+
+Used with Distance Joint
+
+#ref GetJointLength
diff --git a/doc/files/getjointcurrentlengtha.txt b/doc/files/getjointcurrentlengtha.txt
new file mode 100644
index 0000000..7455b65
--- /dev/null
+++ b/doc/files/getjointcurrentlengtha.txt
@@ -0,0 +1,8 @@
+#title getJointCurrentLengthA [RCBasic Doc]
+#header function getJointCurrentLengthA( joint_id)
+
+Return the current length of the segment attached to bodyA.
+
+Used with Pulley Joint
+
+#ref GetJointCurrentLengthB
diff --git a/doc/files/getjointcurrentlengthb.txt b/doc/files/getjointcurrentlengthb.txt
new file mode 100644
index 0000000..78e1490
--- /dev/null
+++ b/doc/files/getjointcurrentlengthb.txt
@@ -0,0 +1,8 @@
+#title getJointCurrentLengthB [RCBasic Doc]
+#header function getJointCurrentLengthB( joint_id)
+
+Return the current length of the segment attached to bodyB.
+
+Used with Pulley Joint
+
+#ref GetJointCurrentLengthA
diff --git a/doc/files/getjointdamping.txt b/doc/files/getjointdamping.txt
new file mode 100644
index 0000000..131ecdc
--- /dev/null
+++ b/doc/files/getjointdamping.txt
@@ -0,0 +1,13 @@
+#title getJointDamping [RCBasic Doc]
+#header function getJointDamping( joint_id)
+
+Returns the damping value for a joint
+
+Used with
+#list ul
+#li Distance Joint
+#li Weld Joint
+#li Wheel Joint
+#/list
+
+#ref SetJointDamping
diff --git a/doc/files/getjointgroundanchora.txt b/doc/files/getjointgroundanchora.txt
new file mode 100644
index 0000000..3abb253
--- /dev/null
+++ b/doc/files/getjointgroundanchora.txt
@@ -0,0 +1,8 @@
+#title getJointGroundAnchorA [RCBasic Doc]
+#header sub getJointGroundAnchorA( joint_id, ByRef x, ByRef y)
+
+Gets the first ground anchor
+
+Used with Pulley Joint
+
+#ref GetJointGroundAnchorB
diff --git a/doc/files/getjointgroundanchorb.txt b/doc/files/getjointgroundanchorb.txt
new file mode 100644
index 0000000..ac3d8db
--- /dev/null
+++ b/doc/files/getjointgroundanchorb.txt
@@ -0,0 +1,8 @@
+#title getJointGroundAnchorB [RCBasic Doc]
+#header sub getJointGroundAnchorB( joint_id, ByRef x, ByRef y)
+
+Gets the second ground anchor
+
+Used with Pulley Joint
+
+#ref GetJointGroundAnchorA
diff --git a/doc/files/getjointlength.txt b/doc/files/getjointlength.txt
new file mode 100644
index 0000000..60a9416
--- /dev/null
+++ b/doc/files/getjointlength.txt
@@ -0,0 +1,9 @@
+#title getJointLength [RCBasic Doc]
+#header function getJointLength( joint_id)
+
+Returns the Joint Length
+
+Used with distance Joints
+
+#ref SetJointLength
+
diff --git a/doc/files/getjointlengtha.txt b/doc/files/getjointlengtha.txt
new file mode 100644
index 0000000..395010a
--- /dev/null
+++ b/doc/files/getjointlengtha.txt
@@ -0,0 +1,8 @@
+#title getJointLengthA [RCBasic Doc]
+#header function getJointLengthA( joint_id)
+
+Returns the current length of the line connecting the anchor point on the first body to its corresponding ground anchor. This length can vary based on the movement of the connected bodies.
+
+Used with Pulley Joints
+
+#ref GetJointLengthB
diff --git a/doc/files/getjointlengthb.txt b/doc/files/getjointlengthb.txt
new file mode 100644
index 0000000..969f110
--- /dev/null
+++ b/doc/files/getjointlengthb.txt
@@ -0,0 +1,8 @@
+#title getJointLengthB [RCBasic Doc]
+#header function getJointLengthB( joint_id)
+
+Returns the current length of the line connecting the anchor point on the second body to its corresponding ground anchor. This length can vary based on the movement of the connected bodies.
+
+Used with Pulley Joints
+
+#ref GetJointLengthA
diff --git a/doc/files/getjointlinearoffset.txt b/doc/files/getjointlinearoffset.txt
new file mode 100644
index 0000000..e1eb1a1
--- /dev/null
+++ b/doc/files/getjointlinearoffset.txt
@@ -0,0 +1,8 @@
+#title getJointLinearOffset [RCBasic Doc]
+#header sub getJointLinearOffset( joint_id, ByRef x, ByRef y)
+
+Gets the target position offset for the connected bodies relative to each other.
+
+Used with Motor Joints
+
+#ref SetJointLinearOffset
diff --git a/doc/files/getjointlinearspeed.txt b/doc/files/getjointlinearspeed.txt
new file mode 100644
index 0000000..e773051
--- /dev/null
+++ b/doc/files/getjointlinearspeed.txt
@@ -0,0 +1,6 @@
+#title getJointLinearSpeed [RCBasic Doc]
+#header function getJointLinearSpeed( joint_id)
+
+Returns the current joint linear speed, usually in meters per second.
+
+Used with Wheel Joint
diff --git a/doc/files/getjointlocalanchora.txt b/doc/files/getjointlocalanchora.txt
new file mode 100644
index 0000000..3ab327f
--- /dev/null
+++ b/doc/files/getjointlocalanchora.txt
@@ -0,0 +1,15 @@
+#title getJointLocalAnchorA [RCBasic Doc]
+#header sub getJointLocalAnchorA( joint_id, ByRef x, ByRef y)
+
+Returns the local anchor point relative to bodyA's origin.
+
+#list ul
+#li Distance Joint
+#li Friction Joint
+#li Prismatic Joint
+#li Revolute Joint
+#li Weld Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointLocalAnchorB
diff --git a/doc/files/getjointlocalanchorb.txt b/doc/files/getjointlocalanchorb.txt
new file mode 100644
index 0000000..59355b5
--- /dev/null
+++ b/doc/files/getjointlocalanchorb.txt
@@ -0,0 +1,15 @@
+#title getJointLocalAnchorB [RCBasic Doc]
+#header sub getJointLocalAnchorB( joint_id, ByRef x, ByRef y)
+
+Returns the local anchor point relative to bodyB's origin.
+
+#list ul
+#li Distance Joint
+#li Friction Joint
+#li Prismatic Joint
+#li Revolute Joint
+#li Weld Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointLocalAnchorA
diff --git a/doc/files/getjointlocalaxisa.txt b/doc/files/getjointlocalaxisa.txt
new file mode 100644
index 0000000..fbaf6ad
--- /dev/null
+++ b/doc/files/getjointlocalaxisa.txt
@@ -0,0 +1,11 @@
+#title getJointLocalAxisA [RCBasic Doc]
+#header sub getJointLocalAxisA( joint_id, ByRef x, ByRef y)
+
+Gets the local joint axis relative to bodyA
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Wheel Joint
+#/list
+
diff --git a/doc/files/getjointlowerlimit.txt b/doc/files/getjointlowerlimit.txt
new file mode 100644
index 0000000..3de2db7
--- /dev/null
+++ b/doc/files/getjointlowerlimit.txt
@@ -0,0 +1,13 @@
+#title getJointLowerLimit [RCBasic Doc]
+#header function getJointLowerLimit( joint_id)
+
+Get the lower joint translation limit, usually in meters.
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointUpperLimit
diff --git a/doc/files/getjointmaxforce.txt b/doc/files/getjointmaxforce.txt
new file mode 100644
index 0000000..6d9a4d4
--- /dev/null
+++ b/doc/files/getjointmaxforce.txt
@@ -0,0 +1,10 @@
+#title getJointMaxForce [RCBasic Doc]
+#header function getJointMaxForce( joint_id)
+
+Return the maximum friction force in N.
+
+Used with
+#list ul
+#li Friction Joint
+#li Motor Joint
+#/list
diff --git a/doc/files/getjointmaxlength.txt b/doc/files/getjointmaxlength.txt
new file mode 100644
index 0000000..c2e08be
--- /dev/null
+++ b/doc/files/getjointmaxlength.txt
@@ -0,0 +1,8 @@
+#title getJointMaxLength [RCBasic Doc]
+#header function getJointMaxLength( joint_id)
+
+Returns the maximum length
+
+Used with Distance Joint
+
+#ref GetJointMinLength
diff --git a/doc/files/getjointmaxmotorforce.txt b/doc/files/getjointmaxmotorforce.txt
new file mode 100644
index 0000000..d1cbcc9
--- /dev/null
+++ b/doc/files/getjointmaxmotorforce.txt
@@ -0,0 +1,8 @@
+#title getJointMaxMotorForce [RCBasic Doc]
+#header function getJointMaxMotorForce( joint_id)
+
+Returns the maximum linear force that the motor can apply to achieve the target speed set by SetMotorSpeed. This allows you to control the power or strength of the motor along the joint’s axis.
+
+Used with Prismatic Joint
+
+#ref SetJointMaxMotorForce
diff --git a/doc/files/getjointmaxmotortorque.txt b/doc/files/getjointmaxmotortorque.txt
new file mode 100644
index 0000000..48a1ca2
--- /dev/null
+++ b/doc/files/getjointmaxmotortorque.txt
@@ -0,0 +1,12 @@
+#title getJointMaxMotorTorque [RCBasic Doc]
+#header function getJointMaxMotorTorque( joint_id)
+
+Returns the maximum torque (rotational force) that the motor can apply to achieve the target motor speed set by SetMotorSpeed. This allows you to control how much power the motorized joint has.
+
+Used with
+#list ul
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref SetJointMaxMotorTorque
diff --git a/doc/files/getjointmaxtorque.txt b/doc/files/getjointmaxtorque.txt
new file mode 100644
index 0000000..479724c
--- /dev/null
+++ b/doc/files/getjointmaxtorque.txt
@@ -0,0 +1,12 @@
+#title getJointMaxTorque [RCBasic Doc]
+#header function getJointMaxTorque( joint_id)
+
+Returns the upper limit on the amount of torque (rotational force) the joint can apply, controlling how much rotational resistance or power the joint provides.
+
+Used with
+#list ul
+#li Friction Joint
+#li Motor Joint
+#/list
+
+#ref SetJointMaxTorque
diff --git a/doc/files/getjointminlength.txt b/doc/files/getjointminlength.txt
new file mode 100644
index 0000000..3114321
--- /dev/null
+++ b/doc/files/getjointminlength.txt
@@ -0,0 +1,8 @@
+#title getJointMinLength [RCBasic Doc]
+#header function getJointMinLength( joint_id)
+
+Returns the minimum length
+
+Used with Distance Joint
+
+#ref GetJointMaxLength
diff --git a/doc/files/getjointmotorforce.txt b/doc/files/getjointmotorforce.txt
new file mode 100644
index 0000000..e954a31
--- /dev/null
+++ b/doc/files/getjointmotorforce.txt
@@ -0,0 +1,8 @@
+#title getJointMotorForce [RCBasic Doc]
+#header function getJointMotorForce( joint_id, inv_dt)
+
+Return the current motor force given the inverse time step, usually in N.
+
+Used with Prismatic Joint
+
+#ref SetJointMotorForce
diff --git a/doc/files/getjointmotorspeed.txt b/doc/files/getjointmotorspeed.txt
new file mode 100644
index 0000000..80b725f
--- /dev/null
+++ b/doc/files/getjointmotorspeed.txt
@@ -0,0 +1,13 @@
+#title getJointMotorSpeed [RCBasic Doc]
+#header function getJointMotorSpeed( joint_id)
+
+Returns the motor speed
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref SetJointMotorSpeed
diff --git a/doc/files/getjointmotortorque.txt b/doc/files/getjointmotortorque.txt
new file mode 100644
index 0000000..022fa33
--- /dev/null
+++ b/doc/files/getjointmotortorque.txt
@@ -0,0 +1,12 @@
+#title getJointMotorTorque [RCBasic Doc]
+#header function getJointMotorTorque( joint_id, inv_dt)
+
+Returns the current motor torque given the inverse time step. Unit is N*m.
+
+Used with
+#list ul
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointMaxMotorTorque SetJointMaxMotorTorque
diff --git a/doc/files/getjointratio.txt b/doc/files/getjointratio.txt
new file mode 100644
index 0000000..32d1ae1
--- /dev/null
+++ b/doc/files/getjointratio.txt
@@ -0,0 +1,12 @@
+#title getJointRatio [RCBasic Doc]
+#header function getJointRatio( joint_id)
+
+Returns the gear/pulley ratio
+
+Used with
+#list ul
+#li Gear Joint
+#li Pulley Joint
+#/list
+
+#ref SetJointRatio
diff --git a/doc/files/getjointreactionforce.txt b/doc/files/getjointreactionforce.txt
new file mode 100644
index 0000000..179d558
--- /dev/null
+++ b/doc/files/getjointreactionforce.txt
@@ -0,0 +1,9 @@
+#title getJointReactionForce [RCBasic Doc]
+#header sub getJointReactionForce( joint_id, inv_dt, ByRef x, ByRef y)
+
+Returns the reaction force on bodyB at the joint anchor in Newtons.
+
+Can be used with all joints
+
+#ref GetJointReactionTorque
+
diff --git a/doc/files/getjointreactiontorque.txt b/doc/files/getjointreactiontorque.txt
new file mode 100644
index 0000000..1bbcf38
--- /dev/null
+++ b/doc/files/getjointreactiontorque.txt
@@ -0,0 +1,8 @@
+#title getJointReactionTorque [RCBasic Doc]
+#header function getJointReactionTorque( joint_id, inv_dt)
+
+Returns the reaction torque on bodyB in N*m
+
+Can be used with all joints
+
+#ref GetJointReactionForce
diff --git a/doc/files/getjointreferenceangle.txt b/doc/files/getjointreferenceangle.txt
new file mode 100644
index 0000000..d30f77c
--- /dev/null
+++ b/doc/files/getjointreferenceangle.txt
@@ -0,0 +1,10 @@
+#title getJointReferenceAngle [RCBasic Doc]
+#header function getJointReferenceAngle( joint_id)
+
+Returns the reference angle.
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#/list
diff --git a/doc/files/getjointspeed.txt b/doc/files/getjointspeed.txt
new file mode 100644
index 0000000..49e647d
--- /dev/null
+++ b/doc/files/getjointspeed.txt
@@ -0,0 +1,10 @@
+#title getJointSpeed [RCBasic Doc]
+#header function getJointSpeed( joint_id)
+
+Returns the current joint angle speed
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#/list
diff --git a/doc/files/getjointstiffness.txt b/doc/files/getjointstiffness.txt
new file mode 100644
index 0000000..cecf85e
--- /dev/null
+++ b/doc/files/getjointstiffness.txt
@@ -0,0 +1,13 @@
+#title getJointStiffness [RCBasic Doc]
+#header function getJointStiffness( joint_id)
+
+Returns spring stiffness
+
+Used with
+#list ul
+#li Distance Joint
+#li Weld Joint
+#li Wheel Joint
+#/list
+
+#ref SetJointStiffness
diff --git a/doc/files/getjointtranslation.txt b/doc/files/getjointtranslation.txt
new file mode 100644
index 0000000..286942c
--- /dev/null
+++ b/doc/files/getjointtranslation.txt
@@ -0,0 +1,10 @@
+#title getJointTranslation [RCBasic Doc]
+#header function getJointTranslation( joint_id)
+
+Returns the current joint translation, usually in meters.
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Wheel Joint
+#/list
diff --git a/doc/files/getjointupperlimit.txt b/doc/files/getjointupperlimit.txt
new file mode 100644
index 0000000..4d96565
--- /dev/null
+++ b/doc/files/getjointupperlimit.txt
@@ -0,0 +1,13 @@
+#title getJointUpperLimit [RCBasic Doc]
+#header function getJointUpperLimit( joint_id)
+
+Get the upper joint translation limit, usually in meters.
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointLowerLimit
diff --git a/doc/files/getjointworldanchora.txt b/doc/files/getjointworldanchora.txt
new file mode 100644
index 0000000..336857f
--- /dev/null
+++ b/doc/files/getjointworldanchora.txt
@@ -0,0 +1,8 @@
+#title getJointWorldAnchorA [RCBasic Doc]
+#header sub getJointWorldAnchorA( joint_id, ByRef x, ByRef y)
+
+Get the anchor point on bodyA in world coordinates.
+
+Can be used with all joints
+
+#ref GetJointWorldAnchorB
diff --git a/doc/files/getjointworldanchorb.txt b/doc/files/getjointworldanchorb.txt
new file mode 100644
index 0000000..43a4ede
--- /dev/null
+++ b/doc/files/getjointworldanchorb.txt
@@ -0,0 +1,8 @@
+#title getJointWorldAnchorB [RCBasic Doc]
+#header sub getJointWorldAnchorB( joint_id, ByRef x, ByRef y)
+
+Get the anchor point on bodyB in world coordinates.
+
+Can be used with all joints
+
+#ref GetJointWorldAnchorA
diff --git a/doc/files/getspriteangulardamping.txt b/doc/files/getspriteangulardamping.txt
new file mode 100644
index 0000000..c11cd26
--- /dev/null
+++ b/doc/files/getspriteangulardamping.txt
@@ -0,0 +1,6 @@
+#title getSpriteAngularDamping [RCBasic Doc]
+#header function getSpriteAngularDamping( spr_id)
+
+Returns a sprite's angular damping
+
+#ref ApplySpriteAngularDamping
diff --git a/doc/files/getspriteangularvelocity.txt b/doc/files/getspriteangularvelocity.txt
new file mode 100644
index 0000000..643b107
--- /dev/null
+++ b/doc/files/getspriteangularvelocity.txt
@@ -0,0 +1,4 @@
+#title getSpriteAngularVelocity [RCBasic Doc]
+#header function getSpriteAngularVelocity( spr_id)
+
+Returns the angular velocity
diff --git a/doc/files/getspritecenter.txt b/doc/files/getspritecenter.txt
new file mode 100644
index 0000000..435fadd
--- /dev/null
+++ b/doc/files/getspritecenter.txt
@@ -0,0 +1,4 @@
+#title getSpriteCenter [RCBasic Doc]
+#header sub getSpriteCenter( spr_id, ByRef x, ByRef y)
+
+Returns a sprites center of mass
diff --git a/doc/files/getspritegravityscale.txt b/doc/files/getspritegravityscale.txt
new file mode 100644
index 0000000..d3c1edb
--- /dev/null
+++ b/doc/files/getspritegravityscale.txt
@@ -0,0 +1,6 @@
+#title getSpriteGravityScale [RCBasic Doc]
+#header function getSpriteGravityScale( spr_id)
+
+Returns a sprite's gravity scale
+
+#ref SetSpriteGravityScale
diff --git a/doc/files/getspriteinertia.txt b/doc/files/getspriteinertia.txt
new file mode 100644
index 0000000..5dbc002
--- /dev/null
+++ b/doc/files/getspriteinertia.txt
@@ -0,0 +1,4 @@
+#title getSpriteInertia [RCBasic Doc]
+#header function getSpriteInertia( spr_id)
+
+Returns the rotational inertia of the body about the local origin.
diff --git a/doc/files/getspritelineardamping.txt b/doc/files/getspritelineardamping.txt
new file mode 100644
index 0000000..2e7d8ff
--- /dev/null
+++ b/doc/files/getspritelineardamping.txt
@@ -0,0 +1,6 @@
+#title getSpriteLinearDamping [RCBasic Doc]
+#header function getSpriteLinearDamping( spr_id)
+
+Returns a sprite's linear damping value
+
+#ref SetSpriteLinearDamping
diff --git a/doc/files/getspritelinearvelocity.txt b/doc/files/getspritelinearvelocity.txt
new file mode 100644
index 0000000..6f95fbb
--- /dev/null
+++ b/doc/files/getspritelinearvelocity.txt
@@ -0,0 +1,6 @@
+#title getSpriteLinearVelocity [RCBasic Doc]
+#header sub getSpriteLinearVelocity( spr_id, ByRef x, ByRef y)
+
+Gets the linear velocity of a sprite
+
+#ref SetSpriteLinearVelocity
diff --git a/doc/files/getspritelinearvelocityfromlocalpoint.txt b/doc/files/getspritelinearvelocityfromlocalpoint.txt
new file mode 100644
index 0000000..1bc626e
--- /dev/null
+++ b/doc/files/getspritelinearvelocityfromlocalpoint.txt
@@ -0,0 +1,4 @@
+#title getSpriteLinearVelocityFromLocalPoint [RCBasic Doc]
+#header sub getSpriteLinearVelocityFromLocalPoint( spr_id, pX, pY, ByRef x, ByRef y)
+
+Get the world velocity of a local point.
diff --git a/doc/files/getspritelinearvelocityfromworldpoint.txt b/doc/files/getspritelinearvelocityfromworldpoint.txt
new file mode 100644
index 0000000..df9ba6e
--- /dev/null
+++ b/doc/files/getspritelinearvelocityfromworldpoint.txt
@@ -0,0 +1,4 @@
+#title getSpriteLinearVelocityFromWorldPoint [RCBasic Doc]
+#header sub getSpriteLinearVelocityFromWorldPoint( spr_id, wX, wY, ByRef x, ByRef y)
+
+Get the world linear velocity of a world point attached to this body.
diff --git a/doc/files/getspritelocalpoint.txt b/doc/files/getspritelocalpoint.txt
new file mode 100644
index 0000000..b217c77
--- /dev/null
+++ b/doc/files/getspritelocalpoint.txt
@@ -0,0 +1,4 @@
+#title getSpriteLocalPoint [RCBasic Doc]
+#header sub getSpriteLocalPoint( spr_id, wX, wY, ByRef x, ByRef y)
+
+Gets a local point relative to the body's origin given a world point.
diff --git a/doc/files/getspritelocalvector.txt b/doc/files/getspritelocalvector.txt
new file mode 100644
index 0000000..f2a4ad3
--- /dev/null
+++ b/doc/files/getspritelocalvector.txt
@@ -0,0 +1,4 @@
+#title getSpriteLocalVector [RCBasic Doc]
+#header sub getSpriteLocalVector( spr_id, wX, wY, ByRef x, ByRef y)
+
+Gets a local vector given a world vector.
diff --git a/doc/files/getspritemass.txt b/doc/files/getspritemass.txt
new file mode 100644
index 0000000..90de127
--- /dev/null
+++ b/doc/files/getspritemass.txt
@@ -0,0 +1,4 @@
+#title getSpriteMass [RCBasic Doc]
+#header function getSpriteMass( spr_id)
+
+Returns the total mass of the body.
diff --git a/doc/files/getspriteworldpoint.txt b/doc/files/getspriteworldpoint.txt
new file mode 100644
index 0000000..fd55b93
--- /dev/null
+++ b/doc/files/getspriteworldpoint.txt
@@ -0,0 +1,4 @@
+#title getSpriteWorldPoint [RCBasic Doc]
+#header sub getSpriteWorldPoint( spr_id, lX, lY, ByRef x, ByRef y)
+
+Get the world coordinates of a point given the local coordinates.
diff --git a/doc/files/getspriteworldvector.txt b/doc/files/getspriteworldvector.txt
new file mode 100644
index 0000000..746f4ff
--- /dev/null
+++ b/doc/files/getspriteworldvector.txt
@@ -0,0 +1,4 @@
+#title getSpriteWorldVector [RCBasic Doc]
+#header sub getSpriteWorldVector( spr_id, lX, lY, ByRef x, ByRef y)
+
+Get the world coordinates of a vector given the local coordinates.
diff --git a/doc/files/gettile.txt b/doc/files/gettile.txt
new file mode 100644
index 0000000..ad29da9
--- /dev/null
+++ b/doc/files/gettile.txt
@@ -0,0 +1,6 @@
+#title GetTile [RCBasic Doc]
+#header Function GetTile(tilemap, x, y)
+
+Returns the tile at a specified location on a tilemap
+
+Note: (x, y) is a tile position, not an actual coordinate on the map
diff --git a/doc/files/gettileanimationframe.txt b/doc/files/gettileanimationframe.txt
new file mode 100644
index 0000000..3f13e14
--- /dev/null
+++ b/doc/files/gettileanimationframe.txt
@@ -0,0 +1,6 @@
+#title GetTileAnimationFrame [RCBasic Doc]
+#header Function GetTileAnimationFrame(tileset, base_tile, anim_frame)
+
+Returns the tile set at a specified frame in a tiles animation
+
+#ref SetTileAnimationFrame
diff --git a/doc/files/gettileanimationlength.txt b/doc/files/gettileanimationlength.txt
new file mode 100644
index 0000000..46b8653
--- /dev/null
+++ b/doc/files/gettileanimationlength.txt
@@ -0,0 +1,6 @@
+#title GetTileAnimationLength [RCBasic Doc]
+#header Function GetTileAnimationLength(tileset, base_tile)
+
+Return the number of frames in a tile's animation
+
+#ref SetTileAnimationLength
diff --git a/doc/files/gettileanimationspeed.txt b/doc/files/gettileanimationspeed.txt
new file mode 100644
index 0000000..89edb24
--- /dev/null
+++ b/doc/files/gettileanimationspeed.txt
@@ -0,0 +1,6 @@
+#title GetTileAnimationSpeed [RCBasic Doc]
+#header Function GetTileAnimationSpeed(tileset, base_tile)
+
+Returns the fps of a tile's animation
+
+#ref SetTileAnimationSpeed
diff --git a/doc/files/gettilemapsize.txt b/doc/files/gettilemapsize.txt
new file mode 100644
index 0000000..3c7b91d
--- /dev/null
+++ b/doc/files/gettilemapsize.txt
@@ -0,0 +1,6 @@
+#title GetTileMapSize [RCBasic Doc]
+#header Sub GetTileMapSize(tilemap, ByRef widthInTiles, ByRef heightInTiles)
+
+Gets the size of a tile map
+
+#ref CreateTileMap SetTileMapSize
diff --git a/doc/files/graphics.txt b/doc/files/graphics.txt
new file mode 100644
index 0000000..13e35fe
--- /dev/null
+++ b/doc/files/graphics.txt
@@ -0,0 +1,77 @@
+#title RCBasic Graphics [RCBasic Doc]
+#header GRAPHICS
+
+Finally, the reason we are all here. Lets draw pretty pictures on the screen. The first thing we need is a window. To open the graphics window, we need to use OpenWindow().
+#code
+fullscreen = false
+vsync = true
+
+OpenWindow("My Graphics Window", 640, 480, fullscreen, vsync)
+#/code
+
+The above code will open a 640 x 480 window with vsync enabled. You can reference OpenWindow() for a little more detail.
+
+If we tried to run the code we have so far, the window would open and immediately close. So next to keep our window open and ensure its getting updated we need to make our render loop.
+#code
+While Not Key(K_ESCAPE)
+ Update() 'This needs to be called every frame to refresh the window and poll events
+Wend
+#/code
+
+So now we have our basic render loop but nothing is being drawn. Now is a good time to explain how RCBasic's graphics system works. RCBasic uses virtual render targets called canvases. There are 3 different types of canvases that are used for rendering depending on what you are trying to do. Here is an overview of the different types of canvases:
+#list ul
+#li 2D Paint Canvas - This is a canvas for rendering drawing commands (ie. DrawImage, Rect, FloodFill, etc.)
+#li Sprite Layer - A canvas for rendering sprites. Sprite canvases will only render sprites but they have infinite 2D space to place sprites in.
+#li 3D Canvas - This canvas is a 3D viewport. Each 3D canvas has its own camera so having multiple can impact performance since it re-renders the scene for each 3D canvas.
+#/list
+
+For now, lets just use a paint canvas. We use OpenCanvas() to open a paint canvas. Before our render loop, we will open our canvas.
+#code
+
+paint_canvas = OpenCanvas(640, 480, 0, 0, 640, 480, 1)
+
+Canvas(paint_canvas) 'Sets out canvas as the active canvas. This is unnecessary since we only have one canvas but its a good habit to get into to set your desired canvas active before doing anything on it.
+
+While Not Key(K_ESCAPE)
+ ClearCanvas() 'Clears the canvas every frame. If you have an image that never changes you may not want to do this.
+ Update()
+Wend
+#/code
+
+Here we are opening a canvas for drawing and storing the handle for that canvas in a variable called paint_canvas. Anytime we want to reference that canvas we will use the paint_canvas variable. You can reference OpenCanvas() for more details on how it works. After we opened our canvas, we set it as the active canvas using Canvas() . This was not necessary right now since RCBasic sets the first canvas created as the default canvas but its still a good habit to set a canvas active before doing anything with it to ensure you are targeting the right canvas.
+
+Ok, we have a window and a canvas but we still haven't drawn anything. So lets do that. Inside our render loop, we are going to set our draw color to red and draw a box.
+
+#code
+While Not Key(K_ESCAPE)
+ ClearCanvas()
+
+ SetColor( RGB(200, 0, 0) ) 'Sets the drawing color to red
+ RectFill(20, 20, 50, 50) 'Draws a filled rectangle with the current draw color
+
+ Update()
+Wend
+#/code
+
+So now our finished program looks like this:
+#code
+fullscreen = false
+vsync = true
+
+OpenWindow("My Graphics Window", 640, 480, fullscreen, vsync)
+
+paint_canvas = OpenCanvas(640, 480, 0, 0, 640, 480, 1)
+
+Canvas(paint_canvas)
+
+While Not Key(K_ESCAPE)
+ ClearCanvas()
+
+ SetColor( RGB(200, 0, 0) ) 'Sets the drawing color to red
+ RectFill(20, 20, 50, 50) 'Draws a filled rectangle with the current draw color
+
+ Update()
+Wend
+#/code
+
+RCBasic allows you to create as many canvases as you want and you can have multiple different types of canvases at once. This is just a brief overview of how graphics work but I highly encourage you to check out all the included examples to see more of what is possible.
diff --git a/doc/files/hello_world.txt b/doc/files/hello_world.txt
new file mode 100644
index 0000000..37ea09b
--- /dev/null
+++ b/doc/files/hello_world.txt
@@ -0,0 +1,440 @@
+#title RCBasic First Program [RCBasic Doc]
+#header YOUR FIRST PROGRAM
+
+
+This tutorial is designed to introduce complete newbies to the world of computer programming and specifically programming using RC Basic. This tutorial will not assume any previous programming knowledge and really won't even assume you know much about how a computer works. A basic understanding of 6th Grade Algebra will come in handy but is not necessary. Now that I got that out of the way, lets take our first steps in our journey to becoming computer programmers.
+
+First lets go over the requirements you will need to follow this tutorial. You will need a computer (obviously), RC Basic (yet again obvious, but I had to say it), and the will to learn (not essential but it will definitely help). Ok lets begin.
+
+
What Is A Computer Program?
+It seems like a stupid question but it is important to understand what a program is before we go any further. A computer program is simply a list of detailed instructions telling a computer how to perform a task. And when I say detailed I mean DETAILED. A computer can perform several complex equations a second but still does not know more than you do. If you don't know any complex equations neither does the computer. To give the computer our list of instructions on what we want it to do we use a computer language. There are probably as many computer languages as there are spoken languages and maybe even more. A computer programmer chooses a language based on the task they need to perform, how complex the task is, the time it takes to write the program, and personal choice. For this tutorial we will be using RC Basic. RC Basic is based on the BASIC programming language, which was designed to be easy to learn and use. RC Basic adds the advantage of modern multimedia features and the ability to write our program once and run it on multiple operating systems.
+
+Our First Program
+Lets start off with a simple computer program. We are going to make a program that writes the words "Hello World" to the screen. To tell the computer to write some text to the screen we will use the Print command. Type the following into the RC Basic Editor and click the Run button (the triangle button or you could go into the build menu and click Run).
+
+#code
+Print "Hello World"
+#/code
+
+You should see "Hello World" in your console window. Congratulations, you just wrote your first computer program. So lets break this program down into its individual parts. First is the Print command. This is telling the computer to write something to the console (I will be referring to the DOS screen as the console for the rest of this tutorial). And then we have "Hello World". First of all, why is it in quotation marks? The short answer is because it is not a number. We will go over this more in depth later but for now that is all we need to know for right now? Before we move on, use the Print command to write some other stuff to the screen.
+
+Data Types
+We are finally going to learn why "Hello World" has quotations around it. So lets talk about data types. A data type is simply the type of data you are working with. RC Basic has 2 data types: Numbers and Strings. Numbers are exactly what you think they are. So what are strings? Well to answer this we have to understand what a character is. A character is a number which is generally represented by some kind of symbol. I know that doesn't make since right now so just think of a character as any key on your keyboard. The A Key, B Key, and even the SPACE Key are only numbers to the computer. When the computer reads a character it is actually reading a number and then it outputs a symbol (like letters, digits, parenthesis, space, etc.). So what then is a string? Well a string is a group of characters strung together (which is why it is called a string). RC Basic uses quotation marks to group characters together into a string. So in the string "Hello World", H is a character, e is a character, and so on. If you want to use a single character you would still use quotation marks but you would only have one character between the quotation marks.
+
+Look at the following examples.
+
+#code
+"42"
+42
+#/code
+
+The first line is a string and the second line is a number. Are you confused yet? The first line has the character "4" and the character "2" in a string and the second line is the number 42. Yes they look the same but the way you perform operations on a string is different than the way you perform operations on numbers. It will make more since with the examples below.
+
+This will add the string "53" to the end of the string "42" and output 4253 to the console. Try it.
+
+#code
+Print "42" + "53"
+#/code
+
+This will will add the number 42 to the number 53 and output 95 to the console. Try it.
+
+#code
+Print 42 + 53
+#/code
+
+The differences between numbers and strings should be starting to clear up a little by now. If you are still a little confused at this point don't worry. This is only an Introduction to programming. If you are able to write some text on the screen and do some simple math by the end of this tutorial you will be ready to continue into the next lesson.
+
+Now we are going to get into operators. I know I said at the beginning of the tutorial I did not expect you to know much but I am assuming you know how to add, subtract, multiply, and divide. We got a brief introduction to the "+" operator in the last example. It is important to note that the "+" operator is the only operator that works on both numbers and strings.
+
+Here is a list of the main string operators.
+"+": Adds one string to the end of another. This example will output "batman" to the console.
+
+#code
+Print "bat" + "man"
+#/code
+
+Before we continue, lets break down the PRINT statement. It is the simplest way to get text on the screen. PRINT also allows us to output multiple items of different types by separating them with a “;”.
+
+#code
+Print “Text”; 5+4; “ More Text”;
+
+‘Ending Print with a “;” keeps the cursor on the same line in the console.
+#/code
+
+Here is a list of the main number operators.
+"+": Adds two numbers together. This example will output 8 to the console.
+#code
+Print 6 + 2
+#/code
+"-": Subtracts one number from another. This example will output 4 to the console.
+#code
+Print 6 - 2
+#/code
+"*": Multiplies two numbers (Note: Multiplication uses an * instead of an x). This example will output 12 to the console.
+#code
+Print 6 * 2
+#/code
+"/": Divides one number by another. This example will output 3 to the console.
+#code
+Print 6 / 2
+#/code
+"^": Raises a number to a power. This example will output 36 (6 to the second power) to the console.
+#code
+Print 6 ^ 2
+#/code
+
+Both string operators perform the same operation. They will place the characters in the second string at the end of the first string. The number operators perform the same operations they do on a calculator. One more important thing to mention is that the number operators follow the Order of Operations. Take a look at the example below.
+#code
+Print 4+3*2
+#/code
+In the example above the, following the order of operations PEMDAS (Parenthesis, Exponents, Multiplication, Division, Addition, and Subtraction); 3 is multiplied by 2 which is 6, and then 4 is added to it which is 10. So math is not necessarily done from left to right but it is determined by the order of operations. There is more to the order of operations but we are not going to cover that right now. We covered all of the main operators so before we move on lets look at one more example that uses parenthesis.
+#code
+Print (4+3)*2
+#/code
+This is almost the same problem as the example before it, but now it groups 4 plus 3 together using parenthesis which means 4 and 3 are added first which will be 7. Then that 7 is multiplied by 2 which is 14. If you do the same problems on a calculator you will get the same answers. Try out a few math problems on your own.
+
+Interacting With The User
+Up to this point, we have been writing output to the screen. We have been the user as well as the programmer so there was no reason to need to accept input from the screen. But when you write programs that are meant to be used by people other than yourself you will want to get input from the user and process that input to perform some task. So lets dive into some code. For this example we are using the function Input to ask the user "What is your name? " and read what the user types into the console (which should be there name but they can type whatever they want).
+#code
+Input$("What is your name? ")
+#/code
+You should have seen "What is your name?" and then been able to type something in. You have just received input from the user for the first time. So lets break this line down. First we have the function name Input$. Input$ is a built-in function that prompts the user with something and it returns what the user typed. This is the first time I used the word returns so let me clarify. In the example above lets say you type in Bob for your name. The whole Input$() function call is replaced with "Bob". Take a look at this example.
+
+This line does not prompt anything and just waits for you to type something. We are going to type Bob.
+#code
+Input$("")
+#/code
+After you enter "Bob" the line above will be replaced with "Bob" and the line will finish processing your commands.
+#code
+"Bob"
+#/code
+You are probably thinking that is useless. What can we do with a line that just has a string on it. And the answer is you really can't do anything with a line that just has Bob on it. But if we store the string "Bob" we can use it to do other stuff with.
+
+To store "Bob" (or whatever you call yourself) we use something called a variable. You might have seen variables used in math class in school. A variable is just a symbol that holds data. By symbol I don't mean a logo or anything. Just take a look at this example.
+#code
+a = 2
+b$ = "Bob"
+batman = 4.5
+superman$ = "this is just random text"
+#/code
+This example makes four variables: a, b$, batman, superman$ and stores some data in them. Lets do a break down.
+
+We will start with the variables a and batman. The variables are just storing numbers. We can use variables that store numbers when we have programs that are going to be handling values that change over time. For now lets just do some simple math. Type the variables from the previous example and add the following code and run it.
+#code
+Print a + batman
+#/code
+This example just adds the values in the variables together and outputs the values to the screen. You can change the value of a variable at any time. This is better explained with another example.
+#code
+a = 5
+Print a
+a = 6
+Print a
+a = 5 + 6
+Print a
+#/code
+What we are doing in the example above is changing the value of a and doing math and storing the value in a. We can also store the value of one variable inside another. Lets Look at another example.
+#code
+a = batman
+Print a
+a = a + batman
+Print a
+#/code
+The example above will first store the value of batman in the variable a. It will write a to the screen. Then it will add a and batman and store the result in a and write that value to the screen.
+
+Now we are going to take a look at the other two variables we created: the variable b$ and the variable superman$. Did you notice that both of the variables end in a $. There is a reason for that. The $ at the end of the variable name lets the compiler know that these variables are strings. Since these two variables are strings the rules about strings apply to these variables. Look at the following examples.
+#code
+Print b$
+Print superman$
+Print b$ + superman$
+#/code
+The above example writes the value stored in b$ to the screen. Then it writes the value stored in superman$ to the screen. Finally it adds the contents of the superman$ variable to the end of the contents for the b$ variable and writes that to the screen.
+
+Now that we have covered variables, how do we use them with the users input. Well lets look at the Input$() function again. Notice that the function ends in a $. input$() returns a string so it can be used anywhere a string can. Look at this example.
+
+This line does the same thing as the last time we used the Input$() function. The main Difference is now we are storing the value the user enters into the variable name.
+#code
+name$ = Input$("What is your name?")
+#/code
+This code will store "Bob" or what ever you typed in into the variable name$. Now we can use the name$ as many times as we want anywhere in our program. So now lets make a program that Uses Input$() along with Print. We are going to ask the User for there name and then welcome the User to RC Basic.
+#code
+name$ = Input$("What is your name? ")
+Print "Hello " + name$ + ". Welcome to RC Basic."
+#/code
+Lets do our break down again. In the first$ line we create a variable called name$ and call Input$() in it. This will write "What is your name? " to the screen. When the User Enters something, whatever the User types in will replace Input$(). So name$ will be whatever the User types in. On the next line we use Print to write a message to the screen. The only thing different this time is we are adding a variable to our string in Input$(). But remember that our variable is a string and can do anything a string can, so all you are doing is saying "Hello " + the User's name + ". Welcome to RC Basic.".
+
+We have covered a lot in these first few sections so I am going to take this time to challenge you. Write a program that ask the User to type there favorite color in and then tell them what there favorite color is on the next line.
+
+
+Flow Control
+Flow control sounds like some really complicated topic. But it will probably make sense almost immediately. So what is flow control? Simply put, flow control is controlling what your program does based on what conditions are met. To control the flow in our programs we will use the If statement. The If statement will allow us to execute a block of code depending on what conditions are met. Let look at the last example from the last segment.
+#code
+name$ = Input$("What is your name? ")
+Print "Hello " + name$ + ". Welcome to RC Basic."
+#/code
+To give an idea of how to use the IF statement we are going to extend this program. So lets make the program give a special greeting if Bob is typed in for the name. Look at the following example.
+#code
+name$ = Input$("What is your name? ")
+Print "Hello " + name$ + ". Welcome to RC Basic."
+
+If name$ = "Bob" Then
+Print "We have been expecting you"
+End If
+#/code
+This program will do the same thing it did in the last segment but it adds the use of the IF statement. So lets do a quick break down.
+
+This line is saying if name$ has "Bob" stored in it, then run the following code. Each IF statement must end with the THEN statement.
+#code
+If name$ = "Bob" Then
+#/code
+This line is writing "We have been expecting you" to the screen.
+#code
+Print "We have been expecting you"
+#/code
+This line is ending the block of code that the IF statement wanted the program to execute and continues the rest of your program.
+
+The block of code started by the IF statement can also be given different conditions to check for and execute a different block of code for each different condition. We are going to take a break from strings and use numbers for our next few examples. We are also going to introduce a few new operators. So lets start by making some number variables.
+#code
+a = 1
+b = 3
+c = 5
+#/code
+Now that we have some variables we are going to make a program that ask the User to enter a number and check if the number is equal to each variable and outputs something different for each one. First I need to cover one very important topic. The Input$() function only takes in a string. So even number that are typed in by the User are treated as strings. So we need to convert the Users input to a number to be able to compare it to another number or do any kind of math with it. To do this we will use the Val() function. The Val() function converts a string to a number. Look at the following example real quick.
+
+This example will convert the string "12" to the number 12.
+#code
+x = Val("12")
+#/code
+The more programs you write, the more you will get use to converting numbers to strings and strings to numbers. So how do we use Val() with Input$() . Well remember that Input$() can be used anywhere a string can. So instead of putting "12" in Val() like we did in the last example we will simply put Input$() inside Val(). Make sure your program has the variables a, b, and c we created earlier and add this.
+#code
+d = Val( Input$("Enter a number: ") )
+#/code
+The code above is creating a variable called d. Then it uses the Val() function to convert the string returned by Input$() into a number. The string returned by Input$() is what ever the User types in. Now that we have gotten a number from the User lets compare that number to the variables we made earlier.
+#code
+If d = a Then
+Print "You typed the A value"
+
+ElseIf d = b Then
+Print "That is B"
+
+ElseIf d = c Then
+Print "That would be C"
+
+Else
+Print "You did not type any of the numbers"
+
+End If
+#/code
+Lets do a break down. This is starting a multi-layered If statement block. It should be fairly simple to understand. We are going to go through each line and examine what is happening step by step.
+
+This line is starting your If block by comparing d(which is what the User typed in) to the variable a. If the two variables are equal then it will output "You typed the A value" to the console.
+#code
+If d = a Then
+Print "You typed the A value"
+#/code
+This line will compare d and b if d wasn't equal to a. If the value stored in d is equal to the value stored in b then it will output "That is B" to the console.
+#code
+ElseIf d = b Then
+Print "That is B"
+#/code
+This line will compare d and c if d wasn't equal to a or b. If d is equal to c then "That would be C" is output to the console.
+#code
+ElseIf d = c Then
+Print "That would be C"
+#/code
+This line will output "You did not type any of the numbers" if none of the previous conditions were met.
+#code
+Else
+Print "You did not type any of the numbers"
+#/code
+And finally this line will end the If block and finish running the rest of the program.
+#code
+End If
+#/code
+Now we are going to play with a few other operators for numbers only. In addition to being able to compare if two numbers are equal we can also compare if one number is greater than another, less than another, not equal to another, greater than or equal to another, etc. Here is a list of comparisons we can do with numbers.
+
+Given we have two number stored in variables a and b.
+
+
+
+ •.a = b : Test if a is equal to b
+
+ •.a < b : Test if a is less than b
+
+ •.a > b : Test if a is greater than b
+
+ •.a <= b : Test if a is less than or equal to b
+
+ •.a >= b : Test if a is greater than or equal to b
+
+ •.a <> b : Test if a is not equal to b
+
+
+
+Here is a few examples of doing some of these comparisons with a IF statement.
+#code
+If a = b Then
+'Code to execute
+End If
+
+If a < b Then
+'Code to execute
+End If
+
+If a <> b Then
+'Code to execute
+End If
+#/code
+These other comparisons are pretty straight forward. To try these out we are going to make a program that ask the User to enter a number. If the number is less than or equal to 10 then "Low" will be output to the console. If the number is greater than 10 then we will check if the number is greater than 20. If it is then then "High" will be output to the console. If neither of these conditions are true then "Mid" will be output to the console. First we need to get a number from the User. Remember we need to use the Val() function to convert the User's input from a string to a number.
+
+Here is where we take the User's input and convert it to a number. The Input$() function will get replaced with what the User types in so we simply use the Val() function to convert Input$() to a number.
+#code
+user_num = Val( Input$("Enter a number: ") )
+#/code
+We start our If block by comparing user_num (Our input from the User in the previous line) to the number 10. If the user_num variable is less than or equal to 10 then we use the Print statement to write "Low" to the console.
+#code
+If user_num <= 10 Then
+Print "Low"
+#/code
+If the previous comparison is false then we compare the user_num variable to 20. If user_num is greater than 20 then we will write "High" to the console.
+#code
+ElseIf user_num > 20 Then
+Print "High"
+#/code
+Finally, if none of the previous conditions are true we will write "Mid" to the console.
+#code
+Else
+Print "Mid"
+
+End If
+#/code
+Our complete program looks like this.
+#code
+user_num = Val( Input$("Enter a number: ") )
+
+If user_num <= 10 Then
+Print "Low"
+
+ElseIf user_num > 20 Then
+Print "High"
+
+Else
+Print "Mid"
+
+End If
+#/code
+The last thing we will cover on flow control is the keywords AND , OR , XOR , and NOT . These 4 keywords are actually operators that can be used for more specific comparisons. We will start with the AND operator. The AND operator will compare the conditions to its left and its right. If both conditions are true the AND operator sets the whole expression as true. I already know you didn't understand that explanation so it will probably be easier to show you. Just look at this example.
+
+This code will write "This is true" to the console because 1 is equal to 1 and 4 is greater than 2. Yes it is that simple.
+#code
+If 1=1 AND 4>2 Then
+Print "This is true"
+End If
+#/code
+The OR statement will set the whole expression it is being used in if at least one of the conditions is true. Here is an example of OR .
+
+This code will write "This is true" to the console because although 1 is not equal to 2, 5 is less than or equal to 6.
+#code
+If 1=2 AND 5<6 Then
+Print "This is true"
+End If
+#/code
+The XOR statement is like the OR statement with one major difference. With XOR , one of the conditions in the expression has to be true and the other has to be false. Here is an example of XOR .
+
+This code will write "This is true" to the console because 1 is equal to 1 and 2 is equal to 2 ( 2 <> 2 is false because 2=2. Remember <> is the NOT EQUAL operator). Basically one condition in the XOR expression has to be true and the other has to be false otherwise the whole expression is false. If this is slightly confusing don't worry. In my 15+ years of programming experience I have never once used this operator.
+#code
+If 1=1 XOR 2 <> 2 Then
+Print "This is true"
+End If
+#/code
+The last of these special operators we will cover is NOT . This one will be extremely simple to understand. Basically if an expression is true it becomes false and if an expression is false it becomes true.
+
+This code will write "This is true" to the screen because the expression 1=3 is false. The NOT statement reverses the false and makes it true.
+#code
+If NOT (1=3) Then
+Print "This is true"
+End If
+#/code
+Lets go over one more program before we move on to the next segment. We will ask the User for a number from 1 to 10. If the User enters 3 or 4 then we will write "Good Answer" to the console. If the User enters a number greater than 5 and less than 9 (Basically 6, 7, or 8) then we will write "Choice numbers" to the console. If the User types in any other number then we will write "Maybe next time" to the console.
+
+Here we are asking the User to enter a number from 1 to 10 using the Input$() function. Input$() returns a string so we have to store it in a string variable.
+#code
+user_in$ = Input$("Enter a number from 1 to 10: ")
+#/code
+Then we convert the string the User entered into a string using the Val() function. Note: We are using a string variable inside the Val() function instead of using Input$() inside it this time. I am showing it this way to get you used to the idea that Val() takes a string. It can be a string variable, string function, or just a regular string between quotation marks.
+#code
+num = Val(user_in$)
+#/code
+In the first line of this piece of code we are comparing the variable num (which is the number the User entered) to the number 3 and we compare the variable num to the number 4. If the variable num is equal to the number 3 or 4 then we write "Good Answer" to the console.
+#code
+If num = 3 OR num = 4 Then
+Print "Good Answer"
+#/code
+This block of code compares the variable num to the number 5 and the number 9 if the previous If condition was false. If num is greater than 5 and num is less than 9 then we write "Choice numbers" to the console.
+#code
+ElseIf num > 5 AND num < 9 Then
+Print "Choice numbers"
+#/code
+Finally this last bit of code will write "Maybe next time" to the console if none of the previous IF conditions were true. It then ends the IF block.
+#code
+Else
+Print "Maybe next time"
+
+End If
+#/code
+
+FUNCTION
+This is going to be fairly short. So what is a function? A function is a block of code that is labelled by some kind of name so it can be called at any point in a program. I know you are confused again. But you have been using two functions several times throughout this tutorial. The Input$() function and the Val() function. A function has a return value that is either a number or a string. The Input$() function returns a string so it can be used anywhere in your program a normal string can be used. The Val() function returns a number so it can be used anywhere in your program a number can be used. Yes even inside a math problem. Are these the only two functions available in RC Basic. Not even close. There are over 200 functions available in RC Basic which allows you to do various task. Here is how a function is structured.
+
+function_name ( argument1, argument2, ..etc ) - A function can have no arguments or several arguments. Arguments in a function can be numbers or strings, it just depends on what function you are using. So lets look at a few different functions to see how other functions are used.
+
+Abs() returns the Absolute value of a number.
+#code
+Abs( -4 )
+#/code
+
+Date$() returns the current date as a string.
+#code
+Date$()
+#/code
+
+UCase$() returns the argument you give it as an all uppercase string.
+#code
+UCase$("Hello World")
+#/code
+
+As you can see there are different functions to accomplish different task. You can learn more functions by looking in the RC Basic reference manual located in the Docs folder in the rcbasic directory.
+
+LOOPS
+We have finally made it to the last part of this tutorial. We are already fairly familiar with most of the core concepts of programming. We are finishing this lesson with a brief overview of loops. Loops are exactly what you think they are. They are ways of repeating blocks of code in your program as much as you need them to. Why would we need to repeat parts of our program? Well you will often have a program that you will want to continue running until the user is done using it or you will want to make a counter of some kind.
+
+We are going to cover two types of loops. The first one we are going over is the FOR loop. For loops are used when you want to cycle through a block of code a set number of times. Lets just dive into the code.
+
+Type this code into your editor and run it.
+#code
+For i = 1 to 10
+Print i
+Next
+#/code
+The code in the example above writes the numbers 1 to 10 in the console. The FOR loop starts with a variable, which in this case is i. We set it with an initial value of 1 and tell the computer to loop the code between the FOR line and the NEXT line until i is equal to 10. When the NEXT statement is reached, i is increased by 1 and the program goes back to the start of the loop. That is how the FOR loop works in a nutshell. There is some extra control we can take over the For loop with the STEP statement. With the STEP statement we can change the amount the variable in the For line increases by. Look at the following example.
+
+This code will write the even numbers from 2 to 10 to the console.
+#code
+For i = 2 to 10 Step 2
+Print i
+Next
+#/code
+The last loop we are covering in this tutorial is the WHILE loop. The WHILE loop will loop through a block of code while a certain condition is true. Look at the following example.
+#code
+i = 1
+While i <= 10
+Print i
+i = i + 1
+Wend
+#/code
+In the example above we are doing a little bit more than we have been doing up to this point. First we are creating a variable called i. We start a While loop that compares i to the number 10. If i is less than or equal to 10 then we write the value stored in i to the console. Then we get to the line i = i + 1. This line is making i equal to the value stored in i plus 1. Basically we are increasing i by 1. The WEND line goes back to the start of the WHILE block where it compares i to 10 and if it is less than or equal to 10 it repeats the block of code again.
+
+Now for some challenges.
+
+1. Write a program that ask the User to enter a number. Then create a loop that outputs every number between 1 and the number the user enters to the console.
+2. Write a program that continues to ask the User for there name until they enter "Bob". Then tell the User "Good by Bob".
+
diff --git a/doc/files/intro.txt b/doc/files/intro.txt
new file mode 100644
index 0000000..dde19f4
--- /dev/null
+++ b/doc/files/intro.txt
@@ -0,0 +1,6 @@
+#title Introduction to RCBasic [RCBasic Doc]
+#header INTRODUCTION TO RCBASIC
+
+ First I would like to say thank you for taking an interest in RCBASIC ( I use all caps because I think it looks more retro that way). RCBASIC is a variant of the BASIC programming language. It consist of a compiler, interpreter, and a code editor. This version of BASIC was mostly influenced by sdlBasic and QBasic. My main reason for writing this software was just to have fun and challenge myself. This language is not as full featured as C++ or Java but you can still create some awesome stuff with it. I hope you have as much fun using this software as I had making it.
+
+ Rodney Cunningham (aka. n00b)
diff --git a/doc/files/io.txt b/doc/files/io.txt
new file mode 100644
index 0000000..cb35c1d
--- /dev/null
+++ b/doc/files/io.txt
@@ -0,0 +1,25 @@
+#title RCBasic I/O [RCBasic Doc]
+#header INPUT/OUTPUT
+
+RC BASIC has two ways of getting output to a text console. The first way is the PRINT keyword shown here:
+#code
+Print "HELLO WORLD"
+Print 5
+#/code
+
+You can also use a ";" to output multiple values or to prevent PRINT from going to a new-line in its output.
+#code
+Print "This is line 1. ";
+Print "This is still line 1. Value="; 4+5; " This is the end of line 1"
+Print "Line 2 start"
+#/code
+
+You can also use the FPrint() sub routine to do the same thing as PRINT . It was added back in RCBasic v1.0 since PRINT was not able to stop new-line after its output back then. This is a legacy hold over and does not really add any new functionality.
+
+
+To get input from the user you would use the INPUT$ function. INPUT$ will display a prompt to the user and then get input from the console.
+#code
+USER_NAME$ = INPUT$("WHAT IS YOUR NAME? ")
+#/code
+
+The above example will ask the user WHAT IS YOUR NAME? and then store whatever the user types in into the variable USER_NAME$.
diff --git a/doc/files/jointislimitenabled.txt b/doc/files/jointislimitenabled.txt
new file mode 100644
index 0000000..1d744cc
--- /dev/null
+++ b/doc/files/jointislimitenabled.txt
@@ -0,0 +1,13 @@
+#title jointIsLimitEnabled [RCBasic Doc]
+#header function jointIsLimitEnabled( joint_id)
+
+Returns whether or not the joint limit is enabled
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref EnableJointLimit SetJointLimits
diff --git a/doc/files/jointmotorisenabled.txt b/doc/files/jointmotorisenabled.txt
new file mode 100644
index 0000000..991e120
--- /dev/null
+++ b/doc/files/jointmotorisenabled.txt
@@ -0,0 +1,13 @@
+#title jointMotorIsEnabled [RCBasic Doc]
+#header function jointMotorIsEnabled( joint_id)
+
+Returns whether or not the joint motor is enabled
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref EnableJointMotor
diff --git a/doc/files/license.txt b/doc/files/license.txt
new file mode 100644
index 0000000..bec8934
--- /dev/null
+++ b/doc/files/license.txt
@@ -0,0 +1,23 @@
+#title RCBasic License [RCBasic Doc]
+#header LICENSE
+
+ RCBasic is available under the zlib license :
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+claim that you wrote the original software. If you use this software
+in a product, an acknowledgment in the product documentation would be
+appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be
+misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
+
diff --git a/doc/files/loops.txt b/doc/files/loops.txt
new file mode 100644
index 0000000..28f76ec
--- /dev/null
+++ b/doc/files/loops.txt
@@ -0,0 +1,61 @@
+#title RCBasic Loops [RCBasic Doc]
+#header LOOPS
+
+RC BASIC has 3 types of loops: FOR , WHILE , and DO .
+
+The FOR loop repeats a block of code and increments a counter each time it finishes the block between FOR and NEXT . When the counter reaches a certain value the FOR loop stops.
+#code
+For I = 1 To 5
+ Print I
+Next
+#/code
+
+The above code will output the numbers 1 to 5 to the console. Optionally you could use the STEP keyword to set the number that the counter will increase by. Look at the following:
+#code
+For I = 1 To 5 Step 2
+ Print I
+Next
+#/code
+
+The above code will output the numbers 1, 3, and 5 to the console. The STEP keyword increases I by 2 each time through the FOR loop.
+
+WHILE loops will execute a block of code while a certain condition is true.
+#code
+I = 0
+While I < 5
+ Print I
+ I = I + 1
+Wend
+#/code
+
+The above code will output the numbers 0 to 4. It will not output the number 5 because if ( I < 5 ) is false the loop will not repeat.
+
+The DO loop is similar to the WHILE loop with an exception. The WHILE loop checks for the loop condition at the start of the loop but the DO loop checks for the loop condition at the end of the loop. What this means is that a WHILE loop will never execute if the condition is false at the start but the DO loop is guaranteed to execute at least once before it checks if the condition was true or not.
+
+The DO loop is also unique in that it has 3 different forms. Here is the simplest form of the DO loop.
+#code
+Do
+ Print "HELLO WORLD"
+Loop
+#/code
+
+The code above will continue to output HELLO WORLD to the console infinitely.
+#code
+I = 0
+Do
+ Print I
+ I = I + 1
+Loop While I < 5
+#/code
+
+The above code will output the numbers 0 to 4 to the console. This form of the DO loop will continue to loop while the loop condition is true.
+
+#code
+I = 0
+Do
+ Print I
+ I = I + 1
+Loop Until I = 5
+#/code
+
+The above code will output the numbers 0 to 4 to the console. This form of the DO loop will continue to loop until the loop condition is true.
diff --git a/doc/files/scope.txt b/doc/files/scope.txt
new file mode 100644
index 0000000..45f9b63
--- /dev/null
+++ b/doc/files/scope.txt
@@ -0,0 +1,16 @@
+#title RCBasic Scope [RCBasic Doc]
+#header SCOPE
+
+Scope refers to where you are able to access a variable. Basically variables cannot be accessed from outside the scope they are created in. Look at the following:
+#code
+A = 5
+
+While A < 10
+ B = 1 '----- B is created inside this loop and cannot be accessed outside of this loop
+ A = A + 1 '----- A was created before this loop started so it will be able to be used after this loop ends
+Wend
+
+Print B
+#/code
+
+The above program WILL NOT COMPILE. That is because the variable B was created inside the scope of the WHILE loop and nothing outside the WHILE loop will be able to access it. The variable A was created outside the WHILE loop so the variable A could be used anywhere in this example. So a variable can go into a deeper scope than where it was created but it cannot go to a lesser scope than where it was created. A scope deepens every time a new block is started. Blocks refer to the code within a loop, within a Function, or within a Sub Routine.
diff --git a/doc/files/setjointangularoffset.txt b/doc/files/setjointangularoffset.txt
new file mode 100644
index 0000000..3526c80
--- /dev/null
+++ b/doc/files/setjointangularoffset.txt
@@ -0,0 +1,8 @@
+#title setJointAngularOffset [RCBasic Doc]
+#header sub setJointAngularOffset( joint_id, angleOffset)
+
+Set the target angular offset
+
+Used with Motor Joint
+
+#ref GetJointAngularOffset
diff --git a/doc/files/setjointcorrectionfactor.txt b/doc/files/setjointcorrectionfactor.txt
new file mode 100644
index 0000000..acc09d6
--- /dev/null
+++ b/doc/files/setjointcorrectionfactor.txt
@@ -0,0 +1,8 @@
+#title setJointCorrectionFactor [RCBasic Doc]
+#header sub setJointCorrectionFactor( joint_id, factor)
+
+Sets how quickly the joint corrects deviations from its target position and rotation. This correction factor determines the responsiveness of the motor joint in achieving the desired linear and angular offsets between two connected bodies.
+
+Used with Motor Joints
+
+#ref GetJointCorrectionFactor
diff --git a/doc/files/setjointdamping.txt b/doc/files/setjointdamping.txt
new file mode 100644
index 0000000..1c72164
--- /dev/null
+++ b/doc/files/setjointdamping.txt
@@ -0,0 +1,13 @@
+#title setJointDamping [RCBasic Doc]
+#header sub setJointDamping( joint_id, damping)
+
+Sets the damping value for a joint
+
+Used with
+#list ul
+#li Distance Joint
+#li Weld Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointDamping
diff --git a/doc/files/setjointlength.txt b/doc/files/setjointlength.txt
new file mode 100644
index 0000000..fcffa10
--- /dev/null
+++ b/doc/files/setjointlength.txt
@@ -0,0 +1,8 @@
+#title setJointLength [RCBasic Doc]
+#header sub setJointLength( joint_id, jlen)
+
+Set the fixed distance between two connected bodies. This distance acts as a "target length" that the joint will try to maintain, applying forces to keep the bodies at that separation.
+
+Used with distance Joints
+
+#ref GetJointLength
diff --git a/doc/files/setjointlimits.txt b/doc/files/setjointlimits.txt
new file mode 100644
index 0000000..5abb74a
--- /dev/null
+++ b/doc/files/setjointlimits.txt
@@ -0,0 +1,13 @@
+#title setJointLimits [RCBasic Doc]
+#header sub setJointLimits( joint_id, lower_limit, upper_limit)
+
+Sets the minimum and maximum limits, restricting how far or how much rotation the connected bodies can move relative to each other.
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointLowerLimit GetJointUpperLimit
diff --git a/doc/files/setjointlinearoffset.txt b/doc/files/setjointlinearoffset.txt
new file mode 100644
index 0000000..876b534
--- /dev/null
+++ b/doc/files/setjointlinearoffset.txt
@@ -0,0 +1,8 @@
+#title setJointLinearOffset [RCBasic Doc]
+#header sub setJointLinearOffset( joint_id, x, y)
+
+Specify a target position offset for the connected bodies relative to each other.
+
+Used with Motor Joints
+
+#ref GetJointLinearOffset
diff --git a/doc/files/setjointmaxforce.txt b/doc/files/setjointmaxforce.txt
new file mode 100644
index 0000000..c19b8fd
--- /dev/null
+++ b/doc/files/setjointmaxforce.txt
@@ -0,0 +1,10 @@
+#title setJointMaxForce [RCBasic Doc]
+#header sub setJointMaxForce( joint_id, force)
+
+Sets an upper limit on the amount of force the joint can apply to the connected bodies, helping to control how much resistance or power the joint provides.
+
+Used with
+#list ul
+#li Motor Joint
+#li Friction Joint
+#/list
diff --git a/doc/files/setjointmaxlength.txt b/doc/files/setjointmaxlength.txt
new file mode 100644
index 0000000..5abf701
--- /dev/null
+++ b/doc/files/setjointmaxlength.txt
@@ -0,0 +1,8 @@
+#title setJointMaxLength [RCBasic Doc]
+#header sub setJointMaxLength( joint_id, jlen)
+
+Set the maximum allowable length between two connected bodies
+
+Used with Distance Joint
+
+#ref SetJointMinLength
diff --git a/doc/files/setjointmaxmotorforce.txt b/doc/files/setjointmaxmotorforce.txt
new file mode 100644
index 0000000..806e70c
--- /dev/null
+++ b/doc/files/setjointmaxmotorforce.txt
@@ -0,0 +1,8 @@
+#title setJointMaxMotorForce [RCBasic Doc]
+#header sub setJointMaxMotorForce( joint_id, force)
+
+Limits the maximum linear force that the motor can apply to achieve the target speed set by SetMotorSpeed. This allows you to control the power or strength of the motor along the joint’s axis.
+
+Used with Prismatic Joints
+
+#ref GetJointMaxMotorForce
diff --git a/doc/files/setjointmaxmotortorque.txt b/doc/files/setjointmaxmotortorque.txt
new file mode 100644
index 0000000..37923dd
--- /dev/null
+++ b/doc/files/setjointmaxmotortorque.txt
@@ -0,0 +1,12 @@
+#title setJointMaxMotorTorque [RCBasic Doc]
+#header sub setJointMaxMotorTorque( joint_id, torque)
+
+Limits the maximum torque (rotational force) that the motor can apply to achieve the target motor speed set by SetMotorSpeed. This allows you to control how much power the motorized joint has.
+
+Used with
+#list ul
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointMaxMotorTorque
diff --git a/doc/files/setjointmaxtorque.txt b/doc/files/setjointmaxtorque.txt
new file mode 100644
index 0000000..c071c7b
--- /dev/null
+++ b/doc/files/setjointmaxtorque.txt
@@ -0,0 +1,12 @@
+#title setJointMaxTorque [RCBasic Doc]
+#header sub setJointMaxTorque( joint_id, torque)
+
+Sets an upper limit on the amount of torque (rotational force) the joint can apply, controlling how much rotational resistance or power the joint provides.
+
+Used with
+#list ul
+#li Friction Joint
+#li Motor Joint
+#/list
+
+#ref GetJointMaxTorque
diff --git a/doc/files/setjointminlength.txt b/doc/files/setjointminlength.txt
new file mode 100644
index 0000000..7ea77e7
--- /dev/null
+++ b/doc/files/setjointminlength.txt
@@ -0,0 +1,8 @@
+#title setJointMinLength [RCBasic Doc]
+#header sub setJointMinLength( joint_id, jlen)
+
+Set the minimum allowable length between two connected bodies
+
+Used with Distance Joint
+
+#ref SetJointMaxLength
diff --git a/doc/files/setjointmotorspeed.txt b/doc/files/setjointmotorspeed.txt
new file mode 100644
index 0000000..7ddbc14
--- /dev/null
+++ b/doc/files/setjointmotorspeed.txt
@@ -0,0 +1,13 @@
+#title setJointMotorSpeed [RCBasic Doc]
+#header sub setJointMotorSpeed( joint_id, speed)
+
+Used on joints that support motors, such as revolute joints and prismatic joints, to control the speed at which the motor applies force to achieve movement.
+
+Used with
+#list ul
+#li Prismatic Joint
+#li Revolute Joint
+#li Wheel Joint
+#/list
+
+#ref GetJointMotorSpeed
diff --git a/doc/files/setjointorigin.txt b/doc/files/setjointorigin.txt
new file mode 100644
index 0000000..ed28eb7
--- /dev/null
+++ b/doc/files/setjointorigin.txt
@@ -0,0 +1,6 @@
+#title setJointOrigin [RCBasic Doc]
+#header sub setJointOrigin( joint_id, x, y)
+
+Shift the world origin. This is particularly useful in large simulations where objects might move far from the initial origin, potentially causing precision issues in floating-point calculations.
+
+Used with Pulley Joint
diff --git a/doc/files/setjointratio.txt b/doc/files/setjointratio.txt
new file mode 100644
index 0000000..449f53c
--- /dev/null
+++ b/doc/files/setjointratio.txt
@@ -0,0 +1,8 @@
+#title setJointRatio [RCBasic Doc]
+#header sub setJointRatio( joint_id, j_ratio)
+
+Determines how much one joint’s movement affects the other, enabling complex, synchronized motion.
+
+Used with Gear Joints
+
+#ref GetJointRatio
diff --git a/doc/files/setjointstiffness.txt b/doc/files/setjointstiffness.txt
new file mode 100644
index 0000000..58cbdd3
--- /dev/null
+++ b/doc/files/setjointstiffness.txt
@@ -0,0 +1,13 @@
+#title setJointStiffness [RCBasic Doc]
+#header sub setJointStiffness( joint_id, stiffness)
+
+Sets how rigid a joint is
+
+Used with:
+#list ul
+#li Distance Joint
+#li Weld Joint
+#li Wheel Join
+#/list
+
+#ref GetJointStiffness
diff --git a/doc/files/setspriteangulardamping.txt b/doc/files/setspriteangulardamping.txt
new file mode 100644
index 0000000..72d034e
--- /dev/null
+++ b/doc/files/setspriteangulardamping.txt
@@ -0,0 +1,6 @@
+#title setSpriteAngularDamping [RCBasic Doc]
+#header sub setSpriteAngularDamping( spr_id, angularDamping)
+
+Sets a sprite's angular damping
+
+#ref GetSpriteAngularDamping
diff --git a/doc/files/setspriteangularvelocity.txt b/doc/files/setspriteangularvelocity.txt
new file mode 100644
index 0000000..0ceda48
--- /dev/null
+++ b/doc/files/setspriteangularvelocity.txt
@@ -0,0 +1,6 @@
+#title setSpriteAngularVelocity [RCBasic Doc]
+#header sub setSpriteAngularVelocity( spr_id, av)
+
+Sets the angular velocity of a sprite
+
+#ref GetSpriteAngularVelocity
diff --git a/doc/files/setspriteawake.txt b/doc/files/setspriteawake.txt
new file mode 100644
index 0000000..b665762
--- /dev/null
+++ b/doc/files/setspriteawake.txt
@@ -0,0 +1,4 @@
+#title setSpriteAwake [RCBasic Doc]
+#header sub setSpriteAwake( spr_id, flag)
+
+Sets a sprite's sleep state
diff --git a/doc/files/setspritebullet.txt b/doc/files/setspritebullet.txt
new file mode 100644
index 0000000..cc9ee69
--- /dev/null
+++ b/doc/files/setspritebullet.txt
@@ -0,0 +1,8 @@
+#title setSpriteBullet [RCBasic Doc]
+#header sub setSpriteBullet( spr_id, flag)
+
+Sets whether body has continuous collision detection
+
+Note: Useful for fast moving objects
+
+#ref SpriteIsBullet
diff --git a/doc/files/setspritefixedrotation.txt b/doc/files/setspritefixedrotation.txt
new file mode 100644
index 0000000..ada3364
--- /dev/null
+++ b/doc/files/setspritefixedrotation.txt
@@ -0,0 +1,6 @@
+#title setSpriteFixedRotation [RCBasic Doc]
+#header sub setSpriteFixedRotation( spr_id, flag )
+
+Prevents sprite from being rotated by any forces applied to it
+
+#ref spriteIsFixedRotation
diff --git a/doc/files/setspritegravityscale.txt b/doc/files/setspritegravityscale.txt
new file mode 100644
index 0000000..1cad17c
--- /dev/null
+++ b/doc/files/setspritegravityscale.txt
@@ -0,0 +1,6 @@
+#title setSpriteGravityScale [RCBasic Doc]
+#header sub setSpriteGravityScale( spr_id, g_scale)
+
+Sets the affect of gravity on a sprite
+
+#ref GetSpriteGravityScale
diff --git a/doc/files/setspritelineardamping.txt b/doc/files/setspritelineardamping.txt
new file mode 100644
index 0000000..b1f2db8
--- /dev/null
+++ b/doc/files/setspritelineardamping.txt
@@ -0,0 +1,6 @@
+#title setSpriteLinearDamping [RCBasic Doc]
+#header sub setSpriteLinearDamping( spr_id, linearDamping)
+
+Sets the linear damping of a sprite
+
+#ref GetSpriteLinearDamping
diff --git a/doc/files/setspritelinearvelocity.txt b/doc/files/setspritelinearvelocity.txt
new file mode 100644
index 0000000..b519c20
--- /dev/null
+++ b/doc/files/setspritelinearvelocity.txt
@@ -0,0 +1,6 @@
+#title setSpriteLinearVelocity [RCBasic Doc]
+#header sub setSpriteLinearVelocity( spr_id, x, y)
+
+Sets a sprite's linear velocity
+
+#ref GetSpriteLinearVelocity
diff --git a/doc/files/setspritesleepallowed.txt b/doc/files/setspritesleepallowed.txt
new file mode 100644
index 0000000..d79be31
--- /dev/null
+++ b/doc/files/setspritesleepallowed.txt
@@ -0,0 +1,6 @@
+#title setSpriteSleepAllowed [RCBasic Doc]
+#header sub setSpriteSleepAllowed( spr_id, flag)
+
+Sets whether the sprite is allowed to go to sleep when it's at rest
+
+#ref SetSpriteAwake SpriteIsAwake SpriteIsSleepAllowed
diff --git a/doc/files/settile.txt b/doc/files/settile.txt
new file mode 100644
index 0000000..7714702
--- /dev/null
+++ b/doc/files/settile.txt
@@ -0,0 +1,5 @@
+#title SetTile [RCBasic Doc]
+#header Sub SetTile(tilemap, tile, x, y)
+
+Places a tile on a tilemap
+
diff --git a/doc/files/settileanimationframe.txt b/doc/files/settileanimationframe.txt
new file mode 100644
index 0000000..c222a2a
--- /dev/null
+++ b/doc/files/settileanimationframe.txt
@@ -0,0 +1,12 @@
+#title SetTileAnimationFrame [RCBasic Doc]
+#header Sub SetTileAnimationFrame(tileset, base_tile, anim_frame, tile)
+
+Sets a frame of animation for a tile
+
+Parameters:
+#list ul
+#li tileset - The tileset that the base_tile is in
+#li base_tile - The tile with the frame of animation being set
+#li anim_frame - The specific index in the animation
+#li tile - The tile to set this frame to
+#/list
diff --git a/doc/files/settileanimationlength.txt b/doc/files/settileanimationlength.txt
new file mode 100644
index 0000000..82b841d
--- /dev/null
+++ b/doc/files/settileanimationlength.txt
@@ -0,0 +1,6 @@
+#title SetTileAnimationLength [RCBasic Doc]
+#header Sub SetTileAnimationLength(tileset, base_tile, num_frames)
+
+Sets the number of frames in a tile's animation
+
+#ref GetTileAnimationLength
diff --git a/doc/files/settileanimationspeed.txt b/doc/files/settileanimationspeed.txt
new file mode 100644
index 0000000..b767b1a
--- /dev/null
+++ b/doc/files/settileanimationspeed.txt
@@ -0,0 +1,6 @@
+#title SetTileAnimationSpeed [RCBasic Doc]
+#header Sub SetTileAnimationSpeed(tileset, base_tile, speed)
+
+Sets the speed of a tile's animation
+
+#ref GetTileAnimationSpeed
diff --git a/doc/files/settilemapsize.txt b/doc/files/settilemapsize.txt
new file mode 100644
index 0000000..c1e7e3e
--- /dev/null
+++ b/doc/files/settilemapsize.txt
@@ -0,0 +1,6 @@
+#title SetTileMapSize [RCBasic Doc]
+#header Sub SetTileMapSize(tilemap, widthInTiles, heightInTiles)
+
+Resize a tile map
+
+#ref CreateTileMap GetTileMapSize
diff --git a/doc/files/setup.txt b/doc/files/setup.txt
new file mode 100644
index 0000000..f8fe786
--- /dev/null
+++ b/doc/files/setup.txt
@@ -0,0 +1,46 @@
+#title RCBasic Setup [RCBasic Doc]
+#header SETTING UP RCBASIC
+
+RCBasic comes with 2 command-line tools for creating programs. The first is rcbasic_build which takes your sourcecode in your *.bas file and compiles it into a *.cbc file. The *.cbc file contains intermediate bytecode which can be ran with the rcbasic (rcbasic.exe on windows) application.
+
+NOTE: On Windows, you need to include all the 32-bit dlls with the 32-bit executable and all the 64-bit dlls with the 64-bit executable. The rcbasic package tool will automatically do all of this for you as well as package for other systems as well.
+
+RUN PROGRAMS FROM GEANY
+
+LINUX
+In the installer directory there is a folder called geany_files. Inside the folder there is a file named filetypes.rcbasic. You can override the geany *.bas configuration by replacing the freeBasic configuration with this file. Just copy this file to the geany filedefs path, which on most linux distibutions should be (/home/.config/geany/filedefs), and rename the file to filetypes.freebasic.
+
+Once you have rcbasic set up with geany you just need to create a new file and save it as *.bas. Then you can compile your program by going to Build->Compile. Once your program is compiled you can run it by going to Build->Execute.
+
+NOTE: If you want to use a different file extension for rcbasic programs you can still use this file and just set it up for a different extension. Refer to the geany documentation on how to set up different file types.
+
+
+WINDOWS
+Geany comes preconfigured with rcbasic on windows. Just run the start_editor.bat file and create a new *.bas file. Select the File->New with Template option in the menu to start with a simple template program. Once you have created a new *.bas file goto Build->Compile to compile your program to a *.cbc file. Then goto Build->Execute to run your program.
+
+
+USING RCBASIC FROM THE COMMAND-LINE
+RCBasic will be added to path on install on linux. On Windows you will need to add the rcbasic folder to your path. Either (rcbasic/rcbasic_32) or (rcbasic/rcbasic_64) depending on your operating system. Once rcbasic is in your path you can simple pass a source file to rcbasic_build to create a *.cbc file.
+
+#code
+rcbasic_build myprogram.bas
+#/code
+
+Once you have a *.cbc file you can pass it to rcbasic to run it.
+
+#code
+rcbasic myprogram.cbc
+#/code
+
+Both tools also except the --version argument which will simply output the version of rcbasic you are using.
+
+#code
+rcbasic_build --version
+rcbasic -version
+#/code
+
+
+
+PORTING TO OTHER PLATFORMS
+
+From RCBasic Studio, select tools->distribute and then select the platforms you want to distribute to and click the "MAKE APP" button.
diff --git a/doc/files/sound.txt b/doc/files/sound.txt
new file mode 100644
index 0000000..8fb64bc
--- /dev/null
+++ b/doc/files/sound.txt
@@ -0,0 +1,22 @@
+#title RCBasic Sound [RCBasic Doc]
+#header SOUND
+
+Loading sound and music is fairly straight forward. The big difference between sounds and music is that your program can only have one music track but you could have several sound tracks at once.
+
+Lets first go over loading and playing sounds.
+#code
+snd = LoadSound("MySound.wav") 'Load a sound file
+PlaySound(snd, 1, 3) 'Play the sound loaded in snd on channel 1 for 3 loops
+#/code
+
+There is a lot you can do with sounds when playing them including simulating 3D positional audio. I highly encourage you to play around with the audio to find the right mix for your project.
+
+
+There is only 1 music track that can be loaded at one time. Loading and playing music is pretty straight forward.
+
+#code
+LoadMusic ( "MYMUSIC.MP3" )
+PlayMusic ( -1 ) 'Setting the music loop to -1 will have it loop infinitely
+#/code
+
+Music is even simpler than sound. Generally all you will want to do is load a music track and set it to loop infinitely but you have a lot of control over how the music plays as well.
diff --git a/doc/files/spriteisawake.txt b/doc/files/spriteisawake.txt
new file mode 100644
index 0000000..d67101f
--- /dev/null
+++ b/doc/files/spriteisawake.txt
@@ -0,0 +1,6 @@
+#title spriteIsAwake [RCBasic Doc]
+#header function spriteIsAwake( spr_id)
+
+Wakes a sleeping sprite
+
+#ref SetSpriteAwake SpriteIsSleepAllowed SetSpriteSleepAllowed
diff --git a/doc/files/spriteisbullet.txt b/doc/files/spriteisbullet.txt
new file mode 100644
index 0000000..992041c
--- /dev/null
+++ b/doc/files/spriteisbullet.txt
@@ -0,0 +1,8 @@
+#title spriteIsBullet [RCBasic Doc]
+#header function spriteIsBullet( spr_id)
+
+Returns whether body has continuous collision detection
+
+Note: Useful for fast moving objects
+
+#ref SetSpriteBullet
diff --git a/doc/files/spriteisfixedrotation.txt b/doc/files/spriteisfixedrotation.txt
new file mode 100644
index 0000000..82a8830
--- /dev/null
+++ b/doc/files/spriteisfixedrotation.txt
@@ -0,0 +1,6 @@
+#title spriteIsFixedRotation [RCBasic Doc]
+#header function spriteIsFixedRotation( spr_id)
+
+Returns whether fixed rotation is set on the sprite
+
+#ref SetSpriteFixedRotation
diff --git a/doc/files/spritesleepallowed.txt b/doc/files/spritesleepallowed.txt
new file mode 100644
index 0000000..4e2bcb3
--- /dev/null
+++ b/doc/files/spritesleepallowed.txt
@@ -0,0 +1,6 @@
+#title spriteSleepAllowed [RCBasic Doc]
+#header function spriteSleepAllowed( spr_id)
+
+Whether the body is allowed to go to sleep when it's at rest
+
+#ref SetSpriteSleepAllowed SpriteIsAwake SetSpriteAwake
diff --git a/doc/files/udt.txt b/doc/files/udt.txt
new file mode 100644
index 0000000..6f9ff5f
--- /dev/null
+++ b/doc/files/udt.txt
@@ -0,0 +1,52 @@
+#title RCBasic UDTs [RCBasic Doc]
+#header USER DEFINED TYPES (UDTs)
+
+RCBasic v4 and up introduces the ability to create user defined types. These are basically structures that allow you to store and manage related data. To create a user defined type you need to use the TYPE keyword. Look at the following:
+#code
+Type player
+ Dim x, y
+End Type
+#/code
+
+In the above code, a type called player is created. The DIM keyword must be used to add attributes to our type. Now we can create a variable with the data type player as follows:
+#code
+Dim hero As player
+#/code
+
+Notice that in the above code, we are using the DIM keyword we have used in previous sections to create variables and arrays. We now have a variable called hero whose data type is player .
+
+Since our hero variable is of type player , it has all the attributes of that type. So we can access the attribute's with a "." like so:
+#code
+hero.x = 23
+Print "Hero x is "; hero.x
+#/code
+
+The attributes of a UDT variable are accessed the same way a normal variable is. You can also create an array of UDT's the same way you would create a normal array. Look at the following:
+#code
+Dim enemy[20] As player
+#/code
+
+If you read through the section on arrays then this should make sense. We are using the DIM keyword to make an array called enemy and then we use the AS keyword to set the type of enemy to player .
+
+UDTs can also be used for attributes inside other UDTs. Lets say we wanted each player to have stats like health and power. We could create a UDT for player stats and have an attribute of that stat type inside our player UDT. Here is that example demonstrated:
+#code
+Type Player_Stats
+ Dim health
+ Dim power
+End Type
+
+Type Player
+ Dim x, y
+ Dim stats As Player_Stats
+End Type
+
+Dim hero As Player
+#/code
+
+In the above example, hero now has an attribute called stats that is of type Player_Stats . So now we can access the stats attributes like so:
+#code
+hero.stats.health = 100
+Print "Hero Health = "; hero.stats.health
+#/code
+
+If used effectively, you can drastically increase the readability and maintainability of your code. Especially in large projects.
diff --git a/doc/files/var_data.txt b/doc/files/var_data.txt
new file mode 100644
index 0000000..ffd06db
--- /dev/null
+++ b/doc/files/var_data.txt
@@ -0,0 +1,39 @@
+#title RCBasic Variables [RCBasic Doc]
+#header VARIABLES AND DATA TYPES
+
+RC Basic supports two basic types of data: Numbers and Strings. These data types can be used to represent any type of data used in a program.
+
+Numbers can be either integers or floating point. To designate an integer value you simply write out the number where you need to use it. Floating point numbers are similiar except that you would write a decimal point to denote the start of the floating point value. Look at the following:
+
+#code
+5 'Integer Number
+
+5.5 'Floating Point Number
+#/code
+
+
+Strings are used to store and manipulate data other than numbers. They can be used to refer to single characters, words, sentences, paragraphs, etc. Look at the Following:
+
+#code
+"HELLO WORLD" 'String
+#/code
+
+Notice that the string "HELLO WORLD" is surrounded by quotation marks. When setting a strings value manually you must use quotation marks.
+
+In order to be able to use string or number data to do anything useful we have to be able to store and retrieve the data. This is what variables are used for. Look at the following:
+#code
+A = 5
+
+B$ = "HELLO WORLD"
+#/code
+The above example creates two variables. The variable A stores the number 5 and the variable B$ stores the string HELLO WORLD. Note that the variable B ends with a $. The $ has to be used when creating a string variable to let RC BASIC know its a string and to not treat it as a number. You only have to use the $ when you first create the variable.
+
+If you don't want to set the value of a variable when you create it you can create the variable with the DIM keyword like this:
+#code
+Dim A
+
+Dim B$
+#/code
+You can also declare multiple variables with DIM .
+
+Dim A, B$, C
diff --git a/doc/nw/out/setconedamping.txt b/doc/nw/out/setconedamping.txt
deleted file mode 100644
index 81032dd..0000000
--- a/doc/nw/out/setconedamping.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConeDamping [RCBasic Doc]
-#header sub setConeDamping( constraint_id, damping)
-
-Returns the damping factor applied to the constraint. Damping is used to reduce the amount of oscillation or unwanted movement (such as excessive rotation or swinging) around the constrained actor's axes.
diff --git a/doc/nw/out/setconefixthresh.txt b/doc/nw/out/setconefixthresh.txt
deleted file mode 100644
index 5b6a06a..0000000
--- a/doc/nw/out/setconefixthresh.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title setConeFixThresh [RCBasic Doc]
-#header sub setConeFixThresh( constraint_id, fixThresh)
-
-Sets the fix threshold value associated with that constraint. This threshold is used to control how the constraint behaves when the angle of the rotation between the actors approaches the limits defined by the cone twist constraint.
-
-The fix threshold defines a limit or tolerance for how closely the angle between the two actors can approach the constraint's limits before corrective actions are taken. When the angular motion exceeds this threshold, the constraint applies corrective forces to bring the motion back within the allowed range.
-
-#ref GetConeFixThresh
-
diff --git a/doc/nw/out/setconstraintbreakingimpulsethreshold.txt b/doc/nw/out/setconstraintbreakingimpulsethreshold.txt
deleted file mode 100644
index a546aa4..0000000
--- a/doc/nw/out/setconstraintbreakingimpulsethreshold.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title setConstraintBreakingImpulseThreshold [RCBasic Doc]
-#header sub setConstraintBreakingImpulseThreshold( constraint_id, threshold)
-
-Sets the breaking impulse threshold for a given constraint. The breaking impulse threshold defines the maximum force (impulse) a constraint can withstand before it "breaks," meaning that the constraint will be deactivated and no longer enforce its rules.
-
-#ref GetConstraintBreakingImpulseThreshold
-
diff --git a/doc/nw/out/setconstraintframes.txt b/doc/nw/out/setconstraintframes.txt
deleted file mode 100644
index 0a260b4..0000000
--- a/doc/nw/out/setconstraintframes.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title setConstraintFrames [RCBasic Doc]
-#header sub setConstraintFrames( constraint_id, frameA_matrix, frameB_matrix)
-
-Defines the reference frames for the constraint. This function establishes how the constraint is oriented in the local coordinate systems of the connected actors.
-
-The reference frames define the orientation and position of the constraint relative to each of the connected actors. Each actor can have its own local coordinate system, and the frames help establish how the constraint interacts with these systems.
diff --git a/doc/nw/out/setconstraintsolveriterations.txt b/doc/nw/out/setconstraintsolveriterations.txt
deleted file mode 100644
index b714f72..0000000
--- a/doc/nw/out/setconstraintsolveriterations.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSolverIterations [RCBasic Doc]
-#header sub setConstraintSolverIterations( constraint_id, num)
-
-Sets the value for the number of solver iterations that have been overridden for a specific constraint or actor. Solver iterations refer to the number of times the physics engine solves for constraint forces during each simulation step.
diff --git a/doc/nw/out/sethingeaxis.txt b/doc/nw/out/sethingeaxis.txt
deleted file mode 100644
index ae9a408..0000000
--- a/doc/nw/out/sethingeaxis.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title setHingeAxis [RCBasic Doc]
-#header sub setHingeAxis( constraint_id, x, y, z)
-
-Defines the axis of rotation around which the hinge constraint allows the connected actors to rotate. This function is essential for establishing how the two actors will interact in terms of rotational motion.
-
-The axis of rotation defines the direction in which the hinge can rotate. For example, if you want a door to swing open, you would set the axis to be perpendicular to the plane of the door and aligned with the hinge line.
-
diff --git a/doc/nw/out/setpointpivota.txt b/doc/nw/out/setpointpivota.txt
deleted file mode 100644
index ab8b377..0000000
--- a/doc/nw/out/setpointpivota.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title setPointPivotA [RCBasic Doc]
-#header sub setPointPivotA( constraint_id, x, y, z)
-
-Sets the pivot point on the first actor (Body A) of the constraint. This pivot point defines the specific location in the local space of Body A where the point-to-point constraint is anchored.
-
-#ref GetPointPivotA SetPointPivotB
diff --git a/doc/nw/out/setpointpivotb.txt b/doc/nw/out/setpointpivotb.txt
deleted file mode 100644
index 275a6b8..0000000
--- a/doc/nw/out/setpointpivotb.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title setPointPivotB [RCBasic Doc]
-#header sub setPointPivotB( constraint_id, x, y, z)
-
-Sets the pivot point on the second actor (Body B) of the constraint. This pivot point defines the specific location in the local space of Body B where the point-to-point constraint is anchored.
-
-#ref GetPointPivotA SetPointPivotB
-
diff --git a/doc/nw/out/setslidedampingdirang.txt b/doc/nw/out/setslidedampingdirang.txt
deleted file mode 100644
index ff4580b..0000000
--- a/doc/nw/out/setslidedampingdirang.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title setSlideDampingDirAng [RCBasic Doc]
-#header sub setSlideDampingDirAng( constraint_id, n)
-
-Sets the angular directional damping value. This damping factor specifically affects angular motion in the direction of movement along the constraint's axes.
-
-
diff --git a/doc/nw/out/setslidedampingdirlin.txt b/doc/nw/out/setslidedampingdirlin.txt
deleted file mode 100644
index 2949b56..0000000
--- a/doc/nw/out/setslidedampingdirlin.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-#title setSlideDampingDirLin [RCBasic Doc]
-#header sub setSlideDampingDirLin( constraint_id, n)
-
-Sets the linear directional damping value for a constraint. This value applies to the linear (translational) motion of an object along the constraint's axis of movement.
-
diff --git a/doc/nw/out/setslidedampinglimang.txt b/doc/nw/out/setslidedampinglimang.txt
deleted file mode 100644
index 868cd93..0000000
--- a/doc/nw/out/setslidedampinglimang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideDampingLimAng [RCBasic Doc]
-#header sub setSlideDampingLimAng( constraint_id, n)
-
-Sets the angular limit damping factor for a constraint. This damping applies specifically to the angular motion of an object when it reaches the limit of its allowed rotational range.
-
-
-#ref GetSlideDampingLimAng
-
diff --git a/doc/nw/out/setslidedampinglimlin.txt b/doc/nw/out/setslidedampinglimlin.txt
deleted file mode 100644
index 783dfb7..0000000
--- a/doc/nw/out/setslidedampinglimlin.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title setSlideDampingLimLin [RCBasic Doc]
-#header sub setSlideDampingLimLin( constraint_id, n)
-
-Sets the linear limit damping factor for a constraint. This damping applies specifically to the linear (translational) motion of an object when it reaches the limit of its allowed range of movement along a specific axis.
-
-#ref GetSlideDampingLimLin
-
diff --git a/doc/nw/out/setslidedampingorthoang.txt b/doc/nw/out/setslidedampingorthoang.txt
deleted file mode 100644
index 0c41854..0000000
--- a/doc/nw/out/setslidedampingorthoang.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title setSlideDampingOrthoAng [RCBasic Doc]
-#header sub setSlideDampingOrthoAng( constraint_id, n)
-
-Sets the orthogonal angular damping factor applied to a constraint. This damping affects angular (rotational) motion that occurs perpendicular to the primary axis of movement defined by the constraint.
-
-#ref GetSlideDampingOrthoAng
diff --git a/doc/nw/out/setslidedampingortholin.txt b/doc/nw/out/setslidedampingortholin.txt
deleted file mode 100644
index d1b741c..0000000
--- a/doc/nw/out/setslidedampingortholin.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title setSlideDampingOrthoLin [RCBasic Doc]
-#header sub setSlideDampingOrthoLin( constraint_id, n)
-
-Sets the orthogonal linear damping factor for a constraint. This damping affects the linear (translational) motion of an object that occurs perpendicular to the primary direction of movement defined by the constraint.
-
-#ref GetSlideDampingOrthoLin
diff --git a/doc/nw/out/setslideloweranglimit.txt b/doc/nw/out/setslideloweranglimit.txt
deleted file mode 100644
index 656e6b5..0000000
--- a/doc/nw/out/setslideloweranglimit.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title SetSlideLowerAngLimit [RCBasic Doc]
-#header sub SetSlideLowerAngLimit( constraint_id, n)
-
-Sets the lower angular limit of the constraint. This value specifies the minimum angle allowed for the rotation of the connected actors around the axis perpendicular to the sliding direction defined by the slider constraint.
-
-The lower angular limit indicates the smallest angle that the actors can rotate about the axis perpendicular to the sliding direction. If the rotation tries to exceed this limit, the physics engine will apply corrective forces to maintain the bodies within the allowed range.
-
-#ref GetSlideLowerAngLimit
diff --git a/doc/nw/out/setslidelowerlinlimit.txt b/doc/nw/out/setslidelowerlinlimit.txt
deleted file mode 100644
index 84f67f5..0000000
--- a/doc/nw/out/setslidelowerlinlimit.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideLowerLinLimit [RCBasic Doc]
-#header sub setSlideLowerLinLimit( constraint_id, n)
-
-Sets the lower linear limit for the translational (sliding) motion along the slider's axis. This value specifies the minimum allowable position for the connected actors along the defined axis of the slider constraint.
-
-This defines the minimum translation distance along the slider’s axis that the connected actors are allowed to reach. If the actors' relative position along the axis goes below this limit, the constraint will prevent further movement.
-
-#ref GetSlideLowerLinLimit
diff --git a/doc/nw/out/setsliderestitutiondirang.txt b/doc/nw/out/setsliderestitutiondirang.txt
deleted file mode 100644
index 4fa9e21..0000000
--- a/doc/nw/out/setsliderestitutiondirang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideRestitutionDirAng [RCBasic Doc]
-#header sub setSlideRestitutionDirAng( constraint_id, n)
-
-Sets the restitution value for angular motion. The restitution coefficient is a measure of how much energy is conserved in a collision or constraint interaction, specifically for angular movements.
-
-When actors collide or interact, their angular momentum and position can change, and the restitution value governs how much of that energy is retained after the interaction.
-
-#ref GetSlideRestitutionDirAng
diff --git a/doc/nw/out/setsliderestitutiondirlin.txt b/doc/nw/out/setsliderestitutiondirlin.txt
deleted file mode 100644
index 28e1eee..0000000
--- a/doc/nw/out/setsliderestitutiondirlin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideRestitutionDirLin [RCBasic Doc]
-#header sub setSlideRestitutionDirLin( constraint_id, n)
-
-Sets the restitution value for linear motion. This value determines how much energy is conserved in a collision or interaction involving linear movements of the connected actors.
-
-When the actors collide or interact, the restitution value dictates how much of their energy is retained after the interaction.
-
-#ref SetSlideRestitutionDirLin
diff --git a/doc/nw/out/setsliderestitutionlimang.txt b/doc/nw/out/setsliderestitutionlimang.txt
deleted file mode 100644
index f819d63..0000000
--- a/doc/nw/out/setsliderestitutionlimang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideRestitutionLimAng [RCBasic Doc]
-#header sub setSlideRestitutionLimAng( constraint_id, n)
-
-Sets the restitution value for angular limit. This value determines how much energy is conserved when the angular motion of the connected actors reaches the angular limits of the slider constraint. Essentially, it controls how "bouncy" the rotation is when it hits the angular limit of the constraint.
-
-A value of 0.0 means no bounce (perfectly inelastic), while a value of 1.0 allows maximum bounce (perfectly elastic).
-
-#ref GetSlideRestitutionLimAng
diff --git a/doc/nw/out/setsliderestitutionlimlin.txt b/doc/nw/out/setsliderestitutionlimlin.txt
deleted file mode 100644
index 7d58d50..0000000
--- a/doc/nw/out/setsliderestitutionlimlin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideRestitutionLimLin [RCBasic Doc]
-#header sub setSlideRestitutionLimLin( constraint_id, n)
-
-Sets the restitution value for the linear limit of the constraint. This value controls how much energy is conserved (or how "bouncy" the interaction is) when the connected actors reach the linear limits of the slider constraint, which restricts the movement along the sliding axis.
-
-Restitution is a measure of how much energy is retained after a collision or interaction. In this context, when the linear movement reaches the limits, restitution controls how much the actors "bounce" back. A restitution value of 0.0 means no bounce (the collision is perfectly inelastic), and 1.0 allows maximum bounce (the collision is perfectly elastic).
-
-#ref GetSlideRestitutionLimLin
diff --git a/doc/nw/out/setsliderestitutionorthoang.txt b/doc/nw/out/setsliderestitutionorthoang.txt
deleted file mode 100644
index 30b7767..0000000
--- a/doc/nw/out/setsliderestitutionorthoang.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title setSlideRestitutionOrthoAng [RCBasic Doc]
-#header sub setSlideRestitutionOrthoAng( constraint_id, n)
-
-Sets the restitution value for orthogonal angular motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when rotational movement occurs in a direction orthogonal (perpendicular) to the slider's primary axis of movement.
-
-Orthogonal Angular Motion: In the context of a slider constraint, orthogonal angular motion refers to rotational movement around axes that are perpendicular to the slider's main movement axis.
-
-Restitution: Restitution is a measure of how much energy is retained in a collision or interaction. A restitution value of 0.0 means no bounce (inelastic collision), and 1.0 means maximum bounce (elastic collision). For orthogonal angular motion, this describes how much bounce occurs after the rotational motion hits the constraints or limits in a perpendicular direction to the slider axis.
-
-#ref GetSlideRestitutionOrthoAng
diff --git a/doc/nw/out/setsliderestitutionortholin.txt b/doc/nw/out/setsliderestitutionortholin.txt
deleted file mode 100644
index 3cd9aa8..0000000
--- a/doc/nw/out/setsliderestitutionortholin.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title setSlideRestitutionOrthoLin [RCBasic Doc]
-#header sub setSlideRestitutionOrthoLin( constraint_id, n)
-
-Sets the restitution value for orthogonal linear motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when linear motion occurs in a direction orthogonal (perpendicular) to the primary sliding axis of the constraint.
-
-Orthogonal Linear Motion: In the context of a slider constraint, orthogonal linear motion refers to translational movement along axes that are perpendicular to the main sliding axis of the constraint.
-
-Restitution: Restitution is a measure of how much energy is retained or conserved during a collision or interaction. A restitution value of 0.0 indicates no bounce (perfectly inelastic), while 1.0 indicates maximum bounce (perfectly elastic). For orthogonal linear motion, this value describes how much the actors bounce or retain energy when they hit limits or experience movement perpendicular to the slider’s main axis.
-
-#ref GetSlideRestitutionOrthoLin
diff --git a/doc/nw/out/setslidesoftnessdirang.txt b/doc/nw/out/setslidesoftnessdirang.txt
deleted file mode 100644
index 8daf00e..0000000
--- a/doc/nw/out/setslidesoftnessdirang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideSoftnessDirAng [RCBasic Doc]
-#header sub setSlideSoftnessDirAng( constraint_id, n)
-
-Sets the softness parameter for the angular motion of the constraint. This parameter is used to define how "soft" or "rigid" the limits of angular motion are, particularly when the angular limits are reached.
-
-The softness parameter defines how smoothly the constraint responds to limit violations. A higher softness value allows for more gradual movements when limits are approached, while a lower value creates a more rigid response. Softness is particularly useful in simulations to avoid harsh impacts or stiff movements when limits are reached.
-
-#ref GetSlideSoftnessDirAng
diff --git a/doc/nw/out/setslidesoftnessdirlin.txt b/doc/nw/out/setslidesoftnessdirlin.txt
deleted file mode 100644
index e82c723..0000000
--- a/doc/nw/out/setslidesoftnessdirlin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setConstraintSoftnessDirLin [RCBasic Doc]
-#header sub setConstraintSoftnessDirLin( constraint_id, n)
-
-Sets the softness parameter for the linear motion of the constraint. This parameter influences how the constraint responds when the linear limits of movement are reached along the sliding axis, determining whether the response is soft and gradual or more rigid.
-
-In the context of constraints, softness defines how "compliant" or "stiff" the constraint behaves when the limits are approached. A higher softness value makes the constraint respond more softly and gradually as the limit is approached, while a lower value makes the response stiffer and more rigid.
-
-#ref GetSlideSoftnessDirLin
diff --git a/doc/nw/out/setslidesoftnesslimang.txt b/doc/nw/out/setslidesoftnesslimang.txt
deleted file mode 100644
index d806c20..0000000
--- a/doc/nw/out/setslidesoftnesslimang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideSoftnessLimAng [RCBasic Doc]
-#header sub setSlideSoftnessLimAng( constraint_id, n)
-
-Sets the softness parameter for the angular limits of the constraint. This parameter affects how "soft" or "rigid" the constraint behaves when the connected actors reach their angular rotational limits around the slider's axis of rotation.
-
-The softness parameter defines how compliant or stiff the constraint behaves when the motion approaches a limit. A higher softness makes the constraint more flexible, allowing for smoother motion near the limit. A lower softness makes the limit response more rigid and immediate.
-
-#ref GetSlideSoftnessLimAng
diff --git a/doc/nw/out/setslidesoftnesslimlin.txt b/doc/nw/out/setslidesoftnesslimlin.txt
deleted file mode 100644
index 7461c5b..0000000
--- a/doc/nw/out/setslidesoftnesslimlin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideSoftnessLimLin [RCBasic Doc]
-#header sub setSlideSoftnessLimLin( constraint_id, n)
-
-Sets the softness parameter for the linear limits of the constraint. This parameter influences how "soft" or "rigid" the constraint behaves when the connected actors reach their linear (sliding) limits along the constraint's axis of motion.
-
-The softness parameter defines how compliant or stiff the constraint behaves when limits are approached. A higher softness value allows for a more gradual and flexible response as the limit is reached, while a lower softness value results in a stiffer and more rigid response.
-
-#ref GetSlideSoftnessLimLin
diff --git a/doc/nw/out/setslidesoftnessorthoang.txt b/doc/nw/out/setslidesoftnessorthoang.txt
deleted file mode 100644
index bc33d25..0000000
--- a/doc/nw/out/setslidesoftnessorthoang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setSlideSoftnessOrthoAng [RCBasic Doc]
-#header sub setSlideSoftnessOrthoAng( constraint_id, n)
-
-Sets the softness parameter for the orthogonal angular limits of the constraint. This parameter controls how "soft" or "rigid" the constraint behaves when angular rotation is limited along directions orthogonal (perpendicular) to the primary axis of motion.
-
-The softness parameter defines how compliant (soft) or stiff (rigid) the constraint behaves when the bodies approach their angular or linear limits. A higher softness value makes the limit more flexible, allowing for gradual motion, while a lower value makes the limit more rigid and restrictive.
-
-#ref GetSlideSoftnessOrthoAng
diff --git a/doc/nw/out/setslidesoftnessortholin.txt b/doc/nw/out/setslidesoftnessortholin.txt
deleted file mode 100644
index f2f2ad8..0000000
--- a/doc/nw/out/setslidesoftnessortholin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setConstraintSoftnessOrthoLin [RCBasic Doc]
-#header sub setSlideSoftnessOrthoLin( constraint_id, n)
-
-Sets the softness parameter for the orthogonal linear limits of the constraint. This parameter affects how "soft" or "rigid" the constraint behaves when the connected actors approach their linear movement limits in directions that are orthogonal (perpendicular) to the primary sliding axis.
-
-The softness parameter determines how rigid or compliant the constraint is when the actors approach their movement limits. A higher softness value allows for smoother, more flexible movement near the limit, while a lower value results in a more rigid, immediate response.
-
-#ref GetSlideSoftnessOrthoLin
diff --git a/doc/nw/out/setslideupperanglimit.txt b/doc/nw/out/setslideupperanglimit.txt
deleted file mode 100644
index 469d8da..0000000
--- a/doc/nw/out/setslideupperanglimit.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title setSlideUpperAngLimit [RCBasic Doc]
-#header sub setSlideUpperAngLimit( constraint_id, n)
-
-Sets the upper limit of the angular movement allowed for the constraint. This function is crucial for determining how much rotational freedom is allowed around the axis of rotation defined by the slider constraint.
-
-The upper angular limit specifies the maximum allowed rotation around the rotational axis for the slider constraint. If the relative rotation between the two actors exceeds this angle, corrective forces are applied to maintain the constraint and prevent further rotation.
diff --git a/doc/nw/out/setslideupperlinlimit.txt b/doc/nw/out/setslideupperlinlimit.txt
deleted file mode 100644
index 42d58c1..0000000
--- a/doc/nw/out/setslideupperlinlimit.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#title setSlideUpperLinLimit [RCBasic Doc]
-#header sub setSlideUpperLinLimit( constraint_id, n)
-
-Sets the upper limit for linear movement along the constraint's axis. This is a crucial function for controlling how far the connected actors can slide along that axis before the constraint enforces limits.
-
-The upper linear limit specifies the maximum distance that the connected actors can move away from each other along the slider's axis. If the relative movement exceeds this limit, the constraint will apply corrective forces to stop further movement.
diff --git a/doc/nw/setconstraintaxis.txt b/doc/nw/setconstraintaxis.txt
deleted file mode 100644
index 2f30401..0000000
--- a/doc/nw/setconstraintaxis.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintAxis [RCBasic Doc]
-#header sub setConstraintAxis( constraint_id, x, y, z)
-
-
diff --git a/doc/nw/setconstraintbreakingimpulsethreshold.txt b/doc/nw/setconstraintbreakingimpulsethreshold.txt
deleted file mode 100644
index a546aa4..0000000
--- a/doc/nw/setconstraintbreakingimpulsethreshold.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#title setConstraintBreakingImpulseThreshold [RCBasic Doc]
-#header sub setConstraintBreakingImpulseThreshold( constraint_id, threshold)
-
-Sets the breaking impulse threshold for a given constraint. The breaking impulse threshold defines the maximum force (impulse) a constraint can withstand before it "breaks," meaning that the constraint will be deactivated and no longer enforce its rules.
-
-#ref GetConstraintBreakingImpulseThreshold
-
diff --git a/doc/nw/setconstraintdamping.txt b/doc/nw/setconstraintdamping.txt
deleted file mode 100644
index b495d71..0000000
--- a/doc/nw/setconstraintdamping.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setConstraintDamping [RCBasic Doc]
-#header sub setConstraintDamping( constraint_id, damping)
-
-Returns the damping factor applied to the constraint. Damping is used to reduce the amount of oscillation or unwanted movement (such as excessive rotation or swinging) around the constrained actor's axes.
-
-Note: Only applies to cone constraint
-
-# SetConstraintDamping
diff --git a/doc/nw/setconstraintdampingdirang.txt b/doc/nw/setconstraintdampingdirang.txt
deleted file mode 100644
index b69838d..0000000
--- a/doc/nw/setconstraintdampingdirang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setConstraintDampingDirAng [RCBasic Doc]
-#header sub setConstraintDampingDirAng( constraint_id, n)
-
-Returns the angular directional damping value. This damping factor specifically affects angular motion in the direction of movement along the constraint's axes.
-
-Note: Only applies to slider constraint
-
-#ref SetConstraintDampingDirAng
diff --git a/doc/nw/setconstraintdampingdirlin.txt b/doc/nw/setconstraintdampingdirlin.txt
deleted file mode 100644
index 14e8a79..0000000
--- a/doc/nw/setconstraintdampingdirlin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setConstraintDampingDirLin [RCBasic Doc]
-#header sub setConstraintDampingDirLin( constraint_id, n)
-
-Sets the linear directional damping value for a constraint. This value applies to the linear (translational) motion of an object along the constraint's axis of movement.
-
-Note: Only applies to slide constraints
-
-#ref SetConstraintDampingDirLin
diff --git a/doc/nw/setconstraintdampinglimang.txt b/doc/nw/setconstraintdampinglimang.txt
deleted file mode 100644
index 90dca6f..0000000
--- a/doc/nw/setconstraintdampinglimang.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title setConstraintDampingLimAng [RCBasic Doc]
-#header sub setConstraintDampingLimAng( constraint_id, n)
-
-Sets the angular limit damping factor for a constraint. This damping applies specifically to the angular motion of an object when it reaches the limit of its allowed rotational range.
-
-Note: Only applies to slide constraint
-
-#ref GetConstraintDampingLimAng
-
diff --git a/doc/nw/setconstraintdampinglimlin.txt b/doc/nw/setconstraintdampinglimlin.txt
deleted file mode 100644
index 16ae248..0000000
--- a/doc/nw/setconstraintdampinglimlin.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title setConstraintDampingLimLin [RCBasic Doc]
-#header sub setConstraintDampingLimLin( constraint_id, n)
-
-Sets the linear limit damping factor for a constraint. This damping applies specifically to the linear (translational) motion of an object when it reaches the limit of its allowed range of movement along a specific axis.
-
-Note: Only applies to slide constraint
-
-#ref GetConstraintDampingLimLin
-
diff --git a/doc/nw/setconstraintdampingorthoang.txt b/doc/nw/setconstraintdampingorthoang.txt
deleted file mode 100644
index 9ab4d9a..0000000
--- a/doc/nw/setconstraintdampingorthoang.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setConstraintDampingOrthoAng [RCBasic Doc]
-#header sub setConstraintDampingOrthoAng( constraint_id, n)
-
-Sets the orthogonal angular damping factor applied to a constraint. This damping affects angular (rotational) motion that occurs perpendicular to the primary axis of movement defined by the constraint.
-
-Note: Only applies to slide constraint
-
-#ref GetConstraintDampingOrthoAng
diff --git a/doc/nw/setconstraintdampingortholin.txt b/doc/nw/setconstraintdampingortholin.txt
deleted file mode 100644
index b94ca89..0000000
--- a/doc/nw/setconstraintdampingortholin.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#title setConstraintDampingOrthoLin [RCBasic Doc]
-#header sub setConstraintDampingOrthoLin( constraint_id, n)
-
-Sets the orthogonal linear damping factor for a constraint. This damping affects the linear (translational) motion of an object that occurs perpendicular to the primary direction of movement defined by the constraint.
-
-Note: Only applies to slide constraint
-
-#ref SetConstraintDampingOrthoLin
diff --git a/doc/nw/setconstraintfixthresh.txt b/doc/nw/setconstraintfixthresh.txt
deleted file mode 100644
index 8074cd6..0000000
--- a/doc/nw/setconstraintfixthresh.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-#title setConstraintFixThresh [RCBasic Doc]
-#header sub setConstraintFixThresh( constraint_id, fixThresh)
-
-Sets the fix threshold value associated with that constraint. This threshold is used to control how the constraint behaves when the angle of the rotation between the actors approaches the limits defined by the cone twist constraint.
-
-The fix threshold defines a limit or tolerance for how closely the angle between the two actors can approach the constraint's limits before corrective actions are taken. When the angular motion exceeds this threshold, the constraint applies corrective forces to bring the motion back within the allowed range.
-
-#ref GetConstraintFixThresh
-
diff --git a/doc/nw/setconstraintframes.txt b/doc/nw/setconstraintframes.txt
deleted file mode 100644
index 554e0a8..0000000
--- a/doc/nw/setconstraintframes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintFrames [RCBasic Doc]
-#header sub setConstraintFrames( constraint_id, frameA_matrix, frameB_matrix)
-
-
diff --git a/doc/nw/setconstraintloweranglimit.txt b/doc/nw/setconstraintloweranglimit.txt
deleted file mode 100644
index 3881608..0000000
--- a/doc/nw/setconstraintloweranglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintLowerAngLimit [RCBasic Doc]
-#header sub setConstraintLowerAngLimit( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintlowerlinlimit.txt b/doc/nw/setconstraintlowerlinlimit.txt
deleted file mode 100644
index 3ad7a53..0000000
--- a/doc/nw/setconstraintlowerlinlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintLowerLinLimit [RCBasic Doc]
-#header sub setConstraintLowerLinLimit( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintpivota.txt b/doc/nw/setconstraintpivota.txt
deleted file mode 100644
index 48b87d8..0000000
--- a/doc/nw/setconstraintpivota.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintPivotA [RCBasic Doc]
-#header sub setConstraintPivotA( constraint_id, x, y, z)
-
-
diff --git a/doc/nw/setconstraintpivotb.txt b/doc/nw/setconstraintpivotb.txt
deleted file mode 100644
index b75cd89..0000000
--- a/doc/nw/setconstraintpivotb.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintPivotB [RCBasic Doc]
-#header sub setConstraintPivotB( constraint_id, x, y, z)
-
-
diff --git a/doc/nw/setconstraintrestitutiondirang.txt b/doc/nw/setconstraintrestitutiondirang.txt
deleted file mode 100644
index 0180b56..0000000
--- a/doc/nw/setconstraintrestitutiondirang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionDirAng [RCBasic Doc]
-#header sub setConstraintRestitutionDirAng( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintrestitutiondirlin.txt b/doc/nw/setconstraintrestitutiondirlin.txt
deleted file mode 100644
index b41b9bd..0000000
--- a/doc/nw/setconstraintrestitutiondirlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionDirLin [RCBasic Doc]
-#header sub setConstraintRestitutionDirLin( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintrestitutionlimang.txt b/doc/nw/setconstraintrestitutionlimang.txt
deleted file mode 100644
index bd0f13a..0000000
--- a/doc/nw/setconstraintrestitutionlimang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionLimAng [RCBasic Doc]
-#header sub setConstraintRestitutionLimAng( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintrestitutionlimlin.txt b/doc/nw/setconstraintrestitutionlimlin.txt
deleted file mode 100644
index 08ca5c5..0000000
--- a/doc/nw/setconstraintrestitutionlimlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionLimLin [RCBasic Doc]
-#header sub setConstraintRestitutionLimLin( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintrestitutionorthoang.txt b/doc/nw/setconstraintrestitutionorthoang.txt
deleted file mode 100644
index b61ff84..0000000
--- a/doc/nw/setconstraintrestitutionorthoang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionOrthoAng [RCBasic Doc]
-#header sub setConstraintRestitutionOrthoAng( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintrestitutionortholin.txt b/doc/nw/setconstraintrestitutionortholin.txt
deleted file mode 100644
index 823363e..0000000
--- a/doc/nw/setconstraintrestitutionortholin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintRestitutionOrthoLin [RCBasic Doc]
-#header sub setConstraintRestitutionOrthoLin( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintsoftnessdirang.txt b/doc/nw/setconstraintsoftnessdirang.txt
deleted file mode 100644
index cadb266..0000000
--- a/doc/nw/setconstraintsoftnessdirang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessDirAng [RCBasic Doc]
-#header sub setConstraintSoftnessDirAng( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintsoftnessdirlin.txt b/doc/nw/setconstraintsoftnessdirlin.txt
deleted file mode 100644
index 3175a26..0000000
--- a/doc/nw/setconstraintsoftnessdirlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessDirLin [RCBasic Doc]
-#header sub setConstraintSoftnessDirLin( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintsoftnesslimang.txt b/doc/nw/setconstraintsoftnesslimang.txt
deleted file mode 100644
index d95a1dd..0000000
--- a/doc/nw/setconstraintsoftnesslimang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessLimAng [RCBasic Doc]
-#header sub setConstraintSoftnessLimAng( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintsoftnesslimlin.txt b/doc/nw/setconstraintsoftnesslimlin.txt
deleted file mode 100644
index 9ad9c87..0000000
--- a/doc/nw/setconstraintsoftnesslimlin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessLimLin [RCBasic Doc]
-#header sub setConstraintSoftnessLimLin( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintsoftnessorthoang.txt b/doc/nw/setconstraintsoftnessorthoang.txt
deleted file mode 100644
index 7d6ec32..0000000
--- a/doc/nw/setconstraintsoftnessorthoang.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessOrthoAng [RCBasic Doc]
-#header sub setConstraintSoftnessOrthoAng( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintsoftnessortholin.txt b/doc/nw/setconstraintsoftnessortholin.txt
deleted file mode 100644
index aa87256..0000000
--- a/doc/nw/setconstraintsoftnessortholin.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSoftnessOrthoLin [RCBasic Doc]
-#header sub setConstraintSoftnessOrthoLin( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintsolveriterations.txt b/doc/nw/setconstraintsolveriterations.txt
deleted file mode 100644
index 6c375bb..0000000
--- a/doc/nw/setconstraintsolveriterations.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintSolverIterations [RCBasic Doc]
-#header sub setConstraintSolverIterations( constraint_id, num)
-
-
diff --git a/doc/nw/setconstraintupperanglimit.txt b/doc/nw/setconstraintupperanglimit.txt
deleted file mode 100644
index da069a7..0000000
--- a/doc/nw/setconstraintupperanglimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintUpperAngLimit [RCBasic Doc]
-#header sub setConstraintUpperAngLimit( constraint_id, n)
-
-
diff --git a/doc/nw/setconstraintupperlinlimit.txt b/doc/nw/setconstraintupperlinlimit.txt
deleted file mode 100644
index b896f16..0000000
--- a/doc/nw/setconstraintupperlinlimit.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-#title setConstraintUpperLinLimit [RCBasic Doc]
-#header sub setConstraintUpperLinLimit( constraint_id, n)
-
-
diff --git a/doc/nw/setsliderestitutionortholin.txt b/doc/nw/setsliderestitutionortholin.txt
deleted file mode 100644
index 3cd9aa8..0000000
--- a/doc/nw/setsliderestitutionortholin.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#title setSlideRestitutionOrthoLin [RCBasic Doc]
-#header sub setSlideRestitutionOrthoLin( constraint_id, n)
-
-Sets the restitution value for orthogonal linear motion. This value determines how much energy is conserved (or how "bouncy" the interaction is) when linear motion occurs in a direction orthogonal (perpendicular) to the primary sliding axis of the constraint.
-
-Orthogonal Linear Motion: In the context of a slider constraint, orthogonal linear motion refers to translational movement along axes that are perpendicular to the main sliding axis of the constraint.
-
-Restitution: Restitution is a measure of how much energy is retained or conserved during a collision or interaction. A restitution value of 0.0 indicates no bounce (perfectly inelastic), while 1.0 indicates maximum bounce (perfectly elastic). For orthogonal linear motion, this value describes how much the actors bounce or retain energy when they hit limits or experience movement perpendicular to the slider’s main axis.
-
-#ref GetSlideRestitutionOrthoLin
diff --git a/doc/rcbasic_manual.html b/doc/rcbasic_manual.html
new file mode 100644
index 0000000..3edbefc
--- /dev/null
+++ b/doc/rcbasic_manual.html
@@ -0,0 +1,18 @@
+
+
+
+
+RC BASIC Manual
+
+
+
+
+
+
+ Your browser does not support frames.
+
+
+
+
+
diff --git a/doc/tmp/navb_tmp.html b/doc/tmp/navb_tmp.html
new file mode 100644
index 0000000..1d0c67c
--- /dev/null
+++ b/doc/tmp/navb_tmp.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+ RCBasic Library Reference
+
+
+
+
+[NAVBAR_CONTENT]
+
+
+
+
+
+
+
diff --git a/rc_sprite_physics.h b/rc_sprite_physics.h
deleted file mode 100644
index f7d4156..0000000
--- a/rc_sprite_physics.h
+++ /dev/null
@@ -1,185 +0,0 @@
-#include "rc_sprite2D.h"
-
-void rc_applySpriteAngularImpulse(int spr_id, float impulse, bool wake)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return;
-
- if(!rc_sprite[spr_id].active)
- return;
-
- rc_sprite[spr_id].physics.body->ApplyAngularImpulse(impulse, wake);
-}
-
-void rc_applySpriteForce(int spr_id, double fX, double fY, double pX, double pY, bool wake)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return;
-
- if(!rc_sprite[spr_id].active)
- return;
-
- rc_sprite[spr_id].physics.body->ApplyForce(b2Vec2(fX, fY), b2Vec2(pX, pY), wake);
-}
-
-void rc_applySpriteForceToCenter(int spr_id, double x, double y, bool wake)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return;
-
- if(!rc_sprite[spr_id].active)
- return;
-
- rc_sprite[spr_id].physics.body->ApplyForceToCenter(b2Vec2(x, y), wake);
-}
-
-void rc_applySpriteLinearImpulse(int spr_id, double iX, double iY, double pX, double pY, bool wake)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return;
-
- if(!rc_sprite[spr_id].active)
- return;
-
- rc_sprite[spr_id].physics.body->ApplyLinearImpulse(b2Vec2(iX, iY), b2Vec2(pX, pY), wake);
-}
-
-void rc_applySpriteLinearForceToCenter(int spr_id, double x, double y, bool wake)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return;
-
- if(!rc_sprite[spr_id].active)
- return;
-
- rc_sprite[spr_id].physics.body->ApplyLinearImpulseToCenter(b2Vec2(x, y), wake);
-}
-
-void rc_applySpriteTorque(int spr_id, float torque, bool wake)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return;
-
- if(!rc_sprite[spr_id].active)
- return;
-
- rc_sprite[spr_id].physics.body->ApplyTorque(torque, wake);
-}
-
-float rc_getSpriteAngle(int spr_id)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-
- return rc_sprite[spr_id].physics.body->GetAngle();
-}
-
-float rc_getSpriteAngularVelocity(int spr_id)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-
- return rc_sprite[spr_id].physics.body->GetAngularVelocity();
-}
-
-float rc_getSpriteInertia(int spr_id)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-
- return rc_sprite[spr_id].physics.body->GetInertia();
-}
-
-void rc_getSpriteLinearVelocity(int spr_id, double* x, double* y)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return;
-
- if(!rc_sprite[spr_id].active)
- return;
-
- *x = (double)rc_sprite[spr_id].physics.body->GetLinearVelocity().x;
- *y = (double)rc_sprite[spr_id].physics.body->GetLinearVelocity().y;
-}
-
-void rc_getSpriteLinearVelocityFromLocalPoint(int spr_id, double* x, double* y, double pX, double pY)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return;
-
- if(!rc_sprite[spr_id].active)
- return;
-
- b2Vec2 pos = rc_sprite[spr_id].physics.body->GetLinearVelocityFromLocalPoint(b2Vec2(pX, pY));
- *x = pos.x;
- *y = pos.y;
-}
-
-void rc_getSpriteLinearVelocityFromWorldPoint(int spr_id, double* x, double* y, double wX, double wY)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-
- b2Vec2 pos = rc_sprite[spr_id].physics.body->GetLinearVelocityFromWorldPoint(b2Vec2(wX, wY));
- *x = pos.x;
- *y = pos.y;
-}
-
-void rc_getSpriteLocalPoint() *******************************
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-}
-
-void rc_getSpriteLocalVector() *******************************
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-}
-
-float rc_getSpriteMass(int spr_id)
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-
- return rc_sprite[spr_id].physics.body->GetMass();
-}
-
-void rc_getSpriteMassData(int spr_id) *******************************
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-}
-
-void rc_getSpriteTransform(int spr_id) *******************************
-{
- if(spr_id < 0 || spr_id >= rc_sprite.size())
- return 0;
-
- if(!rc_sprite[spr_id].active)
- return 0;
-}
diff --git a/rcbasic_build/.~lock.rcbasic4_changes.ods# b/rcbasic_build/.~lock.rcbasic4_changes.ods#
index 2ce5712..2b62a0f 100644
--- a/rcbasic_build/.~lock.rcbasic4_changes.ods#
+++ b/rcbasic_build/.~lock.rcbasic4_changes.ods#
@@ -1 +1 @@
-,n00b,fedora,28.09.2024 11:15,file:///home/n00b/.config/libreoffice/4;
\ No newline at end of file
+,n00b,fedora,23.10.2024 22:46,file:///home/n00b/.config/libreoffice/4;
\ No newline at end of file
diff --git a/rcbasic_build/embedded_functions.bas b/rcbasic_build/embedded_functions.bas
index c67a66d..44c17aa 100644
--- a/rcbasic_build/embedded_functions.bas
+++ b/rcbasic_build/embedded_functions.bas
@@ -34,6 +34,7 @@ Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/joint2D.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/tilemaps.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/mesh.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor.bas"
+Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor_animation.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor_physics.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/constraint3D.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/camera.bas"
@@ -42,5 +43,4 @@ Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/particles.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/lights.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/terrain.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/water.bas"
-Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor_animation.bas"
Include "/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/materials.bas"
diff --git a/rcbasic_build/intern_inc/switch_cases.h b/rcbasic_build/intern_inc/switch_cases.h
index fe6d6c0..015e22d 100644
--- a/rcbasic_build/intern_inc/switch_cases.h
+++ b/rcbasic_build/intern_inc/switch_cases.h
@@ -195,7 +195,7 @@ rc_getCanvasZ( CANVASZ_C_NUM )
rc_canvasClip( CANVASCLIP_X, CANVASCLIP_Y, CANVASCLIP_W, CANVASCLIP_H )
rc_activeCanvas( )
rc_setCanvasPhysics2D( SETCANVASPHYSICS2D_C_NUM, SETCANVASPHYSICS2D_STATE )
-rc_canvasOpenSpriteLayer( OPENCANVASSPRITELAYER_W, OPENCANVASSPRITELAYER_H, OPENCANVASSPRITELAYER_VIEWPORT_X, OPENCANVASSPRITELAYER_VIEWPORT_Y, OPENCANVASSPRITELAYER_VIEWPORT_W, OPENCANVASSPRITELAYER_VIEWPORT_H )
+rc_canvasOpenSpriteLayer( OPENCANVASSPRITELAYER_VIEWPORT_X, OPENCANVASSPRITELAYER_VIEWPORT_Y, OPENCANVASSPRITELAYER_VIEWPORT_W, OPENCANVASSPRITELAYER_VIEWPORT_H )
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS )
rc_drawCircleFill( CIRCLEFILL_X, CIRCLEFILL_Y, CIRCLEFILL_RADIUS )
rc_drawEllipse( ELLIPSE_X, ELLIPSE_Y, ELLIPSE_RX, ELLIPSE_RY )
@@ -488,6 +488,120 @@ rc_getSpriteCurrentAnimationFrame( GETSPRITECURRENTANIMATIONFRAME_SPRITE )
rc_numSpriteAnimationLoops( NUMSPRITEANIMATIONLOOPS_SPRITE )
rc_spriteAnimationIsPlaying( SPRITEANIMATIONISPLAYING_SPRITE )
rc_deleteSpriteAnimation( DELETESPRITEANIMATION_SPRITE, DELETESPRITEANIMATION_ANIMATION )
+rc_getSpriteCenter( GETSPRITECENTER_SPR_ID, &GETSPRITECENTER_X, &GETSPRITECENTER_Y )
+rc_setSpriteLinearVelocity( SETSPRITELINEARVELOCITY_SPR_ID, SETSPRITELINEARVELOCITY_X, SETSPRITELINEARVELOCITY_Y )
+rc_getSpriteLinearVelocity( GETSPRITELINEARVELOCITY_SPR_ID, &GETSPRITELINEARVELOCITY_X, &GETSPRITELINEARVELOCITY_Y )
+rc_setSpriteAngularVelocity( SETSPRITEANGULARVELOCITY_SPR_ID, SETSPRITEANGULARVELOCITY_AV )
+rc_getSpriteAngularVelocity( GETSPRITEANGULARVELOCITY_SPR_ID )
+rc_applySpriteForce( APPLYSPRITEFORCE_SPR_ID, APPLYSPRITEFORCE_FX, APPLYSPRITEFORCE_FY, APPLYSPRITEFORCE_PX, APPLYSPRITEFORCE_PY )
+rc_applySpriteCentralForce( APPLYSPRITECENTRALFORCE_SPR_ID, APPLYSPRITECENTRALFORCE_X, APPLYSPRITECENTRALFORCE_Y )
+rc_applySpriteTorque( APPLYSPRITETORQUE_SPR_ID, APPLYSPRITETORQUE_TORQUE )
+rc_applySpriteLinearImpulse( APPLYSPRITELINEARIMPULSE_SPR_ID, APPLYSPRITELINEARIMPULSE_IX, APPLYSPRITELINEARIMPULSE_IY, APPLYSPRITELINEARIMPULSE_PX, APPLYSPRITELINEARIMPULSE_PY )
+rc_applySpriteAngularImpulse( APPLYSPRITEANGULARIMPULSE_SPR_ID, APPLYSPRITEANGULARIMPULSE_IMPULSE )
+rc_getSpriteMass( GETSPRITEMASS_SPR_ID )
+rc_getSpriteInertia( GETSPRITEINERTIA_SPR_ID )
+rc_getSpriteWorldPoint( GETSPRITEWORLDPOINT_SPR_ID, GETSPRITEWORLDPOINT_LX, GETSPRITEWORLDPOINT_LY, &GETSPRITEWORLDPOINT_X, &GETSPRITEWORLDPOINT_Y )
+rc_getSpriteWorldVector( GETSPRITEWORLDVECTOR_SPR_ID, GETSPRITEWORLDVECTOR_LX, GETSPRITEWORLDVECTOR_LY, &GETSPRITEWORLDVECTOR_X, &GETSPRITEWORLDVECTOR_Y )
+rc_getSpriteLocalPoint( GETSPRITELOCALPOINT_SPR_ID, GETSPRITELOCALPOINT_WX, GETSPRITELOCALPOINT_WY, &GETSPRITELOCALPOINT_X, &GETSPRITELOCALPOINT_Y )
+rc_getSpriteLocalVector( GETSPRITELOCALVECTOR_SPR_ID, GETSPRITELOCALVECTOR_WX, GETSPRITELOCALVECTOR_WY, &GETSPRITELOCALVECTOR_X, &GETSPRITELOCALVECTOR_Y )
+rc_getSpriteLinearVelocityFromLocalPoint( GETSPRITELINEARVELOCITYFROMLOCALPOINT_SPR_ID, GETSPRITELINEARVELOCITYFROMLOCALPOINT_PX, GETSPRITELINEARVELOCITYFROMLOCALPOINT_PY, &GETSPRITELINEARVELOCITYFROMLOCALPOINT_X, &GETSPRITELINEARVELOCITYFROMLOCALPOINT_Y )
+rc_getSpriteLinearVelocityFromWorldPoint( GETSPRITELINEARVELOCITYFROMWORLDPOINT_SPR_ID, GETSPRITELINEARVELOCITYFROMWORLDPOINT_WX, GETSPRITELINEARVELOCITYFROMWORLDPOINT_WY, &GETSPRITELINEARVELOCITYFROMWORLDPOINT_X, &GETSPRITELINEARVELOCITYFROMWORLDPOINT_Y )
+rc_getSpriteLinearDamping( GETSPRITELINEARDAMPING_SPR_ID )
+rc_setSpriteLinearDamping( SETSPRITELINEARDAMPING_SPR_ID, SETSPRITELINEARDAMPING_LINEARDAMPING )
+rc_getSpriteAngularDamping( GETSPRITEANGULARDAMPING_SPR_ID )
+rc_setSpriteAngularDamping( SETSPRITEANGULARDAMPING_SPR_ID, SETSPRITEANGULARDAMPING_ANGULARDAMPING )
+rc_getSpriteGravityScale( GETSPRITEGRAVITYSCALE_SPR_ID )
+rc_setSpriteGravityScale( SETSPRITEGRAVITYSCALE_SPR_ID, SETSPRITEGRAVITYSCALE_G_SCALE )
+rc_setSpriteBullet( SETSPRITEBULLET_SPR_ID, SETSPRITEBULLET_FLAG )
+rc_spriteIsBullet( SPRITEISBULLET_SPR_ID )
+rc_setSpriteSleepAllowed( SETSPRITESLEEPALLOWED_SPR_ID, SETSPRITESLEEPALLOWED_FLAG )
+rc_spriteSleepAllowed( SPRITESLEEPALLOWED_SPR_ID )
+rc_setSpriteAwake( SETSPRITEAWAKE_SPR_ID, SETSPRITEAWAKE_FLAG )
+rc_spriteIsAwake( SPRITEISAWAKE_SPR_ID )
+rc_setSpriteFixedRotation( SETSPRITEFIXEDROTATION_SPR_ID, SETSPRITEFIXEDROTATION_FLAG )
+rc_spriteIsFixedRotation( SPRITEISFIXEDROTATION_SPR_ID )
+rc_createDistanceJoint( CREATEDISTANCEJOINT_SPRITEA, CREATEDISTANCEJOINT_SPRITEB, CREATEDISTANCEJOINT_AX, CREATEDISTANCEJOINT_AY, CREATEDISTANCEJOINT_BX, CREATEDISTANCEJOINT_BY, CREATEDISTANCEJOINT_COLLIDE_CONNECT )
+rc_createFrictionJoint( CREATEFRICTIONJOINT_SPRITEA, CREATEFRICTIONJOINT_SPRITEB, CREATEFRICTIONJOINT_X, CREATEFRICTIONJOINT_Y, CREATEFRICTIONJOINT_COLLIDE_CONNECT )
+rc_createGearJoint( CREATEGEARJOINT_JOINTA, CREATEGEARJOINT_JOINTB, CREATEGEARJOINT_G_RATIO, CREATEGEARJOINT_COLLIDE_CONNECT )
+rc_createMotorJoint( CREATEMOTORJOINT_SPRITEA, CREATEMOTORJOINT_SPRITEB, CREATEMOTORJOINT_COLLIDE_CONNECT )
+rc_createPrismaticJoint( CREATEPRISMATICJOINT_SPRITEA, CREATEPRISMATICJOINT_SPRITEB, CREATEPRISMATICJOINT_AX, CREATEPRISMATICJOINT_AY, CREATEPRISMATICJOINT_AXISX, CREATEPRISMATICJOINT_AXISY, CREATEPRISMATICJOINT_COLLIDE_CONNECT )
+rc_createPulleyJoint( CREATEPULLEYJOINT_SPRITEA, CREATEPULLEYJOINT_SPRITEB, CREATEPULLEYJOINT_GAX, CREATEPULLEYJOINT_GAY, CREATEPULLEYJOINT_GBX, CREATEPULLEYJOINT_GBY, CREATEPULLEYJOINT_AX, CREATEPULLEYJOINT_AY, CREATEPULLEYJOINT_BX, CREATEPULLEYJOINT_BY, CREATEPULLEYJOINT_J_RATIO, CREATEPULLEYJOINT_COLLIDE_CONNECT )
+rc_createRevoluteJoint( CREATEREVOLUTEJOINT_SPRITEA, CREATEREVOLUTEJOINT_SPRITEB, CREATEREVOLUTEJOINT_X, CREATEREVOLUTEJOINT_Y, CREATEREVOLUTEJOINT_COLLIDE_CONNECT )
+rc_createWeldJoint( CREATEWELDJOINT_SPRITEA, CREATEWELDJOINT_SPRITEB, CREATEWELDJOINT_X, CREATEWELDJOINT_Y, CREATEWELDJOINT_COLLIDE_CONNECT )
+rc_createWheelJoint( CREATEWHEELJOINT_SPRITEA, CREATEWHEELJOINT_SPRITEB, CREATEWHEELJOINT_AX, CREATEWHEELJOINT_AY, CREATEWHEELJOINT_AXISX, CREATEWHEELJOINT_AXISY, CREATEWHEELJOINT_COLLIDE_CONNECT )
+rc_getJointWorldAnchorA( GETJOINTWORLDANCHORA_JOINT_ID, &GETJOINTWORLDANCHORA_X, &GETJOINTWORLDANCHORA_Y )
+rc_getJointWorldAnchorB( GETJOINTWORLDANCHORB_JOINT_ID, &GETJOINTWORLDANCHORB_X, &GETJOINTWORLDANCHORB_Y )
+rc_getJointReactionForce( GETJOINTREACTIONFORCE_JOINT_ID, GETJOINTREACTIONFORCE_INV_DT, &GETJOINTREACTIONFORCE_X, &GETJOINTREACTIONFORCE_Y )
+rc_getJointReactionTorque( GETJOINTREACTIONTORQUE_JOINT_ID, GETJOINTREACTIONTORQUE_INV_DT )
+rc_getJointLocalAnchorA( GETJOINTLOCALANCHORA_JOINT_ID, &GETJOINTLOCALANCHORA_X, &GETJOINTLOCALANCHORA_Y )
+rc_getJointLocalAnchorB( GETJOINTLOCALANCHORB_JOINT_ID, &GETJOINTLOCALANCHORB_X, &GETJOINTLOCALANCHORB_Y )
+rc_setJointLength( SETJOINTLENGTH_JOINT_ID, SETJOINTLENGTH_JLEN )
+rc_getJointLength( GETJOINTLENGTH_JOINT_ID )
+rc_setJointMinLength( SETJOINTMINLENGTH_JOINT_ID, SETJOINTMINLENGTH_JLEN )
+rc_getJointMinLength( GETJOINTMINLENGTH_JOINT_ID )
+rc_setJointMaxLength( SETJOINTMAXLENGTH_JOINT_ID, SETJOINTMAXLENGTH_JLEN )
+rc_getJointMaxLength( GETJOINTMAXLENGTH_JOINT_ID )
+rc_getJointCurrentLength( GETJOINTCURRENTLENGTH_JOINT_ID )
+rc_setJointStiffness( SETJOINTSTIFFNESS_JOINT_ID, SETJOINTSTIFFNESS_STIFFNESS )
+rc_getJointStiffness( GETJOINTSTIFFNESS_JOINT_ID )
+rc_setJointDamping( SETJOINTDAMPING_JOINT_ID, SETJOINTDAMPING_DAMPING )
+rc_getJointDamping( GETJOINTDAMPING_JOINT_ID )
+rc_setJointMaxForce( SETJOINTMAXFORCE_JOINT_ID, SETJOINTMAXFORCE_FORCE )
+rc_getJointMaxForce( GETJOINTMAXFORCE_JOINT_ID )
+rc_setJointMaxTorque( SETJOINTMAXTORQUE_JOINT_ID, SETJOINTMAXTORQUE_TORQUE )
+rc_getJointMaxTorque( GETJOINTMAXTORQUE_JOINT_ID )
+rc_setJointCorrectionFactor( SETJOINTCORRECTIONFACTOR_JOINT_ID, SETJOINTCORRECTIONFACTOR_FACTOR )
+rc_getJointCorrectionFactor( GETJOINTCORRECTIONFACTOR_JOINT_ID )
+rc_setJointRatio( SETJOINTRATIO_JOINT_ID, SETJOINTRATIO_J_RATIO )
+rc_getJointRatio( GETJOINTRATIO_JOINT_ID )
+rc_setJointLinearOffset( SETJOINTLINEAROFFSET_JOINT_ID, SETJOINTLINEAROFFSET_X, SETJOINTLINEAROFFSET_Y )
+rc_getJointLinearOffset( GETJOINTLINEAROFFSET_JOINT_ID, &GETJOINTLINEAROFFSET_X, &GETJOINTLINEAROFFSET_Y )
+rc_setJointAngularOffset( SETJOINTANGULAROFFSET_JOINT_ID, SETJOINTANGULAROFFSET_ANGLEOFFSET )
+rc_getJointAngularOffset( GETJOINTANGULAROFFSET_JOINT_ID )
+rc_getJointLocalAxisA( GETJOINTLOCALAXISA_JOINT_ID, &GETJOINTLOCALAXISA_X, &GETJOINTLOCALAXISA_Y )
+rc_getJointReferenceAngle( GETJOINTREFERENCEANGLE_JOINT_ID )
+rc_getJointTranslation( GETJOINTTRANSLATION_JOINT_ID )
+rc_getJointSpeed( GETJOINTSPEED_JOINT_ID )
+rc_jointIsLimitEnabled( JOINTISLIMITENABLED_JOINT_ID )
+rc_enableJointLimit( ENABLEJOINTLIMIT_JOINT_ID, ENABLEJOINTLIMIT_FLAG )
+rc_getJointLowerLimit( GETJOINTLOWERLIMIT_JOINT_ID )
+rc_getJointUpperLimit( GETJOINTUPPERLIMIT_JOINT_ID )
+rc_setJointLimits( SETJOINTLIMITS_JOINT_ID, SETJOINTLIMITS_LOWER_LIMIT, SETJOINTLIMITS_UPPER_LIMIT )
+rc_jointMotorIsEnabled( JOINTMOTORISENABLED_JOINT_ID )
+rc_enableJointMotor( ENABLEJOINTMOTOR_JOINT_ID, ENABLEJOINTMOTOR_FLAG )
+rc_setJointMotorSpeed( SETJOINTMOTORSPEED_JOINT_ID, SETJOINTMOTORSPEED_SPEED )
+rc_getJointMotorSpeed( GETJOINTMOTORSPEED_JOINT_ID )
+rc_setJointMaxMotorForce( SETJOINTMAXMOTORFORCE_JOINT_ID, SETJOINTMAXMOTORFORCE_FORCE )
+rc_getJointMaxMotorForce( GETJOINTMAXMOTORFORCE_JOINT_ID )
+rc_getJointMotorForce( GETJOINTMOTORFORCE_JOINT_ID, GETJOINTMOTORFORCE_INV_DT )
+rc_setJointMaxMotorTorque( SETJOINTMAXMOTORTORQUE_JOINT_ID, SETJOINTMAXMOTORTORQUE_TORQUE )
+rc_getJointMaxMotorTorque( GETJOINTMAXMOTORTORQUE_JOINT_ID )
+rc_getJointMotorTorque( GETJOINTMOTORTORQUE_JOINT_ID, GETJOINTMOTORTORQUE_INV_DT )
+rc_getJointGroundAnchorA( GETJOINTGROUNDANCHORA_JOINT_ID, &GETJOINTGROUNDANCHORA_X, &GETJOINTGROUNDANCHORA_Y )
+rc_getJointGroundAnchorB( GETJOINTGROUNDANCHORB_JOINT_ID, &GETJOINTGROUNDANCHORB_X, &GETJOINTGROUNDANCHORB_Y )
+rc_getJointLengthA( GETJOINTLENGTHA_JOINT_ID )
+rc_getJointLengthB( GETJOINTLENGTHB_JOINT_ID )
+rc_getJointCurrentLengthA( GETJOINTCURRENTLENGTHA_JOINT_ID )
+rc_getJointCurrentLengthB( GETJOINTCURRENTLENGTHB_JOINT_ID )
+rc_setJointOrigin( SETJOINTORIGIN_JOINT_ID, SETJOINTORIGIN_X, SETJOINTORIGIN_Y )
+rc_getJointAngle( GETJOINTANGLE_JOINT_ID )
+rc_getJointLinearSpeed( GETJOINTLINEARSPEED_JOINT_ID )
+rc_getJointAngularSpeed( GETJOINTANGULARSPEED_JOINT_ID )
+rc_deleteJoint( DELETEJOINT_JOINT_ID )
+rc_createTileSet( CREATETILESET_IMG_ID, CREATETILESET_TILE_W, CREATETILESET_TILE_H )
+rc_setTileAnimationLength( SETTILEANIMATIONLENGTH_TILESET, SETTILEANIMATIONLENGTH_BASE_TILE, SETTILEANIMATIONLENGTH_NUM_FRAMES )
+rc_getTileAnimationLength( GETTILEANIMATIONLENGTH_TILESET, GETTILEANIMATIONLENGTH_BASE_TILE )
+rc_setTileAnimationFrame( SETTILEANIMATIONFRAME_TILESET, SETTILEANIMATIONFRAME_BASE_TILE, SETTILEANIMATIONFRAME_ANIM_FRAME, SETTILEANIMATIONFRAME_TILE_FRAME )
+rc_getTileAnimationFrame( GETTILEANIMATIONFRAME_TILESET, GETTILEANIMATIONFRAME_BASE_TILE, GETTILEANIMATIONFRAME_ANIM_FRAME )
+rc_setTileAnimationSpeed( SETTILEANIMATIONSPEED_TILESET, SETTILEANIMATIONSPEED_BASE_TILE, SETTILEANIMATIONSPEED_SPEED )
+rc_getTileAnimationSpeed( GETTILEANIMATIONSPEED_TILESET, GETTILEANIMATIONSPEED_BASE_TILE )
+rc_createTileMap( CREATETILEMAP_TILESET, CREATETILEMAP_WIDTHINTILES, CREATETILEMAP_HEIGHTINTILES )
+rc_setTileMapSize( SETTILEMAPSIZE_TILEMAP, SETTILEMAPSIZE_WIDTHINTILES, SETTILEMAPSIZE_HEIGHTINTILES )
+rc_getTileMapSize( GETTILEMAPSIZE_TILEMAP, &GETTILEMAPSIZE_WIDTHINTILES, &GETTILEMAPSIZE_HEIGHTINTILES )
+rc_setTile( SETTILE_TILEMAP, SETTILE_TILE, SETTILE_X, SETTILE_Y )
+rc_getTile( GETTILE_TILEMAP, GETTILE_X, GETTILE_Y )
+rc_fillTile( FILLTILE_TILEMAP, FILLTILE_TILE, FILLTILE_X, FILLTILE_Y, FILLTILE_WIDTHINTILES, FILLTILE_HEIGHTINTILES )
+rc_drawTileMap( DRAWTILEMAP_TILEMAP, DRAWTILEMAP_X, DRAWTILEMAP_Y, DRAWTILEMAP_W, DRAWTILEMAP_H, DRAWTILEMAP_OFFSET_X, DRAWTILEMAP_OFFSET_Y )
rc_loadMesh( LOADMESH_MESH_FILE$ )
rc_deleteMesh( DELETEMESH_MESH )
rc_createMesh( )
@@ -526,6 +640,21 @@ rc_getActorAutoCulling( GETACTORAUTOCULLING_ACTOR )
rc_addActorShadow( ADDACTORSHADOW_ACTOR )
rc_removeActorShadow( REMOVEACTORSHADOW_ACTOR )
rc_actorExists( ACTOREXISTS_ACTOR )
+rc_createActorAnimation( CREATEACTORANIMATION_ACTOR, CREATEACTORANIMATION_START_FRAME, CREATEACTORANIMATION_END_FRAME, CREATEACTORANIMATION_SPEED )
+rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_ANIMATION, SETACTORANIMATION_NUM_LOOPS )
+rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_ANIMATION, SETACTORANIMATIONSPEED_SPEED )
+rc_setActorAnimationFrames( SETACTORANIMATIONFRAMES_ACTOR, SETACTORANIMATIONFRAMES_ANIMATION, SETACTORANIMATIONFRAMES_START_FRAME, SETACTORANIMATIONFRAMES_END_FRAME )
+rc_getActorCurrentAnimation( GETACTORCURRENTANIMATION_ACTOR )
+rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR, GETACTORANIMATIONSPEED_ANIMATION )
+rc_getActorAnimationStartFrame( GETACTORANIMATIONSTARTFRAME_ACTOR, GETACTORANIMATIONSTARTFRAME_ANIMATION )
+rc_getActorAnimationEndFrame( GETACTORANIMATIONENDFRAME_ACTOR, GETACTORANIMATIONENDFRAME_ANIMATION )
+rc_setActorFrame( SETACTORFRAME_ACTOR, SETACTORFRAME_FRAME )
+rc_getActorFrame( GETACTORFRAME_ACTOR )
+rc_actorAnimationIsPlaying( ACTORANIMATIONISPLAYING_ACTOR )
+rc_numActorAnimationLoops( NUMACTORANIMATIONLOOPS_ACTOR )
+rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM, SETACTORMD2ANIMATION_NUM_LOOPS )
+rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$, SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS )
+rc_deleteActorAnimation( DELETEACTORANIMATION_ACTOR, DELETEACTORANIMATION_ANIMATION )
rc_setGravity3D( SETGRAVITY3D_X, SETGRAVITY3D_Y, SETGRAVITY3D_Z )
rc_getGravity3D( &GETGRAVITY3D_X, &GETGRAVITY3D_Y, &GETGRAVITY3D_Z )
rc_setActorCollisionShape( SETACTORCOLLISIONSHAPE_ACTOR, SETACTORCOLLISIONSHAPE_SHAPE_TYPE, SETACTORCOLLISIONSHAPE_MASS )
@@ -565,7 +694,7 @@ rc_applyActorImpulseLocal( APPLYACTORIMPULSELOCAL_ACTOR, APPLYACTORIMPULSELOCAL
rc_applyActorImpulseWorld( APPLYACTORIMPULSEWORLD_ACTOR, APPLYACTORIMPULSEWORLD_X, APPLYACTORIMPULSEWORLD_Y, APPLYACTORIMPULSEWORLD_Z, APPLYACTORIMPULSEWORLD_REL_X, APPLYACTORIMPULSEWORLD_REL_Y, APPLYACTORIMPULSEWORLD_REL_Z )
rc_clearActorForces( CLEARACTORFORCES_ACTOR )
rc_updateActorInertiaTensor( UPDATEACTORINERTIATENSOR_ACTOR )
-rc_getActorCOMPosition( GETACTORCOMPOSITION_ACTOR, &GETACTORCOMPOSITION_X, &GETACTORCOMPOSITION_Y, &GETACTORCOMPOSITION_Z )
+rc_getActorCenter( GETACTORCENTER_ACTOR, &GETACTORCENTER_X, &GETACTORCENTER_Y, &GETACTORCENTER_Z )
rc_getActorRotationQ( GETACTORROTATIONQ_ACTOR, &GETACTORROTATIONQ_X, &GETACTORROTATIONQ_Y, &GETACTORROTATIONQ_Z, &GETACTORROTATIONQ_W )
rc_getActorLinearVelocityWorld( GETACTORLINEARVELOCITYWORLD_ACTOR, &GETACTORLINEARVELOCITYWORLD_X, &GETACTORLINEARVELOCITYWORLD_Y, &GETACTORLINEARVELOCITYWORLD_Z )
rc_getActorAngularVelocityWorld( GETACTORANGULARVELOCITYWORLD_ACTOR, &GETACTORANGULARVELOCITYWORLD_X, &GETACTORANGULARVELOCITYWORLD_Y, &GETACTORANGULARVELOCITYWORLD_Z )
@@ -573,7 +702,7 @@ rc_setActorLinearVelocityLocal( SETACTORLINEARVELOCITYLOCAL_ACTOR, SETACTORLINE
rc_setActorLinearVelocityWorld( SETACTORLINEARVELOCITYWORLD_ACTOR, SETACTORLINEARVELOCITYWORLD_X, SETACTORLINEARVELOCITYWORLD_Y, SETACTORLINEARVELOCITYWORLD_Z )
rc_setActorAngularVelocityLocal( SETACTORANGULARVELOCITYLOCAL_ACTOR, SETACTORANGULARVELOCITYLOCAL_X, SETACTORANGULARVELOCITYLOCAL_Y, SETACTORANGULARVELOCITYLOCAL_Z )
rc_setActorAngularVelocityWorld( SETACTORANGULARVELOCITYWORLD_ACTOR, SETACTORANGULARVELOCITYWORLD_X, SETACTORANGULARVELOCITYWORLD_Y, SETACTORANGULARVELOCITYWORLD_Z )
-rc_getActorLocalPointVelocity( GETACTORLOCALPOINTVELOCITY_ACTOR, GETACTORLOCALPOINTVELOCITY_REL_X, GETACTORLOCALPOINTVELOCITY_REL_Y, GETACTORLOCALPOINTVELOCITY_REL_Z, &GETACTORLOCALPOINTVELOCITY_X, &GETACTORLOCALPOINTVELOCITY_Y, &GETACTORLOCALPOINTVELOCITY_Z )
+rc_getActorVelocityInLocalPoint( GETACTORVELOCITYINLOCALPOINT_ACTOR, GETACTORVELOCITYINLOCALPOINT_REL_X, GETACTORVELOCITYINLOCALPOINT_REL_Y, GETACTORVELOCITYINLOCALPOINT_REL_Z, &GETACTORVELOCITYINLOCALPOINT_X, &GETACTORVELOCITYINLOCALPOINT_Y, &GETACTORVELOCITYINLOCALPOINT_Z )
rc_getActorLinearVelocityLocal( GETACTORLINEARVELOCITYLOCAL_ACTOR, &GETACTORLINEARVELOCITYLOCAL_X, &GETACTORLINEARVELOCITYLOCAL_Y, &GETACTORLINEARVELOCITYLOCAL_Z )
rc_getActorAngularVelocityLocal( GETACTORANGULARVELOCITYLOCAL_ACTOR, &GETACTORANGULARVELOCITYLOCAL_X, &GETACTORANGULARVELOCITYLOCAL_Y, &GETACTORANGULARVELOCITYLOCAL_Z )
rc_getActorAABB( GETACTORAABB_ACTOR, &GETACTORAABB_MIN_X, &GETACTORAABB_MIN_Y, &GETACTORAABB_MIN_Z, &GETACTORAABB_MAX_X, &GETACTORAABB_MAX_Y, &GETACTORAABB_MAX_Z )
@@ -789,21 +918,6 @@ rc_scaleTerrainTexture( SCALETERRAINTEXTURE_ACTOR, SCALETERRAINTEXTURE_SCALE,
rc_setTerrainCameraMovementDelta( SETTERRAINCAMERAMOVEMENTDELTA_ACTOR, SETTERRAINCAMERAMOVEMENTDELTA_DELTA )
rc_setTerrainCameraRotationDelta( SETTERRAINCAMERAROTATIONDELTA_ACTOR, SETTERRAINCAMERAROTATIONDELTA_DELTA )
rc_setTerrainPatchLOD( SETTERRAINPATCHLOD_ACTOR, SETTERRAINPATCHLOD_PATCHX, SETTERRAINPATCHLOD_PATCHZ, SETTERRAINPATCHLOD_LOD )
-rc_createActorAnimation( CREATEACTORANIMATION_ACTOR, CREATEACTORANIMATION_START_FRAME, CREATEACTORANIMATION_END_FRAME, CREATEACTORANIMATION_SPEED )
-rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_ANIMATION, SETACTORANIMATION_NUM_LOOPS )
-rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_ANIMATION, SETACTORANIMATIONSPEED_SPEED )
-rc_setActorAnimationFrames( SETACTORANIMATIONFRAMES_ACTOR, SETACTORANIMATIONFRAMES_ANIMATION, SETACTORANIMATIONFRAMES_START_FRAME, SETACTORANIMATIONFRAMES_END_FRAME )
-rc_getActorCurrentAnimation( GETACTORCURRENTANIMATION_ACTOR )
-rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR, GETACTORANIMATIONSPEED_ANIMATION )
-rc_getActorAnimationStartFrame( GETACTORANIMATIONSTARTFRAME_ACTOR, GETACTORANIMATIONSTARTFRAME_ANIMATION )
-rc_getActorAnimationEndFrame( GETACTORANIMATIONENDFRAME_ACTOR, GETACTORANIMATIONENDFRAME_ANIMATION )
-rc_setActorFrame( SETACTORFRAME_ACTOR, SETACTORFRAME_FRAME )
-rc_getActorFrame( GETACTORFRAME_ACTOR )
-rc_actorAnimationIsPlaying( ACTORANIMATIONISPLAYING_ACTOR )
-rc_numActorAnimationLoops( NUMACTORANIMATIONLOOPS_ACTOR )
-rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM, SETACTORMD2ANIMATION_NUM_LOOPS )
-rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$, SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS )
-rc_deleteActorAnimation( DELETEACTORANIMATION_ACTOR, DELETEACTORANIMATION_ANIMATION )
rc_createMaterial( )
rc_deleteMaterial( DELETEMATERIAL_MATERIAL_ID )
rc_setActorMaterial( SETACTORMATERIAL_ACTOR, SETACTORMATERIAL_MATERIAL_NUM, SETACTORMATERIAL_MATERIAL_ID )
diff --git a/rcbasic_build/intern_lib/actor_physics.bas b/rcbasic_build/intern_lib/actor_physics.bas
index 118972b..72d4e54 100644
--- a/rcbasic_build/intern_lib/actor_physics.bas
+++ b/rcbasic_build/intern_lib/actor_physics.bas
@@ -37,7 +37,7 @@ sub applyActorImpulseLocal( actor, x, y, z, rel_x, rel_y, rel_z)
sub applyActorImpulseWorld( actor, x, y, z, rel_x, rel_y, rel_z)
sub clearActorForces( actor)
sub updateActorInertiaTensor( actor)
-sub getActorCOMPosition( actor, ByRef x, ByRef y, ByRef z)
+sub getActorCenter( actor, ByRef x, ByRef y, ByRef z)
sub getActorRotationQ( actor, ByRef x, ByRef y, ByRef z, ByRef w)
sub getActorLinearVelocityWorld( actor, ByRef x, ByRef y, ByRef z)
sub getActorAngularVelocityWorld( actor, ByRef x, ByRef y, ByRef z)
@@ -45,7 +45,7 @@ sub setActorLinearVelocityLocal( actor, x, y, z)
sub setActorLinearVelocityWorld( actor, x, y, z)
sub setActorAngularVelocityLocal( actor, x, y, z)
sub setActorAngularVelocityWorld( actor, x, y, z)
-sub getActorLocalPointVelocity( actor, rel_x, rel_y, rel_z, ByRef x, ByRef y, ByRef z)
+sub getActorVelocityInLocalPoint( actor, rel_x, rel_y, rel_z, ByRef x, ByRef y, ByRef z)
sub getActorLinearVelocityLocal( actor, ByRef x, ByRef y, ByRef z)
sub getActorAngularVelocityLocal( actor, ByRef x, ByRef y, ByRef z)
sub getActorAABB( actor, ByRef min_x, ByRef min_y, ByRef min_z, ByRef max_x, ByRef max_y, ByRef max_z)
diff --git a/rcbasic_build/intern_lib/canvas.bas b/rcbasic_build/intern_lib/canvas.bas
index 8c419db..5ce8205 100644
--- a/rcbasic_build/intern_lib/canvas.bas
+++ b/rcbasic_build/intern_lib/canvas.bas
@@ -20,4 +20,4 @@ function CanvasZ(c_num)
function CanvasClip(x, y, w, h)
function ActiveCanvas()
sub SetCanvasPhysics2D(c_num, state)
-function OpenCanvasSpriteLayer(w, h, viewport_x, viewport_y, viewport_w, viewport_h)
+function OpenCanvasSpriteLayer(viewport_x, viewport_y, viewport_w, viewport_h)
diff --git a/rcbasic_build/intern_lib/joint2D.bas b/rcbasic_build/intern_lib/joint2D.bas
index e69de29..514118d 100644
--- a/rcbasic_build/intern_lib/joint2D.bas
+++ b/rcbasic_build/intern_lib/joint2D.bas
@@ -0,0 +1,68 @@
+function createDistanceJoint( spriteA, spriteB, aX, aY, bX, bY, collide_connect)
+function createFrictionJoint( spriteA, spriteB, x, y, collide_connect)
+function createGearJoint( jointA, jointB, g_ratio, collide_connect)
+function createMotorJoint( spriteA, spriteB, collide_connect)
+function createPrismaticJoint( spriteA, spriteB, aX, aY, axisX, axisY, collide_connect)
+function createPulleyJoint( spriteA, spriteB, gaX, gaY, gbX, gbY, aX, aY, bX, bY, j_ratio, collide_connect)
+function createRevoluteJoint( spriteA, spriteB, x, y, collide_connect)
+function createWeldJoint( spriteA, spriteB, x, y, collide_connect)
+function createWheelJoint( spriteA, spriteB, aX, aY, axisX, axisY, collide_connect)
+sub getJointWorldAnchorA( joint_id, ByRef x, ByRef y)
+sub getJointWorldAnchorB( joint_id, ByRef x, ByRef y)
+sub getJointReactionForce( joint_id, inv_dt, ByRef x, ByRef y)
+function getJointReactionTorque( joint_id, inv_dt)
+sub getJointLocalAnchorA( joint_id, ByRef x, ByRef y)
+sub getJointLocalAnchorB( joint_id, ByRef x, ByRef y)
+sub setJointLength( joint_id, jlen)
+function getJointLength( joint_id)
+sub setJointMinLength( joint_id, jlen)
+function getJointMinLength( joint_id)
+sub setJointMaxLength( joint_id, jlen)
+function getJointMaxLength( joint_id)
+function getJointCurrentLength( joint_id)
+sub setJointStiffness( joint_id, stiffness)
+function getJointStiffness( joint_id)
+sub setJointDamping( joint_id, damping)
+function getJointDamping( joint_id)
+sub setJointMaxForce( joint_id, force)
+function getJointMaxForce( joint_id)
+sub setJointMaxTorque( joint_id, torque)
+function getJointMaxTorque( joint_id)
+sub setJointCorrectionFactor( joint_id, factor)
+function getJointCorrectionFactor( joint_id)
+sub setJointRatio( joint_id, j_ratio)
+function getJointRatio( joint_id)
+sub setJointLinearOffset( joint_id, x, y)
+sub getJointLinearOffset( joint_id, ByRef x, ByRef y)
+sub setJointAngularOffset( joint_id, angleOffset)
+function getJointAngularOffset( joint_id)
+sub getJointLocalAxisA( joint_id, ByRef x, ByRef y)
+function getJointReferenceAngle( joint_id)
+function getJointTranslation( joint_id)
+function getJointSpeed( joint_id)
+function jointIsLimitEnabled( joint_id)
+sub enableJointLimit( joint_id, flag)
+function getJointLowerLimit( joint_id)
+function getJointUpperLimit( joint_id)
+sub setJointLimits( joint_id, lower_limit, upper_limit)
+function jointMotorIsEnabled( joint_id)
+sub enableJointMotor( joint_id, flag)
+sub setJointMotorSpeed( joint_id, speed)
+function getJointMotorSpeed( joint_id)
+sub setJointMaxMotorForce( joint_id, force)
+function getJointMaxMotorForce( joint_id)
+function getJointMotorForce( joint_id, inv_dt)
+sub setJointMaxMotorTorque( joint_id, torque)
+function getJointMaxMotorTorque( joint_id)
+function getJointMotorTorque( joint_id, inv_dt)
+sub getJointGroundAnchorA( joint_id, ByRef x, ByRef y)
+sub getJointGroundAnchorB( joint_id, ByRef x, ByRef y)
+function getJointLengthA( joint_id)
+function getJointLengthB( joint_id)
+function getJointCurrentLengthA( joint_id)
+function getJointCurrentLengthB( joint_id)
+sub setJointOrigin( joint_id, x, y)
+function getJointAngle( joint_id)
+function getJointLinearSpeed( joint_id)
+function getJointAngularSpeed( joint_id)
+Sub DeleteJoint( joint_id )
diff --git a/rcbasic_build/intern_lib/sprite_physics.bas b/rcbasic_build/intern_lib/sprite_physics.bas
index e69de29..c3247fd 100644
--- a/rcbasic_build/intern_lib/sprite_physics.bas
+++ b/rcbasic_build/intern_lib/sprite_physics.bas
@@ -0,0 +1,32 @@
+sub getSpriteCenter( spr_id, ByRef x, ByRef y)
+sub setSpriteLinearVelocity( spr_id, x, y)
+sub getSpriteLinearVelocity( spr_id, ByRef x, ByRef y)
+sub setSpriteAngularVelocity( spr_id, av)
+function getSpriteAngularVelocity( spr_id)
+sub applySpriteForce( spr_id, fX, fY, pX, pY)
+sub applySpriteCentralForce( spr_id, x, y)
+sub applySpriteTorque( spr_id, torque)
+sub applySpriteLinearImpulse( spr_id, iX, iY, pX, pY)
+sub applySpriteAngularImpulse( spr_id, impulse)
+function getSpriteMass( spr_id)
+function getSpriteInertia( spr_id)
+sub getSpriteWorldPoint( spr_id, lX, lY, ByRef x, ByRef y)
+sub getSpriteWorldVector( spr_id, lX, lY, ByRef x, ByRef y)
+sub getSpriteLocalPoint( spr_id, wX, wY, ByRef x, ByRef y)
+sub getSpriteLocalVector( spr_id, wX, wY, ByRef x, ByRef y)
+sub getSpriteLinearVelocityFromLocalPoint( spr_id, pX, pY, ByRef x, ByRef y)
+sub getSpriteLinearVelocityFromWorldPoint( spr_id, wX, wY, ByRef x, ByRef y)
+function getSpriteLinearDamping( spr_id)
+sub setSpriteLinearDamping( spr_id, linearDamping)
+function getSpriteAngularDamping( spr_id)
+sub setSpriteAngularDamping( spr_id, angularDamping)
+function getSpriteGravityScale( spr_id)
+sub setSpriteGravityScale( spr_id, g_scale)
+sub setSpriteBullet( spr_id, flag)
+function spriteIsBullet( spr_id)
+sub setSpriteSleepAllowed( spr_id, flag)
+function spriteSleepAllowed( spr_id)
+sub setSpriteAwake( spr_id, flag)
+function spriteIsAwake( spr_id)
+sub setSpriteFixedRotation( spr_id, flag)
+function spriteIsFixedRotation( spr_id)
diff --git a/rcbasic_build/intern_lib/tilemaps.bas b/rcbasic_build/intern_lib/tilemaps.bas
index e69de29..6c77974 100644
--- a/rcbasic_build/intern_lib/tilemaps.bas
+++ b/rcbasic_build/intern_lib/tilemaps.bas
@@ -0,0 +1,14 @@
+Function CreateTileSet(img_id, tile_w, tile_h)
+Sub SetTileAnimationLength(tileset, base_tile, num_frames)
+Function GetTileAnimationLength(tileset, base_tile)
+Sub SetTileAnimationFrame(tileset, base_tile, anim_frame, tile_frame)
+Function GetTileAnimationFrame(tileset, base_tile, anim_frame)
+Sub SetTileAnimationSpeed(tileset, base_tile, speed)
+Function GetTileAnimationSpeed(tileset, base_tile)
+Function CreateTileMap(tileset, widthInTiles, heightInTiles)
+Sub SetTileMapSize(tilemap, widthInTiles, heightInTiles)
+Sub GetTileMapSize(tilemap, ByRef widthInTiles, ByRef heightInTiles)
+Sub SetTile(tilemap, tile, x, y)
+Function GetTile(tilemap, x, y)
+Sub FillTile(tilemap, tile, x, y, widthInTiles, heightInTiles)
+Sub DrawTileMap(tilemap, x, y, w, h, offset_x, offset_y)
diff --git a/rcbasic_build/rc_builtin.h b/rcbasic_build/rc_builtin.h
index f2a194a..266bfef 100755
--- a/rcbasic_build/rc_builtin.h
+++ b/rcbasic_build/rc_builtin.h
@@ -519,8 +519,6 @@ void init_embedded_functions()
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("state", ID_TYPE_NUM);
embed_function("OpenCanvasSpriteLayer", ID_TYPE_FN_NUM);
- add_embedded_arg("w", ID_TYPE_NUM);
- add_embedded_arg("h", ID_TYPE_NUM);
add_embedded_arg("viewport_x", ID_TYPE_NUM);
add_embedded_arg("viewport_y", ID_TYPE_NUM);
add_embedded_arg("viewport_w", ID_TYPE_NUM);
@@ -1404,6 +1402,408 @@ void init_embedded_functions()
embed_function("DeleteSpriteAnimation", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
+ embed_function("getSpriteCenter", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("setSpriteLinearVelocity", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ embed_function("getSpriteLinearVelocity", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("setSpriteAngularVelocity", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("av", ID_TYPE_NUM);
+ embed_function("getSpriteAngularVelocity", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("applySpriteForce", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("fX", ID_TYPE_NUM);
+ add_embedded_arg("fY", ID_TYPE_NUM);
+ add_embedded_arg("pX", ID_TYPE_NUM);
+ add_embedded_arg("pY", ID_TYPE_NUM);
+ embed_function("applySpriteCentralForce", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ embed_function("applySpriteTorque", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("torque", ID_TYPE_NUM);
+ embed_function("applySpriteLinearImpulse", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("iX", ID_TYPE_NUM);
+ add_embedded_arg("iY", ID_TYPE_NUM);
+ add_embedded_arg("pX", ID_TYPE_NUM);
+ add_embedded_arg("pY", ID_TYPE_NUM);
+ embed_function("applySpriteAngularImpulse", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("impulse", ID_TYPE_NUM);
+ embed_function("getSpriteMass", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("getSpriteInertia", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("getSpriteWorldPoint", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("lX", ID_TYPE_NUM);
+ add_embedded_arg("lY", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getSpriteWorldVector", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("lX", ID_TYPE_NUM);
+ add_embedded_arg("lY", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getSpriteLocalPoint", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("wX", ID_TYPE_NUM);
+ add_embedded_arg("wY", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getSpriteLocalVector", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("wX", ID_TYPE_NUM);
+ add_embedded_arg("wY", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getSpriteLinearVelocityFromLocalPoint", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("pX", ID_TYPE_NUM);
+ add_embedded_arg("pY", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getSpriteLinearVelocityFromWorldPoint", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("wX", ID_TYPE_NUM);
+ add_embedded_arg("wY", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getSpriteLinearDamping", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("setSpriteLinearDamping", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("linearDamping", ID_TYPE_NUM);
+ embed_function("getSpriteAngularDamping", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("setSpriteAngularDamping", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("angularDamping", ID_TYPE_NUM);
+ embed_function("getSpriteGravityScale", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("setSpriteGravityScale", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("g_scale", ID_TYPE_NUM);
+ embed_function("setSpriteBullet", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("flag", ID_TYPE_NUM);
+ embed_function("spriteIsBullet", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("setSpriteSleepAllowed", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("flag", ID_TYPE_NUM);
+ embed_function("spriteSleepAllowed", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("setSpriteAwake", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("flag", ID_TYPE_NUM);
+ embed_function("spriteIsAwake", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("setSpriteFixedRotation", ID_TYPE_SUB);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ add_embedded_arg("flag", ID_TYPE_NUM);
+ embed_function("spriteIsFixedRotation", ID_TYPE_FN_NUM);
+ add_embedded_arg("spr_id", ID_TYPE_NUM);
+ embed_function("createDistanceJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("spriteA", ID_TYPE_NUM);
+ add_embedded_arg("spriteB", ID_TYPE_NUM);
+ add_embedded_arg("aX", ID_TYPE_NUM);
+ add_embedded_arg("aY", ID_TYPE_NUM);
+ add_embedded_arg("bX", ID_TYPE_NUM);
+ add_embedded_arg("bY", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("createFrictionJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("spriteA", ID_TYPE_NUM);
+ add_embedded_arg("spriteB", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("createGearJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("jointA", ID_TYPE_NUM);
+ add_embedded_arg("jointB", ID_TYPE_NUM);
+ add_embedded_arg("g_ratio", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("createMotorJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("spriteA", ID_TYPE_NUM);
+ add_embedded_arg("spriteB", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("createPrismaticJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("spriteA", ID_TYPE_NUM);
+ add_embedded_arg("spriteB", ID_TYPE_NUM);
+ add_embedded_arg("aX", ID_TYPE_NUM);
+ add_embedded_arg("aY", ID_TYPE_NUM);
+ add_embedded_arg("axisX", ID_TYPE_NUM);
+ add_embedded_arg("axisY", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("createPulleyJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("spriteA", ID_TYPE_NUM);
+ add_embedded_arg("spriteB", ID_TYPE_NUM);
+ add_embedded_arg("gaX", ID_TYPE_NUM);
+ add_embedded_arg("gaY", ID_TYPE_NUM);
+ add_embedded_arg("gbX", ID_TYPE_NUM);
+ add_embedded_arg("gbY", ID_TYPE_NUM);
+ add_embedded_arg("aX", ID_TYPE_NUM);
+ add_embedded_arg("aY", ID_TYPE_NUM);
+ add_embedded_arg("bX", ID_TYPE_NUM);
+ add_embedded_arg("bY", ID_TYPE_NUM);
+ add_embedded_arg("j_ratio", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("createRevoluteJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("spriteA", ID_TYPE_NUM);
+ add_embedded_arg("spriteB", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("createWeldJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("spriteA", ID_TYPE_NUM);
+ add_embedded_arg("spriteB", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("createWheelJoint", ID_TYPE_FN_NUM);
+ add_embedded_arg("spriteA", ID_TYPE_NUM);
+ add_embedded_arg("spriteB", ID_TYPE_NUM);
+ add_embedded_arg("aX", ID_TYPE_NUM);
+ add_embedded_arg("aY", ID_TYPE_NUM);
+ add_embedded_arg("axisX", ID_TYPE_NUM);
+ add_embedded_arg("axisY", ID_TYPE_NUM);
+ add_embedded_arg("collide_connect", ID_TYPE_NUM);
+ embed_function("getJointWorldAnchorA", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getJointWorldAnchorB", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getJointReactionForce", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("inv_dt", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getJointReactionTorque", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("inv_dt", ID_TYPE_NUM);
+ embed_function("getJointLocalAnchorA", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getJointLocalAnchorB", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("setJointLength", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("jlen", ID_TYPE_NUM);
+ embed_function("getJointLength", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointMinLength", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("jlen", ID_TYPE_NUM);
+ embed_function("getJointMinLength", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointMaxLength", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("jlen", ID_TYPE_NUM);
+ embed_function("getJointMaxLength", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointCurrentLength", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointStiffness", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("stiffness", ID_TYPE_NUM);
+ embed_function("getJointStiffness", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointDamping", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("damping", ID_TYPE_NUM);
+ embed_function("getJointDamping", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointMaxForce", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("force", ID_TYPE_NUM);
+ embed_function("getJointMaxForce", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointMaxTorque", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("torque", ID_TYPE_NUM);
+ embed_function("getJointMaxTorque", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointCorrectionFactor", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("factor", ID_TYPE_NUM);
+ embed_function("getJointCorrectionFactor", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointRatio", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("j_ratio", ID_TYPE_NUM);
+ embed_function("getJointRatio", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointLinearOffset", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ embed_function("getJointLinearOffset", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("setJointAngularOffset", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("angleOffset", ID_TYPE_NUM);
+ embed_function("getJointAngularOffset", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointLocalAxisA", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getJointReferenceAngle", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointTranslation", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointSpeed", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("jointIsLimitEnabled", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("enableJointLimit", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("flag", ID_TYPE_NUM);
+ embed_function("getJointLowerLimit", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointUpperLimit", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointLimits", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("lower_limit", ID_TYPE_NUM);
+ add_embedded_arg("upper_limit", ID_TYPE_NUM);
+ embed_function("jointMotorIsEnabled", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("enableJointMotor", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("flag", ID_TYPE_NUM);
+ embed_function("setJointMotorSpeed", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("speed", ID_TYPE_NUM);
+ embed_function("getJointMotorSpeed", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointMaxMotorForce", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("force", ID_TYPE_NUM);
+ embed_function("getJointMaxMotorForce", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointMotorForce", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("inv_dt", ID_TYPE_NUM);
+ embed_function("setJointMaxMotorTorque", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("torque", ID_TYPE_NUM);
+ embed_function("getJointMaxMotorTorque", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointMotorTorque", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("inv_dt", ID_TYPE_NUM);
+ embed_function("getJointGroundAnchorA", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getJointGroundAnchorB", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+ embed_function("getJointLengthA", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointLengthB", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointCurrentLengthA", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointCurrentLengthB", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("setJointOrigin", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ embed_function("getJointAngle", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointLinearSpeed", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("getJointAngularSpeed", ID_TYPE_FN_NUM);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("DeleteJoint", ID_TYPE_SUB);
+ add_embedded_arg("joint_id", ID_TYPE_NUM);
+ embed_function("CreateTileSet", ID_TYPE_FN_NUM);
+ add_embedded_arg("img_id", ID_TYPE_NUM);
+ add_embedded_arg("tile_w", ID_TYPE_NUM);
+ add_embedded_arg("tile_h", ID_TYPE_NUM);
+ embed_function("SetTileAnimationLength", ID_TYPE_SUB);
+ add_embedded_arg("tileset", ID_TYPE_NUM);
+ add_embedded_arg("base_tile", ID_TYPE_NUM);
+ add_embedded_arg("num_frames", ID_TYPE_NUM);
+ embed_function("GetTileAnimationLength", ID_TYPE_FN_NUM);
+ add_embedded_arg("tileset", ID_TYPE_NUM);
+ add_embedded_arg("base_tile", ID_TYPE_NUM);
+ embed_function("SetTileAnimationFrame", ID_TYPE_SUB);
+ add_embedded_arg("tileset", ID_TYPE_NUM);
+ add_embedded_arg("base_tile", ID_TYPE_NUM);
+ add_embedded_arg("anim_frame", ID_TYPE_NUM);
+ add_embedded_arg("tile_frame", ID_TYPE_NUM);
+ embed_function("GetTileAnimationFrame", ID_TYPE_FN_NUM);
+ add_embedded_arg("tileset", ID_TYPE_NUM);
+ add_embedded_arg("base_tile", ID_TYPE_NUM);
+ add_embedded_arg("anim_frame", ID_TYPE_NUM);
+ embed_function("SetTileAnimationSpeed", ID_TYPE_SUB);
+ add_embedded_arg("tileset", ID_TYPE_NUM);
+ add_embedded_arg("base_tile", ID_TYPE_NUM);
+ add_embedded_arg("speed", ID_TYPE_NUM);
+ embed_function("GetTileAnimationSpeed", ID_TYPE_FN_NUM);
+ add_embedded_arg("tileset", ID_TYPE_NUM);
+ add_embedded_arg("base_tile", ID_TYPE_NUM);
+ embed_function("CreateTileMap", ID_TYPE_FN_NUM);
+ add_embedded_arg("tileset", ID_TYPE_NUM);
+ add_embedded_arg("widthInTiles", ID_TYPE_NUM);
+ add_embedded_arg("heightInTiles", ID_TYPE_NUM);
+ embed_function("SetTileMapSize", ID_TYPE_SUB);
+ add_embedded_arg("tilemap", ID_TYPE_NUM);
+ add_embedded_arg("widthInTiles", ID_TYPE_NUM);
+ add_embedded_arg("heightInTiles", ID_TYPE_NUM);
+ embed_function("GetTileMapSize", ID_TYPE_SUB);
+ add_embedded_arg("tilemap", ID_TYPE_NUM);
+ add_embedded_arg("widthInTiles", ID_TYPE_BYREF_NUM);
+ add_embedded_arg("heightInTiles", ID_TYPE_BYREF_NUM);
+ embed_function("SetTile", ID_TYPE_SUB);
+ add_embedded_arg("tilemap", ID_TYPE_NUM);
+ add_embedded_arg("tile", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ embed_function("GetTile", ID_TYPE_FN_NUM);
+ add_embedded_arg("tilemap", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ embed_function("FillTile", ID_TYPE_SUB);
+ add_embedded_arg("tilemap", ID_TYPE_NUM);
+ add_embedded_arg("tile", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ add_embedded_arg("widthInTiles", ID_TYPE_NUM);
+ add_embedded_arg("heightInTiles", ID_TYPE_NUM);
+ embed_function("DrawTileMap", ID_TYPE_SUB);
+ add_embedded_arg("tilemap", ID_TYPE_NUM);
+ add_embedded_arg("x", ID_TYPE_NUM);
+ add_embedded_arg("y", ID_TYPE_NUM);
+ add_embedded_arg("w", ID_TYPE_NUM);
+ add_embedded_arg("h", ID_TYPE_NUM);
+ add_embedded_arg("offset_x", ID_TYPE_NUM);
+ add_embedded_arg("offset_y", ID_TYPE_NUM);
embed_function("LoadMesh", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_file$", ID_TYPE_STR);
embed_function("DeleteMesh", ID_TYPE_SUB);
@@ -1525,6 +1925,55 @@ void init_embedded_functions()
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("ActorExists", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
+ embed_function("CreateActorAnimation", ID_TYPE_FN_NUM);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("start_frame", ID_TYPE_NUM);
+ add_embedded_arg("end_frame", ID_TYPE_NUM);
+ add_embedded_arg("speed", ID_TYPE_NUM);
+ embed_function("SetActorAnimation", ID_TYPE_SUB);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("animation", ID_TYPE_NUM);
+ add_embedded_arg("num_loops", ID_TYPE_NUM);
+ embed_function("SetActorAnimationSpeed", ID_TYPE_SUB);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("animation", ID_TYPE_NUM);
+ add_embedded_arg("speed", ID_TYPE_NUM);
+ embed_function("SetActorAnimationFrames", ID_TYPE_SUB);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("animation", ID_TYPE_NUM);
+ add_embedded_arg("start_frame", ID_TYPE_NUM);
+ add_embedded_arg("end_frame", ID_TYPE_NUM);
+ embed_function("GetActorCurrentAnimation", ID_TYPE_FN_NUM);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ embed_function("GetActorAnimationSpeed", ID_TYPE_FN_NUM);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("animation", ID_TYPE_NUM);
+ embed_function("GetActorAnimationStartFrame", ID_TYPE_FN_NUM);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("animation", ID_TYPE_NUM);
+ embed_function("GetActorAnimationEndFrame", ID_TYPE_FN_NUM);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("animation", ID_TYPE_NUM);
+ embed_function("SetActorFrame", ID_TYPE_SUB);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("frame", ID_TYPE_NUM);
+ embed_function("GetActorFrame", ID_TYPE_FN_NUM);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ embed_function("ActorAnimationIsPlaying", ID_TYPE_FN_NUM);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ embed_function("NumActorAnimationLoops", ID_TYPE_FN_NUM);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ embed_function("SetActorMD2Animation", ID_TYPE_SUB);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("anim", ID_TYPE_NUM);
+ add_embedded_arg("num_loops", ID_TYPE_NUM);
+ embed_function("SetActorMD2AnimationByName", ID_TYPE_SUB);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("anim_name$", ID_TYPE_STR);
+ add_embedded_arg("num_loops", ID_TYPE_NUM);
+ embed_function("DeleteActorAnimation", ID_TYPE_SUB);
+ add_embedded_arg("actor", ID_TYPE_NUM);
+ add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("SetGravity3D", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
@@ -1693,7 +2142,7 @@ void init_embedded_functions()
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("updateActorInertiaTensor", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
- embed_function("getActorCOMPosition", ID_TYPE_SUB);
+ embed_function("getActorCenter", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
@@ -1734,7 +2183,7 @@ void init_embedded_functions()
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
add_embedded_arg("z", ID_TYPE_NUM);
- embed_function("getActorLocalPointVelocity", ID_TYPE_SUB);
+ embed_function("getActorVelocityInLocalPoint", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("rel_x", ID_TYPE_NUM);
add_embedded_arg("rel_y", ID_TYPE_NUM);
@@ -2436,55 +2885,6 @@ void init_embedded_functions()
add_embedded_arg("patchX", ID_TYPE_NUM);
add_embedded_arg("patchZ", ID_TYPE_NUM);
add_embedded_arg("LOD", ID_TYPE_NUM);
- embed_function("CreateActorAnimation", ID_TYPE_FN_NUM);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("start_frame", ID_TYPE_NUM);
- add_embedded_arg("end_frame", ID_TYPE_NUM);
- add_embedded_arg("speed", ID_TYPE_NUM);
- embed_function("SetActorAnimation", ID_TYPE_SUB);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("animation", ID_TYPE_NUM);
- add_embedded_arg("num_loops", ID_TYPE_NUM);
- embed_function("SetActorAnimationSpeed", ID_TYPE_SUB);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("animation", ID_TYPE_NUM);
- add_embedded_arg("speed", ID_TYPE_NUM);
- embed_function("SetActorAnimationFrames", ID_TYPE_SUB);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("animation", ID_TYPE_NUM);
- add_embedded_arg("start_frame", ID_TYPE_NUM);
- add_embedded_arg("end_frame", ID_TYPE_NUM);
- embed_function("GetActorCurrentAnimation", ID_TYPE_FN_NUM);
- add_embedded_arg("actor", ID_TYPE_NUM);
- embed_function("GetActorAnimationSpeed", ID_TYPE_FN_NUM);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("animation", ID_TYPE_NUM);
- embed_function("GetActorAnimationStartFrame", ID_TYPE_FN_NUM);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("animation", ID_TYPE_NUM);
- embed_function("GetActorAnimationEndFrame", ID_TYPE_FN_NUM);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("animation", ID_TYPE_NUM);
- embed_function("SetActorFrame", ID_TYPE_SUB);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("frame", ID_TYPE_NUM);
- embed_function("GetActorFrame", ID_TYPE_FN_NUM);
- add_embedded_arg("actor", ID_TYPE_NUM);
- embed_function("ActorAnimationIsPlaying", ID_TYPE_FN_NUM);
- add_embedded_arg("actor", ID_TYPE_NUM);
- embed_function("NumActorAnimationLoops", ID_TYPE_FN_NUM);
- add_embedded_arg("actor", ID_TYPE_NUM);
- embed_function("SetActorMD2Animation", ID_TYPE_SUB);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("anim", ID_TYPE_NUM);
- add_embedded_arg("num_loops", ID_TYPE_NUM);
- embed_function("SetActorMD2AnimationByName", ID_TYPE_SUB);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("anim_name$", ID_TYPE_STR);
- add_embedded_arg("num_loops", ID_TYPE_NUM);
- embed_function("DeleteActorAnimation", ID_TYPE_SUB);
- add_embedded_arg("actor", ID_TYPE_NUM);
- add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("createMaterial", ID_TYPE_FN_NUM);
embed_function("deleteMaterial", ID_TYPE_SUB);
add_embedded_arg("material_id", ID_TYPE_NUM);
diff --git a/rcbasic_build/rcbasic.dbgi b/rcbasic_build/rcbasic.dbgi
index 131d7b4..b130b8c 100644
--- a/rcbasic_build/rcbasic.dbgi
+++ b/rcbasic_build/rcbasic.dbgi
@@ -1 +1,43 @@
-/home/n00b/Projects/RCBASIC4/rcbasic_runtime/bin/Release/unittest.bas
+embedded_functions.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/conio.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/arrays.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/math.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/strings.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/stacks.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/files.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/directories.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/datetime.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/window.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/canvas.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/prim2d.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/images.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/keyboard.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/audio.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/joystick.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/gfxconsole.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/text.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/touch.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/network.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/video.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/system.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/matrix.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/process.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/clipboard.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/textedit.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/sprites.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/sprite_animation.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/sprite_physics.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/joint2D.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/tilemaps.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/mesh.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor_physics.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/constraint3D.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/camera.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/scene.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/particles.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/lights.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/terrain.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/water.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/actor_animation.bas
+/home/n00b/Projects/RCBASIC4/rcbasic_build/intern_lib/materials.bas
diff --git a/rcbasic_build/rcbasic.dbgs b/rcbasic_build/rcbasic.dbgs
index 40146ed..d54ff08 100644
--- a/rcbasic_build/rcbasic.dbgs
+++ b/rcbasic_build/rcbasic.dbgs
@@ -1,12 +1,1788 @@
-U main x 2
-U main.x t 0
-UN main.x.t w 0
-UN main.x n 0
-U main y 3
-U main.y t 0
-UN main.y.t w 0
-UN main.y n 0
-U main z 4
-U main.z t 0
-UN main.z.t w 0
-UN main.z n 0
+S main #fs0 0
+S main.Fprint txt$ 0
+S main.Input$ prompt$ 0
+BN main #fn0 0
+BN main.ArrayDim id 0
+BS main.StringArrayDim id$ 0
+BN main.NumberArrayDim id 0
+BN main.ArraySize id 0
+N main #fn1 1
+N main.ArraySize array_dim 1
+BS main.StringArraySize id$ 0
+N main.StringArraySize array_dim 0
+BN main.NumberArraySize id 0
+N main.NumberArraySize array_dim 1
+BN main.NumberArrayCopy src 0
+BN main.NumberArrayCopy dst 1
+BS main.StringArrayCopy src$ 0
+BS main #fs1 1
+BS main.StringArrayCopy dst$ 1
+BN main.ArrayCopy src 0
+BN main.ArrayCopy dst 1
+BN main.NumberArrayFill src 0
+N main.NumberArrayFill fdata 1
+BS main.StringArrayFill src$ 0
+S main.StringArrayFill fdata$ 1
+BN main.ArrayFill src 0
+N main.ArrayFill fdata 1
+BU main #fu0 0
+BU main.TypeArrayDim id 0
+BU main.TypeArraySize id 0
+N main.TypeArraySize array_dim 0
+BU main.TypeArrayCopy src 0
+BU main #fu1 1
+BU main.TypeArrayCopy dst 1
+BU main.TypeArrayFill src 0
+U main.TypeArrayFill fdata 1
+N main.Abs n 0
+N main.Acos n 0
+N main.AndBit a 0
+N main.AndBit b 1
+N main.Asin n 0
+N main.Atan n 0
+N main.Bin$ n 0
+N main.CInt32 i 0
+N main.CInt64 i 0
+N main.Cos n 0
+N main.Degrees r 0
+N main.Exp n 0
+N main.Frac n 0
+N main.Hex$ n 0
+S main.HexVal n$ 0
+N main.Int n 0
+N main.Log n 0
+N main.Max a 0
+N main.Max b 1
+N main.Min a 0
+N main.Min b 1
+N main.OrBit a 0
+N main.OrBit b 1
+N main.Radians d 0
+N main.Randomize n 0
+N main.Rand n 0
+N main.Round n 0
+N main.Sign n 0
+N main.Sin n 0
+N main.Sqrt n 0
+N main.Tan n 0
+N main.XOrBit a 0
+N main.XOrBit b 1
+N main.GetLineIntersection p0_x 0
+N main.GetLineIntersection p0_y 1
+N main #fn2 2
+N main.GetLineIntersection p1_x 2
+N main #fn3 3
+N main.GetLineIntersection p1_y 3
+N main #fn4 4
+N main.GetLineIntersection p2_x 4
+N main #fn5 5
+N main.GetLineIntersection p2_y 5
+N main #fn6 6
+N main.GetLineIntersection p3_x 6
+N main #fn7 7
+N main.GetLineIntersection p3_y 7
+BN main #fn8 8
+BN main.GetLineIntersection i_x 8
+BN main #fn9 9
+BN main.GetLineIntersection i_y 9
+N main.Interpolate min_a 0
+N main.Interpolate max_a 1
+N main.Interpolate mid_a 2
+N main.Interpolate min_b 3
+N main.Interpolate max_b 4
+N main.ATan2 y 0
+N main.ATan2 x 1
+N main.PointInQuad x 0
+N main.PointInQuad y 1
+N main.PointInQuad x1 2
+N main.PointInQuad y1 3
+N main.PointInQuad x2 4
+N main.PointInQuad y2 5
+N main.PointInQuad x3 6
+N main.PointInQuad y3 7
+N main.PointInQuad x4 8
+N main.PointInQuad y4 9
+N main.PointInTri x 0
+N main.PointInTri y 1
+N main.PointInTri x1 2
+N main.PointInTri y1 3
+N main.PointInTri x2 4
+N main.PointInTri y2 5
+N main.PointInTri x3 6
+N main.PointInTri y3 7
+N main.Distance2D x1 0
+N main.Distance2D y1 1
+N main.Distance2D x2 2
+N main.Distance2D y2 3
+N main.Distance3D x1 0
+N main.Distance3D y1 1
+N main.Distance3D z1 2
+N main.Distance3D x2 3
+N main.Distance3D y2 4
+N main.Distance3D z2 5
+N main.GetCircleLineIntersection circle_x 0
+N main.GetCircleLineIntersection circle_y 1
+N main.GetCircleLineIntersection radius 2
+N main.GetCircleLineIntersection x1 3
+N main.GetCircleLineIntersection y1 4
+N main.GetCircleLineIntersection x2 5
+N main.GetCircleLineIntersection y2 6
+BN main.GetCircleLineIntersection ix1 7
+BN main.GetCircleLineIntersection iy1 8
+BN main.GetCircleLineIntersection ix2 9
+BN main #fn10 10
+BN main.GetCircleLineIntersection iy2 10
+BN main.GetLinePlaneIntersection line_point 0
+BN main.GetLinePlaneIntersection line_direction 1
+BN main.GetLinePlaneIntersection plane_point_1 2
+BN main.GetLinePlaneIntersection plane_point_2 3
+BN main.GetLinePlaneIntersection plane_point_3 4
+BN main.GetLinePlaneIntersection intersection 5
+S main.Asc c$ 0
+N main.Chr$ n 0
+S main.Insert$ src$ 0
+S main.Insert$ tgt$ 1
+N main.Insert$ pos 0
+S main.InStr src$ 0
+S main.InStr substr$ 1
+S main.Lcase$ src$ 0
+S main.Left$ src$ 0
+N main.Left$ n 0
+S main.Length src$ 0
+S main.Len src$ 0
+S main.Ltrim$ src$ 0
+S main.Mid$ src$ 0
+N main.Mid$ start 0
+N main.Mid$ n 1
+S main.ReplaceSubstr$ src$ 0
+S main.ReplaceSubstr$ rpc$ 1
+N main.ReplaceSubstr$ pos 0
+S main.Replace$ src$ 0
+S main.Replace$ tgt$ 1
+S main #fs2 2
+S main.Replace$ rpc$ 2
+S main.Reverse$ src$ 0
+S main.Right$ src$ 0
+N main.Right$ n 0
+S main.Rtrim$ src$ 0
+S main.StringFill$ src$ 0
+N main.StringFill$ n 0
+N main.Str$ n 0
+N main.Str_F$ n 0
+N main.Str_S$ n 0
+S main.Tally src$ 0
+S main.Tally substr$ 1
+S main.Trim$ src$ 0
+S main.Ucase$ src$ 0
+S main.Val n$ 0
+S main.Size s$ 0
+S main.BufferFromString s$ 0
+BN main.BufferFromString buffer 0
+BN main.StringFromBuffer$ buffer 0
+N main.StringFromBuffer$ buffer_size 1
+N main.ClearStack_N num_stack 0
+N main.ClearStack_S str_stack 0
+N main.DeleteStack_N num_stack 0
+N main.DeleteStack_S str_stack 0
+N main.Push_N num_stack 0
+N main.Push_N n 1
+N main.Pop_N num_stack 0
+N main.Push_S str_stack 0
+S main.Push_S s$ 0
+N main.Pop_S$ str_stack 0
+N main.Stack_Size_N num_stack 0
+N main.Stack_Size_S str_stack 0
+S main.OpenFile fileName$ 0
+N main.OpenFile mode 0
+N main.CloseFile stream 0
+N main.ReadByte stream 0
+N main.WriteByte stream 0
+N main.WriteByte byte 1
+N main.ReadLine$ stream 0
+N main.Write stream 0
+S main.Write txt$ 0
+N main.WriteLine stream 0
+S main.WriteLine txt$ 0
+S main.CopyFile src$ 0
+S main.CopyFile dst$ 1
+S main.RemoveFile fileName$ 0
+S main.FileExists fileName$ 0
+S main.MoveFile src$ 0
+S main.MoveFile dst$ 1
+S main.RenameFile src$ 0
+S main.RenameFile dst$ 1
+S main.FileLength fileName$ 0
+N main.Tell stream 0
+N main.Seek stream 0
+N main.Seek pos 1
+N main.EOF stream 0
+N main.WriteByteBuffer stream 0
+BN main.WriteByteBuffer buf 1
+N main.WriteByteBuffer buf_size 2
+N main.ReadByteBuffer stream 0
+BN main.ReadByteBuffer buf 1
+N main.ReadByteBuffer buf_size 2
+S main.ChangeDir p$ 0
+S main.DirExists p$ 0
+S main.MakeDir p$ 0
+S main.RemoveDir p$ 0
+N main.Easter$ year 0
+N main.Wait m_sec 0
+S main.OpenWindow title$ 0
+N main.OpenWindow w 0
+N main.OpenWindow h 1
+N main.OpenWindow fullscreen 2
+N main.OpenWindow vsync 3
+S main.OpenWindowEx title$ 0
+N main.OpenWindowEx x 0
+N main.OpenWindowEx y 1
+N main.OpenWindowEx w 2
+N main.OpenWindowEx h 3
+N main.OpenWindowEx mode 4
+N main.OpenWindowEx aa 5
+N main.OpenWindowEx stencil_buffer 6
+N main.OpenWindowEx vsync 7
+N main.SetClearColor c 0
+S main.SetWindowTitle title$ 0
+N main.SetWindowPosition x 0
+N main.SetWindowPosition y 1
+BN main.GetWindowPosition x 0
+BN main.GetWindowPosition y 1
+N main.SetWindowSize w 0
+N main.SetWindowSize h 1
+BN main.GetWindowSize w 0
+BN main.GetWindowSize h 1
+N main.SetWindowMinSize w 0
+N main.SetWindowMinSize h 1
+BN main.GetWindowMinSize w 0
+BN main.GetWindowMinSize h 1
+N main.SetWindowMaxSize w 0
+N main.SetWindowMaxSize h 1
+BN main.GetWindowMaxSize w 0
+BN main.GetWindowMaxSize h 1
+N main.SetWindowFullscreen flag 0
+N main.SetWindowBordered flag 0
+N main.WindowClip x 0
+N main.WindowClip y 1
+N main.WindowClip w 2
+N main.WindowClip h 3
+N main.SetWindowIcon slot 0
+N main.SetWindowAutoClose exit_on_close 0
+N main.SetWindowResizable flag 0
+N main.WindowMode visible 0
+N main.WindowMode fullscreen 1
+N main.WindowMode resizable 2
+N main.WindowMode borderless 3
+N main.WindowMode highDPI 4
+N main.GrabInput flag 0
+N main.SetWindowAlwaysOnTop flag 0
+N main.SetMouseRelative flag 0
+N main.FlashWindow flag 0
+N main.OpenCanvas w 0
+N main.OpenCanvas h 1
+N main.OpenCanvas viewport_x 2
+N main.OpenCanvas viewport_y 3
+N main.OpenCanvas viewport_w 4
+N main.OpenCanvas viewport_h 5
+N main.OpenCanvas mode 6
+N main.CloseCanvas c_num 0
+N main.OpenCanvas3D viewport_x 0
+N main.OpenCanvas3D viewport_y 1
+N main.OpenCanvas3D viewport_w 2
+N main.OpenCanvas3D viewport_h 3
+N main.OpenCanvas3D mode 4
+N main.SetCanvasVisible c_num 0
+N main.SetCanvasVisible flag 1
+N main.CanvasIsVisible c_num 0
+N main.SetCanvasViewport cnum 0
+N main.SetCanvasViewport x 1
+N main.SetCanvasViewport y 2
+N main.SetCanvasViewport w 3
+N main.SetCanvasViewport h 4
+N main.GetCanvasViewport c_num 0
+BN main.GetCanvasViewport x 1
+BN main.GetCanvasViewport y 2
+BN main.GetCanvasViewport w 3
+BN main.GetCanvasViewport h 4
+N main.Canvas c_num 0
+N main.SetCanvasOffset c_num 0
+N main.SetCanvasOffset x 1
+N main.SetCanvasOffset y 2
+N main.GetCanvasOffset c_num 0
+BN main.GetCanvasOffset x 1
+BN main.GetCanvasOffset y 2
+N main.GetCanvasSize c_num 0
+BN main.GetCanvasSize w 1
+BN main.GetCanvasSize h 2
+N main.SetCanvasAlpha c_num 0
+N main.SetCanvasAlpha a 1
+N main.GetCanvasAlpha c_num 0
+N main.SetCanvasColorMod c_num 0
+N main.SetCanvasColorMod c 1
+N main.GetCanvasColorMod c_num 0
+N main.CloneCanvas c_num 0
+N main.CloneCanvas mode 1
+N main.SetCanvasZ c_num 0
+N main.SetCanvasZ z 1
+N main.CanvasZ c_num 0
+N main.CanvasClip x 0
+N main.CanvasClip y 1
+N main.CanvasClip w 2
+N main.CanvasClip h 3
+N main.SetCanvasPhysics2D c_num 0
+N main.SetCanvasPhysics2D state 1
+N main.OpenCanvasSpriteLayer w 0
+N main.OpenCanvasSpriteLayer h 1
+N main.OpenCanvasSpriteLayer viewport_x 2
+N main.OpenCanvasSpriteLayer viewport_y 3
+N main.OpenCanvasSpriteLayer viewport_w 4
+N main.OpenCanvasSpriteLayer viewport_h 5
+N main.Circle x 0
+N main.Circle y 1
+N main.Circle radius 2
+N main.CircleFill x 0
+N main.CircleFill y 1
+N main.CircleFill radius 2
+N main.Ellipse x 0
+N main.Ellipse y 1
+N main.Ellipse rx 2
+N main.Ellipse ry 3
+N main.EllipseFill x 0
+N main.EllipseFill y 1
+N main.EllipseFill rx 2
+N main.EllipseFill ry 3
+N main.FloodFill x 0
+N main.FloodFill y 1
+N main.GetPixel x 0
+N main.GetPixel y 1
+N main.SetColor c 0
+N main.Line x1 0
+N main.Line y1 1
+N main.Line x2 2
+N main.Line y2 3
+N main.Poly n 0
+BN main.Poly x 1
+BN main.Poly y 2
+N main.Rect x 0
+N main.Rect y 1
+N main.Rect w 2
+N main.Rect h 3
+N main.RectFill x 0
+N main.RectFill y 1
+N main.RectFill w 2
+N main.RectFill h 3
+N main.RGB r 0
+N main.RGB g 1
+N main.RGB b 2
+N main.RGBA r 0
+N main.RGBA g 1
+N main.RGBA b 2
+N main.RGBA a 3
+N main.Pset x 0
+N main.Pset y 1
+S main.LoadImage img$ 0
+S main.LoadImageEx img$ 0
+N main.LoadImageEx colkey 0
+N main.createImage w 0
+N main.createImage h 1
+BN main.createImage buffer 2
+N main.createImageEx w 0
+N main.createImageEx h 1
+BN main.createImageEx buffer 2
+N main.createImageEx color 3
+N main.BufferFromImage slot 0
+BN main.BufferFromImage buffer 1
+N main.ImageExists slot 0
+N main.ColorKey slot 0
+N main.ColorKey c 1
+N main.setBilinearFilter flag 0
+N main.CopyImage img_id 0
+N main.DeleteImage slot 0
+N main.SetImageAlpha slot 0
+N main.SetImageAlpha a 1
+N main.GetImageAlpha img_id 0
+N main.GetImageSize slot 0
+BN main.GetImageSize w 1
+BN main.GetImageSize h 2
+N main.SetBlendMode blend_mode 0
+N main.SetImageColorMod slot 0
+N main.SetImageColorMod c 1
+N main.GetImageColorMod slot 0
+N main.DrawImage slot 0
+N main.DrawImage x 1
+N main.DrawImage y 2
+N main.DrawImage_Blit slot 0
+N main.DrawImage_Blit x 1
+N main.DrawImage_Blit y 2
+N main.DrawImage_Blit src_x 3
+N main.DrawImage_Blit src_y 4
+N main.DrawImage_Blit src_w 5
+N main.DrawImage_Blit src_h 6
+N main.DrawImage_BlitEx slot 0
+N main.DrawImage_BlitEx x 1
+N main.DrawImage_BlitEx y 2
+N main.DrawImage_BlitEx w 3
+N main.DrawImage_BlitEx h 4
+N main.DrawImage_BlitEx src_x 5
+N main.DrawImage_BlitEx src_y 6
+N main.DrawImage_BlitEx src_w 7
+N main.DrawImage_BlitEx src_h 8
+N main.DrawImage_Rotate slot 0
+N main.DrawImage_Rotate x 1
+N main.DrawImage_Rotate y 2
+N main.DrawImage_Rotate angle 3
+N main.DrawImage_RotateEx slot 0
+N main.DrawImage_RotateEx x 1
+N main.DrawImage_RotateEx y 2
+N main.DrawImage_RotateEx src_x 3
+N main.DrawImage_RotateEx src_y 4
+N main.DrawImage_RotateEx src_w 5
+N main.DrawImage_RotateEx src_h 6
+N main.DrawImage_RotateEx angle 7
+N main.DrawImage_Zoom slot 0
+N main.DrawImage_Zoom x 1
+N main.DrawImage_Zoom y 2
+N main.DrawImage_Zoom zx 3
+N main.DrawImage_Zoom zy 4
+N main.DrawImage_ZoomEx slot 0
+N main.DrawImage_ZoomEx x 1
+N main.DrawImage_ZoomEx y 2
+N main.DrawImage_ZoomEx src_x 3
+N main.DrawImage_ZoomEx src_y 4
+N main.DrawImage_ZoomEx src_w 5
+N main.DrawImage_ZoomEx src_h 6
+N main.DrawImage_ZoomEx zx 7
+N main.DrawImage_ZoomEx zy 8
+N main.DrawImage_Rotozoom slot 0
+N main.DrawImage_Rotozoom x 1
+N main.DrawImage_Rotozoom y 2
+N main.DrawImage_Rotozoom angle 3
+N main.DrawImage_Rotozoom zx 4
+N main.DrawImage_Rotozoom zy 5
+N main.DrawImage_RotozoomEx slot 0
+N main.DrawImage_RotozoomEx x 1
+N main.DrawImage_RotozoomEx y 2
+N main.DrawImage_RotozoomEx src_x 3
+N main.DrawImage_RotozoomEx src_y 4
+N main.DrawImage_RotozoomEx src_w 5
+N main.DrawImage_RotozoomEx src_h 6
+N main.DrawImage_RotozoomEx angle 7
+N main.DrawImage_RotozoomEx zx 8
+N main.DrawImage_RotozoomEx zy 9
+N main.DrawImage_Flip slot 0
+N main.DrawImage_Flip x 1
+N main.DrawImage_Flip y 2
+N main.DrawImage_Flip h 3
+N main.DrawImage_Flip v 4
+N main.DrawImage_FlipEx slot 0
+N main.DrawImage_FlipEx x 1
+N main.DrawImage_FlipEx y 2
+N main.DrawImage_FlipEx src_x 3
+N main.DrawImage_FlipEx src_y 4
+N main.DrawImage_FlipEx src_w 5
+N main.DrawImage_FlipEx src_h 6
+N main.DrawImage_FlipEx h 7
+N main.DrawImage_FlipEx v 8
+N main.Key key_code 0
+BN main.GetMouse x 0
+BN main.GetMouse y 1
+BN main.GetMouse mb1 2
+BN main.GetMouse mb2 3
+BN main.GetMouse mb3 4
+N main.MouseButton mb 0
+BN main.GetMouseWheel x_axis 0
+BN main.GetMouseWheel y_axis 1
+BN main.GetGlobalMouse x 0
+BN main.GetGlobalMouse y 1
+BN main.GetGlobalMouse mb1 2
+BN main.GetGlobalMouse mb2 3
+BN main.GetGlobalMouse mb3 4
+N main.WarpMouse x 0
+N main.WarpMouse y 1
+N main.WarpMouseGlobal x 0
+N main.WarpMouseGlobal y 1
+N main.SetMouseZone x 0
+N main.SetMouseZone y 1
+N main.SetMouseZone w 2
+N main.SetMouseZone h 3
+BN main.CreateSound buffer 0
+N main.CreateSound buffer_size 1
+N main.CreateSound vol 2
+S main.LoadSound snd_file$ 0
+S main.LoadMusic music_file$ 0
+N main.PlaySound slot 0
+N main.PlaySound channel 1
+N main.PlaySound loops 2
+N main.PlaySoundTimed slot 0
+N main.PlaySoundTimed channel 1
+N main.PlaySoundTimed loops 2
+N main.PlaySoundTimed ms 3
+N main.PlayMusic mLoops 0
+N main.PauseSound channel 0
+N main.ResumeSound channel 0
+N main.DeleteSound slot 0
+N main.FadeMusicIn fade_time 0
+N main.FadeMusicIn loops 1
+N main.FadeMusicOut fade_time 0
+N main.SetMusicVolume vol 0
+N main.SetMusicPosition pos 0
+N main.SetSoundChannels max_channels 0
+N main.SoundExists slot 0
+N main.SetChannelVolume channel 0
+N main.SetChannelVolume vol 1
+N main.GetChannelVolume channel 0
+N main.SetSoundVolume slot 0
+N main.SetSoundVolume vol 1
+N main.GetSoundVolume slot 0
+N main.StopSound channel 0
+N main.SetChannelPanning channel 0
+N main.SetChannelPanning left_value 1
+N main.SetChannelPanning right_value 2
+N main.SetChannelDistance channel 0
+N main.SetChannelDistance dist_value 1
+N main.ChannelIsPlaying channel 0
+N main.ChannelIsPaused channel 0
+BN main.QueryAudioSpec freq 0
+BN main.QueryAudioSpec format 1
+BN main.QueryAudioSpec channels 2
+N main.SetChannelSpacePosition channel 0
+N main.SetChannelSpacePosition angle 1
+N main.SetChannelSpacePosition distance 2
+N main.NumJoyAxes joy_num 0
+N main.NumJoyButtons joy_num 0
+N main.NumJoyHats joy_num 0
+N main.NumJoyTrackBalls joy_num 0
+N main.JoyAxis joy_num 0
+N main.JoyAxis joy_axis 1
+N main.JoyButton joy_num 0
+N main.JoyButton joy_button 1
+N main.JoyHat joy_num 0
+N main.JoyHat joy_hat 1
+N main.GetJoyTrackBall joy_num 0
+N main.GetJoyTrackBall ball 1
+BN main.GetJoyTrackBall dx 2
+BN main.GetJoyTrackBall dy 3
+N main.JoyName$ joy_num 0
+N main.JoystickIsConnected joy_num 0
+N main.JoyRumblePlay joy_num 0
+N main.JoyRumblePlay strength 1
+N main.JoyRumblePlay duration 2
+N main.JoyRumbleStop joy_num 0
+N main.JoystickIsHaptic joy_num 0
+S main.LoadFont fnt_file$ 0
+N main.LoadFont font_size 0
+N main.DeleteFont slot 0
+N main.FontExists slot 0
+N main.SetFont slot 0
+S main.DrawText txt$ 0
+N main.DrawText x 0
+N main.DrawText y 1
+S main.GetTextSize txt$ 0
+BN main.GetTextSize w 0
+BN main.GetTextSize h 1
+S main.TextWidth txt$ 0
+S main.TextHeight txt$ 0
+BN main.GetTouch status 0
+BN main.GetTouch x 1
+BN main.GetTouch y 2
+BN main.GetTouch dx 3
+BN main.GetTouch dy 4
+BN main.GetMultiTouch status 0
+BN main.GetMultiTouch x 1
+BN main.GetMultiTouch y 2
+BN main.GetMultiTouch fingers 3
+BN main.GetMultiTouch dist 4
+BN main.GetMultiTouch theta 5
+N main.GetTouchFinger finger 0
+BN main.GetTouchFinger x 1
+BN main.GetTouchFinger y 2
+BN main.GetTouchFinger pressure 3
+N main.GetAccel accel_num 0
+BN main.GetAccel x 1
+BN main.GetAccel y 2
+BN main.GetAccel z 3
+N main.AccelName$ accel_num 0
+N main.GetGyro gyro_num 0
+BN main.GetGyro x 1
+BN main.GetGyro y 2
+BN main.GetGyro z 3
+N main.GyroName$ gyro_num 0
+N main.CheckSockets timeout_ms 0
+N main.TCP_SocketReady socket 0
+N main.UDP_SocketReady socket 0
+S main.TCP_OpenSocket host$ 0
+N main.TCP_OpenSocket port 0
+N main.TCP_CloseSocket socket 0
+N main.TCP_RemoteHost socket 0
+N main.TCP_RemotePort socket 0
+N main.TCP_GetData socket 0
+N main.TCP_GetData numBytes 1
+BS main.TCP_GetData sData$ 0
+N main.TCP_SendData socket 0
+S main.TCP_SendData sData$ 0
+N main.TCP_AcceptSocket server 0
+N main.TCP_AcceptSocket client 1
+N main.UDP_OpenSocket port 0
+N main.UDP_CloseSocket socket 0
+N main.UDP_GetData socket 0
+BS main.UDP_GetData host$ 0
+BN main.UDP_GetData port 1
+BS main.UDP_GetData sData$ 1
+N main.UDP_RemoteHost$ socket 0
+N main.UDP_RemotePort socket 0
+N main.UDP_SendData socket 0
+S main.UDP_SendData host$ 0
+N main.UDP_SendData port 1
+S main.UDP_SendData sData$ 1
+S main.LoadVideo vid$ 0
+N main.PlayVideo vLoops 0
+N main.SetVideoPosition pos 0
+S main.GetVideoStats vFile$ 0
+BN main.GetVideoStats vLen 0
+BN main.GetVideoStats vfps 1
+BN main.GetVideoStats frame_w 2
+BN main.GetVideoStats frame_h 3
+N main.SetVideoDrawRect x 0
+N main.SetVideoDrawRect y 1
+N main.SetVideoDrawRect w 2
+N main.SetVideoDrawRect h 3
+BN main.GetVideoDrawRect x 0
+BN main.GetVideoDrawRect y 1
+BN main.GetVideoDrawRect w 2
+BN main.GetVideoDrawRect h 3
+BN main.GetVideoSize w 0
+BN main.GetVideoSize h 1
+N main.SetVideoVolume vol 0
+S main.System cmd$ 0
+N main.Command$ arg 0
+S main.Env$ v$ 0
+S main.SetEnv var$ 0
+S main.SetEnv value$ 1
+S main.PrefPath$ org_name$ 0
+S main.PrefPath$ app_name$ 1
+S main.Android_JNI_Message$ arg$ 0
+S main.Runtime_Utility_Message$ arg$ 0
+N main.GetDesktopDisplayMode index 0
+BN main.GetDesktopDisplayMode w 1
+BN main.GetDesktopDisplayMode h 2
+BN main.GetDesktopDisplayMode freq 3
+BN main.GetPowerInfo status 0
+BN main.GetPowerInfo secs 1
+BN main.GetPowerInfo pct 2
+S main.EvalJS$ js_code$ 0
+S main.SystemReturnStdOut$ cmd$ 0
+S main.OpenURL url$ 0
+S main.MessageBox title$ 0
+S main.MessageBox msg$ 1
+N main.DimMatrix m_rows 0
+N main.DimMatrix m_cols 1
+N main.DeleteMatrix mA 0
+N main.AddMatrix mA 0
+N main.AddMatrix mB 1
+N main.AddMatrix mC 2
+N main.AugmentMatrix mA 0
+N main.AugmentMatrix mB 1
+N main.AugmentMatrix mC 2
+N main.CopyMatrix mA 0
+N main.CopyMatrix mB 1
+N main.InsertMatrixColumns mA 0
+N main.InsertMatrixColumns c 1
+N main.InsertMatrixColumns num_cols 2
+N main.InsertMatrixRows mA 0
+N main.InsertMatrixRows r 1
+N main.InsertMatrixRows num_rows 2
+N main.MultiplyMatrix mA 0
+N main.MultiplyMatrix mB 1
+N main.MultiplyMatrix mC 2
+N main.CubeMatrix mA 0
+N main.CubeMatrix mB 1
+N main.DeleteMatrixColumns mA 0
+N main.DeleteMatrixColumns c 1
+N main.DeleteMatrixColumns num_cols 2
+N main.DeleteMatrixRows mA 0
+N main.DeleteMatrixRows r 1
+N main.DeleteMatrixRows num_rows 2
+N main.ClearMatrix mA 0
+N main.ClearMatrixColumns mA 0
+N main.ClearMatrixColumns c 1
+N main.ClearMatrixColumns num_cols 2
+N main.ClearMatrixRows mA 0
+N main.ClearMatrixRows r 1
+N main.ClearMatrixRows num_rows 2
+N main.FillMatrix mA 0
+N main.FillMatrix v 1
+N main.FillMatrixColumns mA 0
+N main.FillMatrixColumns c 1
+N main.FillMatrixColumns num_cols 2
+N main.FillMatrixColumns v 3
+N main.FillMatrixRows mA 0
+N main.FillMatrixRows r 1
+N main.FillMatrixRows num_rows 2
+N main.FillMatrixRows v 3
+N main.CopyMatrixColumns mA 0
+N main.CopyMatrixColumns mB 1
+N main.CopyMatrixColumns c 2
+N main.CopyMatrixColumns num_cols 3
+N main.CopyMatrixRows mA 0
+N main.CopyMatrixRows mB 1
+N main.CopyMatrixRows r 2
+N main.CopyMatrixRows num_rows 3
+N main.SetIdentityMatrix mA 0
+N main.SetIdentityMatrix n 1
+N main.SolveMatrix mA 0
+N main.SolveMatrix mB 1
+N main.SolveMatrix mC 2
+N main.IsEqualMatrix mA 0
+N main.IsEqualMatrix mB 1
+N main.IsEqualMatrix tolerance 2
+N main.Determinant mA 0
+N main.AdjointMatrix mA 0
+N main.AdjointMatrix mB 1
+N main.InvertMatrix mA 0
+N main.InvertMatrix mB 1
+N main.MatrixFromBuffer mA 0
+N main.MatrixFromBuffer r 1
+N main.MatrixFromBuffer c 2
+BN main.MatrixFromBuffer buffer 3
+BN main.BufferFromMatrix buffer 0
+N main.BufferFromMatrix mA 1
+N main.RandomizeMatrix mA 0
+N main.RandomizeMatrix vmin 1
+N main.RandomizeMatrix vmax 2
+N main.MatrixValue mA 0
+N main.MatrixValue r 1
+N main.MatrixValue c 2
+N main.SetMatrixValue mA 0
+N main.SetMatrixValue r 1
+N main.SetMatrixValue c 2
+N main.SetMatrixValue v 3
+N main.ScalarMatrix mA 0
+N main.ScalarMatrix mB 1
+N main.ScalarMatrix s_value 2
+N main.ScalarMatrixColumns mA 0
+N main.ScalarMatrixColumns mB 1
+N main.ScalarMatrixColumns c 2
+N main.ScalarMatrixColumns num_cols 3
+N main.ScalarMatrixColumns s_value 4
+N main.ScalarMatrixRows mA 0
+N main.ScalarMatrixRows mB 1
+N main.ScalarMatrixRows r 2
+N main.ScalarMatrixRows num_rows 3
+N main.ScalarMatrixRows s_value 4
+N main.SquareMatrix mA 0
+N main.SquareMatrix mB 1
+N main.CofactorMatrix mA 0
+N main.CofactorMatrix r 1
+N main.CofactorMatrix c 2
+N main.SubtractMatrix mA 0
+N main.SubtractMatrix mB 1
+N main.SubtractMatrix mC 2
+N main.SwapMatrix mA 0
+N main.SwapMatrix mB 1
+N main.SwapMatrixColumn mA 0
+N main.SwapMatrixColumn C1 1
+N main.SwapMatrixColumn C2 2
+N main.SwapMatrixRow mA 0
+N main.SwapMatrixRow R1 1
+N main.SwapMatrixRow R2 2
+N main.TransposeMatrix mA 0
+N main.TransposeMatrix mB 1
+N main.UnAugmentMatrix mA 0
+N main.UnAugmentMatrix mB 1
+N main.UnAugmentMatrix mC 2
+N main.ZeroMatrix mA 0
+N main.GetMatrixSize mA 0
+BN main.GetMatrixSize r 1
+BN main.GetMatrixSize c 2
+N main.IncrementMatrixRows mA 0
+N main.IncrementMatrixRows mB 1
+N main.IncrementMatrixRows r 2
+N main.IncrementMatrixRows num_rows 3
+N main.IncrementMatrixRows value 4
+N main.IncrementMatrixColumns mA 0
+N main.IncrementMatrixColumns mB 1
+N main.IncrementMatrixColumns c 2
+N main.IncrementMatrixColumns num_cols 3
+N main.IncrementMatrixColumns value 4
+N main.JoinMatrixRows mA 0
+N main.JoinMatrixRows mB 1
+N main.JoinMatrixRows mC 2
+N main.JoinMatrixColumns mA 0
+N main.JoinMatrixColumns mB 1
+N main.JoinMatrixColumns mC 2
+N main.ClipMatrix mA 0
+N main.ClipMatrix r 1
+N main.ClipMatrix c 2
+N main.ClipMatrix num_rows 3
+N main.ClipMatrix num_cols 4
+N main.ClipMatrix mB 5
+N main.SetMatrixTranslation mA 0
+N main.SetMatrixTranslation x 1
+N main.SetMatrixTranslation y 2
+N main.SetMatrixTranslation z 3
+N main.SetMatrixRotation mA 0
+N main.SetMatrixRotation x 1
+N main.SetMatrixRotation y 2
+N main.SetMatrixRotation z 3
+N main.SetMatrixScale mA 0
+N main.SetMatrixScale x 1
+N main.SetMatrixScale y 2
+N main.SetMatrixScale z 3
+N main.GetMatrixTranslation mA 0
+BN main.GetMatrixTranslation x 1
+BN main.GetMatrixTranslation y 2
+BN main.GetMatrixTranslation z 3
+N main.GetMatrixRotation mA 0
+BN main.GetMatrixRotation x 1
+BN main.GetMatrixRotation y 2
+BN main.GetMatrixRotation z 3
+N main.GetMatrixScale mA 0
+BN main.GetMatrixScale x 1
+BN main.GetMatrixScale y 2
+BN main.GetMatrixScale z 3
+S main.SetClipboardText txt$ 0
+S main.ReadInput_SetText txt$ 0
+N main.ReadInput_ToggleBackspace flag 0
+N main.CreateSprite img 0
+N main.CreateSprite frame_w 1
+N main.CreateSprite frame_h 2
+N main.DeleteSprite sprite 0
+N main.SetSpritePosition sprite 0
+N main.SetSpritePosition x 1
+N main.SetSpritePosition y 2
+N main.TranslateSprite sprite 0
+N main.TranslateSprite x 1
+N main.TranslateSprite y 2
+N main.GetSpritePosition sprite 0
+BN main.GetSpritePosition x 1
+BN main.GetSpritePosition y 2
+N main.SpriteX sprite 0
+N main.SpriteY sprite 0
+N main.SetSpriteRotation sprite 0
+N main.SetSpriteRotation angle 1
+N main.RotateSprite sprite 0
+N main.RotateSprite angle 1
+N main.GetSpriteRotation sprite 0
+N main.SetSpriteScale sprite 0
+N main.SetSpriteScale x 1
+N main.SetSpriteScale y 2
+N main.ScaleSprite sprite 0
+N main.ScaleSprite x 1
+N main.ScaleSprite y 2
+N main.GetSpriteScale sprite 0
+BN main.GetSpriteScale x 1
+BN main.GetSpriteScale y 2
+N main.SetSpriteZ sprite 0
+N main.SetSpriteZ z 1
+N main.SpriteZ sprite 0
+N main.GetSpriteSize sprite 0
+BN main.GetSpriteSize w 1
+BN main.GetSpriteSize h 2
+N main.SpriteWidth sprite 0
+N main.SpriteHeight sprite 0
+N main.SetSpriteVisible sprite 0
+N main.SetSpriteVisible flag 1
+N main.SpriteIsVisible sprite 0
+N main.SetSpriteSolid sprite 0
+N main.SetSpriteSolid flag 1
+N main.SpriteIsSolid sprite 0
+N main.SetSpriteType sprite 0
+N main.SetSpriteType sprite_type 1
+N main.GetSpriteType sprite 0
+N main.SetSpriteSource sprite 0
+N main.SetSpriteSource img 1
+N main.GetSpriteSource sprite 0
+N main.CreateSpriteAnimation sprite 0
+N main.CreateSpriteAnimation anim_length 1
+N main.CreateSpriteAnimation speed 2
+N main.SetSpriteFrame sprite 0
+N main.SetSpriteFrame frame 1
+N main.GetSpriteFrame sprite 0
+N main.SetSpriteAnimationFrame sprite 0
+N main.SetSpriteAnimationFrame animation 1
+N main.SetSpriteAnimationFrame anim_frame 2
+N main.SetSpriteAnimationFrame frame 3
+N main.GetSpriteAnimationFrame sprite 0
+N main.GetSpriteAnimationFrame animation 1
+N main.GetSpriteAnimationFrame anim_frame 2
+N main.SetSpriteAnimationLength sprite 0
+N main.SetSpriteAnimationLength animation 1
+N main.SetSpriteAnimationLength anim_length 2
+N main.GetSpriteAnimationLength sprite 0
+N main.GetSpriteAnimationLength animation 1
+N main.SetSpriteAnimationSpeed sprite 0
+N main.SetSpriteAnimationSpeed animation 1
+N main.SetSpriteAnimationSpeed speed 2
+N main.GetSpriteAnimationSpeed sprite 0
+N main.GetSpriteAnimationSpeed animation 1
+N main.SetSpriteAnimation sprite 0
+N main.SetSpriteAnimation animation 1
+N main.SetSpriteAnimation num_loops 2
+N main.GetSpriteAnimation sprite 0
+N main.GetSpriteCurrentAnimationFrame sprite 0
+N main.NumSpriteAnimationLoops sprite 0
+N main.SpriteAnimationIsPlaying sprite 0
+N main.DeleteSpriteAnimation sprite 0
+N main.DeleteSpriteAnimation animation 1
+S main.LoadMesh mesh_file$ 0
+N main.DeleteMesh mesh 0
+N main.AddMeshBuffer mesh 0
+N main.AddMeshBuffer vertex_count 1
+BN main.AddMeshBuffer vertex_data 2
+BN main.AddMeshBuffer normal_data 3
+BN main.AddMeshBuffer uv_data 4
+N main.AddMeshBuffer index_count 5
+BN main.AddMeshBuffer index_data 6
+S main.LoadMeshFromArchive archive$ 0
+S main.LoadMeshFromArchive mesh_file$ 1
+N main.CreatePlaneMesh w 0
+N main.CreatePlaneMesh h 1
+N main.CreatePlaneMesh tileCount_w 2
+N main.CreatePlaneMesh tileCount_h 3
+S main.LoadAN8 an8_file$ 0
+N main.LoadMeshFromAN8 an8_project 0
+S main.LoadMeshFromAN8 an8_scene$ 0
+N main.GetNumAN8Scenes an8_project 0
+N main.GetAN8SceneName$ an8_project 0
+N main.GetAN8SceneName$ scene_num 1
+N main.CreateAnimatedActor mesh 0
+N main.CreateOctreeActor mesh 0
+N main.CreateCubeActor cube_size 0
+N main.CreateSphereActor radius 0
+N main.CreateWaterActor mesh 0
+N main.CreateWaterActor waveHeight 1
+N main.CreateWaterActor waveSpeed 2
+N main.CreateWaterActor waveLength 3
+S main.CreateTerrainActor hmap_file$ 0
+N main.CreateParticleActor particle_type 0
+N main.DeleteActor actor 0
+N main.GetActorTransform actor 0
+N main.GetActorTransform matrix 1
+N main.SetActorPosition actor 0
+N main.SetActorPosition x 1
+N main.SetActorPosition y 2
+N main.SetActorPosition z 3
+N main.TranslateActorLocal actor 0
+N main.TranslateActorLocal x 1
+N main.TranslateActorLocal y 2
+N main.TranslateActorLocal z 3
+N main.TranslateActorWorld actor 0
+N main.TranslateActorWorld x 1
+N main.TranslateActorWorld y 2
+N main.TranslateActorWorld z 3
+N main.GetActorPosition actor 0
+BN main.GetActorPosition x 1
+BN main.GetActorPosition y 2
+BN main.GetActorPosition z 3
+N main.SetActorScale actor 0
+N main.SetActorScale x 1
+N main.SetActorScale y 2
+N main.SetActorScale z 3
+N main.ScaleActor actor 0
+N main.ScaleActor x 1
+N main.ScaleActor y 2
+N main.ScaleActor z 3
+N main.GetActorScale actor 0
+BN main.GetActorScale x 1
+BN main.GetActorScale y 2
+BN main.GetActorScale z 3
+N main.SetActorRotation actor 0
+N main.SetActorRotation x 1
+N main.SetActorRotation y 2
+N main.SetActorRotation z 3
+N main.RotateActor actor 0
+N main.RotateActor x 1
+N main.RotateActor y 2
+N main.RotateActor z 3
+N main.GetActorRotation actor 0
+BN main.GetActorRotation x 1
+BN main.GetActorRotation y 2
+BN main.GetActorRotation z 3
+N main.SetActorVisible actor 0
+N main.SetActorVisible flag 1
+N main.ActorIsVisible actor 0
+N main.SetActorAutoCulling actor 0
+N main.SetActorAutoCulling cull_type 1
+N main.GetActorAutoCulling actor 0
+N main.AddActorShadow actor 0
+N main.RemoveActorShadow actor 0
+N main.ActorExists actor 0
+N main.SetGravity3D x 0
+N main.SetGravity3D y 1
+N main.SetGravity3D z 2
+BN main.GetGravity3D x 0
+BN main.GetGravity3D y 1
+BN main.GetGravity3D z 2
+N main.SetActorCollisionShape actor 0
+N main.SetActorCollisionShape shape_type 1
+N main.SetActorCollisionShape mass 2
+N main.GetActorCollisionShape actor 0
+N main.SetActorSolid actor 0
+N main.SetActorSolid flag 1
+N main.ActorIsSolid actor 0
+N main.GetActorCollision actor1 0
+N main.GetActorCollision actor2 1
+N main.SetActorGravity actor 0
+N main.SetActorGravity x 1
+N main.SetActorGravity y 2
+N main.SetActorGravity z 3
+N main.GetActorGravity actor 0
+BN main.GetActorGravity x 1
+BN main.GetActorGravity y 2
+BN main.GetActorGravity z 3
+N main.setActorDamping actor 0
+N main.setActorDamping lin_damping 1
+N main.setActorDamping ang_damping 2
+N main.getActorLinearDamping actor 0
+N main.getActorAngularDamping actor 0
+N main.getActorLinearSleepThreshold actor 0
+N main.getActorAngularSleepThreshold actor 0
+N main.applyActorDamping actor 0
+N main.applyActorDamping timeStep 1
+N main.setActorMassProperties actor 0
+N main.setActorMassProperties mass 1
+N main.setActorMassProperties inertia_x 2
+N main.setActorMassProperties inertia_y 3
+N main.setActorMassProperties inertia_z 4
+N main.getActorLinearFactor actor 0
+BN main.getActorLinearFactor x 1
+BN main.getActorLinearFactor y 2
+BN main.getActorLinearFactor z 3
+N main.setActorLinearFactor actor 0
+N main.setActorLinearFactor x 1
+N main.setActorLinearFactor y 2
+N main.setActorLinearFactor z 3
+N main.getActorInverseMass actor 0
+N main.integrateActorVelocities actor 0
+N main.integrateActorVelocities v_step 1
+N main.applyActorCentralForceLocal actor 0
+N main.applyActorCentralForceLocal x 1
+N main.applyActorCentralForceLocal y 2
+N main.applyActorCentralForceLocal z 3
+N main.applyActorCentralForceWorld actor 0
+N main.applyActorCentralForceWorld x 1
+N main.applyActorCentralForceWorld y 2
+N main.applyActorCentralForceWorld z 3
+N main.getActorTotalForce actor 0
+BN main.getActorTotalForce x 1
+BN main.getActorTotalForce y 2
+BN main.getActorTotalForce z 3
+N main.getActorTotalTorque actor 0
+BN main.getActorTotalTorque x 1
+BN main.getActorTotalTorque y 2
+BN main.getActorTotalTorque z 3
+N main.getActorInverseInertiaDiagLocal actor 0
+BN main.getActorInverseInertiaDiagLocal x 1
+BN main.getActorInverseInertiaDiagLocal y 2
+BN main.getActorInverseInertiaDiagLocal z 3
+N main.setActorInverseInertiaDiagLocal actor 0
+N main.setActorInverseInertiaDiagLocal x 1
+N main.setActorInverseInertiaDiagLocal y 2
+N main.setActorInverseInertiaDiagLocal z 3
+N main.setActorSleepThresholds actor 0
+N main.setActorSleepThresholds linear 1
+N main.setActorSleepThresholds angular 2
+N main.applyActorTorqueLocal actor 0
+N main.applyActorTorqueLocal x 1
+N main.applyActorTorqueLocal y 2
+N main.applyActorTorqueLocal z 3
+N main.applyActorTorqueWorld actor 0
+N main.applyActorTorqueWorld x 1
+N main.applyActorTorqueWorld y 2
+N main.applyActorTorqueWorld z 3
+N main.applyActorForceLocal actor 0
+N main.applyActorForceLocal x 1
+N main.applyActorForceLocal y 2
+N main.applyActorForceLocal z 3
+N main.applyActorForceLocal rel_x 4
+N main.applyActorForceLocal rel_y 5
+N main.applyActorForceLocal rel_z 6
+N main.applyActorForceWorld actor 0
+N main.applyActorForceWorld x 1
+N main.applyActorForceWorld y 2
+N main.applyActorForceWorld z 3
+N main.applyActorForceWorld rel_x 4
+N main.applyActorForceWorld rel_y 5
+N main.applyActorForceWorld rel_z 6
+N main.applyActorCentralImpulseLocal actor 0
+N main.applyActorCentralImpulseLocal x 1
+N main.applyActorCentralImpulseLocal y 2
+N main.applyActorCentralImpulseLocal z 3
+N main.applyActorCentralImpulseWorld actor 0
+N main.applyActorCentralImpulseWorld x 1
+N main.applyActorCentralImpulseWorld y 2
+N main.applyActorCentralImpulseWorld z 3
+N main.applyActorTorqueImpulseLocal actor 0
+N main.applyActorTorqueImpulseLocal x 1
+N main.applyActorTorqueImpulseLocal y 2
+N main.applyActorTorqueImpulseLocal z 3
+N main.applyActorTorqueImpulseWorld actor 0
+N main.applyActorTorqueImpulseWorld x 1
+N main.applyActorTorqueImpulseWorld y 2
+N main.applyActorTorqueImpulseWorld z 3
+N main.applyActorImpulseLocal actor 0
+N main.applyActorImpulseLocal x 1
+N main.applyActorImpulseLocal y 2
+N main.applyActorImpulseLocal z 3
+N main.applyActorImpulseLocal rel_x 4
+N main.applyActorImpulseLocal rel_y 5
+N main.applyActorImpulseLocal rel_z 6
+N main.applyActorImpulseWorld actor 0
+N main.applyActorImpulseWorld x 1
+N main.applyActorImpulseWorld y 2
+N main.applyActorImpulseWorld z 3
+N main.applyActorImpulseWorld rel_x 4
+N main.applyActorImpulseWorld rel_y 5
+N main.applyActorImpulseWorld rel_z 6
+N main.clearActorForces actor 0
+N main.updateActorInertiaTensor actor 0
+N main.getActorCOMPosition actor 0
+BN main.getActorCOMPosition x 1
+BN main.getActorCOMPosition y 2
+BN main.getActorCOMPosition z 3
+N main.getActorRotationQ actor 0
+BN main.getActorRotationQ x 1
+BN main.getActorRotationQ y 2
+BN main.getActorRotationQ z 3
+BN main.getActorRotationQ w 4
+N main.getActorLinearVelocityWorld actor 0
+BN main.getActorLinearVelocityWorld x 1
+BN main.getActorLinearVelocityWorld y 2
+BN main.getActorLinearVelocityWorld z 3
+N main.getActorAngularVelocityWorld actor 0
+BN main.getActorAngularVelocityWorld x 1
+BN main.getActorAngularVelocityWorld y 2
+BN main.getActorAngularVelocityWorld z 3
+N main.setActorLinearVelocityLocal actor 0
+N main.setActorLinearVelocityLocal x 1
+N main.setActorLinearVelocityLocal y 2
+N main.setActorLinearVelocityLocal z 3
+N main.setActorLinearVelocityWorld actor 0
+N main.setActorLinearVelocityWorld x 1
+N main.setActorLinearVelocityWorld y 2
+N main.setActorLinearVelocityWorld z 3
+N main.setActorAngularVelocityLocal actor 0
+N main.setActorAngularVelocityLocal x 1
+N main.setActorAngularVelocityLocal y 2
+N main.setActorAngularVelocityLocal z 3
+N main.setActorAngularVelocityWorld actor 0
+N main.setActorAngularVelocityWorld x 1
+N main.setActorAngularVelocityWorld y 2
+N main.setActorAngularVelocityWorld z 3
+N main.getActorLocalPointVelocity actor 0
+N main.getActorLocalPointVelocity rel_x 1
+N main.getActorLocalPointVelocity rel_y 2
+N main.getActorLocalPointVelocity rel_z 3
+BN main.getActorLocalPointVelocity x 4
+BN main.getActorLocalPointVelocity y 5
+BN main.getActorLocalPointVelocity z 6
+N main.getActorLinearVelocityLocal actor 0
+BN main.getActorLinearVelocityLocal x 1
+BN main.getActorLinearVelocityLocal y 2
+BN main.getActorLinearVelocityLocal z 3
+N main.getActorAngularVelocityLocal actor 0
+BN main.getActorAngularVelocityLocal x 1
+BN main.getActorAngularVelocityLocal y 2
+BN main.getActorAngularVelocityLocal z 3
+N main.getActorAABB actor 0
+BN main.getActorAABB min_x 1
+BN main.getActorAABB min_y 2
+BN main.getActorAABB min_z 3
+BN main.getActorAABB max_x 4
+BN main.getActorAABB max_y 5
+BN main.getActorAABB max_z 6
+N main.computeActorImpulseDenominator actor 0
+N main.computeActorImpulseDenominator pos_x 1
+N main.computeActorImpulseDenominator pos_y 2
+N main.computeActorImpulseDenominator pos_z 3
+N main.computeActorImpulseDenominator normal_x 4
+N main.computeActorImpulseDenominator normal_y 5
+N main.computeActorImpulseDenominator normal_z 6
+N main.computeActorAngularImpulseDenominator actor 0
+N main.computeActorAngularImpulseDenominator x 1
+N main.computeActorAngularImpulseDenominator y 2
+N main.computeActorAngularImpulseDenominator z 3
+N main.setActorAngularFactor actor 0
+N main.setActorAngularFactor x 1
+N main.setActorAngularFactor y 2
+N main.setActorAngularFactor z 3
+N main.getActorAngularFactor actor 0
+BN main.getActorAngularFactor x 1
+BN main.getActorAngularFactor y 2
+BN main.getActorAngularFactor z 3
+N main.computeActorGyroImpulseLocal actor 0
+N main.computeActorGyroImpulseLocal dt 1
+BN main.computeActorGyroImpulseLocal x 2
+BN main.computeActorGyroImpulseLocal y 3
+BN main.computeActorGyroImpulseLocal z 4
+N main.computeActorGyroImpulseWorld actor 0
+N main.computeActorGyroImpulseWorld dt 1
+BN main.computeActorGyroImpulseWorld x 2
+BN main.computeActorGyroImpulseWorld y 3
+BN main.computeActorGyroImpulseWorld z 4
+N main.getActorLocalInertia actor 0
+BN main.getActorLocalInertia x 1
+BN main.getActorLocalInertia y 2
+BN main.getActorLocalInertia z 3
+N main.SetActorSleepState actor 0
+N main.SetActorSleepState state 1
+N main.createPointConstraint actorA 0
+N main.createPointConstraint pxA 1
+N main.createPointConstraint pyA 2
+N main.createPointConstraint pzA 3
+N main.createPointConstraintEx actorA 0
+N main.createPointConstraintEx actorB 1
+N main.createPointConstraintEx pxA 2
+N main.createPointConstraintEx pyA 3
+N main.createPointConstraintEx pzA 4
+N main.createPointConstraintEx pxB 5
+N main.createPointConstraintEx pyB 6
+N main.createPointConstraintEx pzB 7
+N main.setPointPivotA constraint_id 0
+N main.setPointPivotA x 1
+N main.setPointPivotA y 2
+N main.setPointPivotA z 3
+N main.setPointPivotB constraint_id 0
+N main.setPointPivotB x 1
+N main.setPointPivotB y 2
+N main.setPointPivotB z 3
+N main.createHingeConstraint actorA 0
+N main.createHingeConstraint frameA 1
+N main.createHingeConstraint useReferenceFrameA 2
+N main.createHingeConstraintEx actorA 0
+N main.createHingeConstraintEx actorB 1
+N main.createHingeConstraintEx frameA 2
+N main.createHingeConstraintEx frameB 3
+N main.createHingeConstraintEx useReferenceFrameA 4
+N main.createSlideConstraint actorA 0
+N main.createSlideConstraint frameInB_matrix 1
+N main.createSlideConstraint useLinearReferenceFrameA 2
+N main.createSlideConstraintEx actorA 0
+N main.createSlideConstraintEx actorB 1
+N main.createSlideConstraintEx frameInA_matrix 2
+N main.createSlideConstraintEx frameInB_matrix 3
+N main.createSlideConstraintEx useLinearReferenceFrameA 4
+N main.createConeConstraint actorA 0
+N main.createConeConstraint rbAFrame_matrix 1
+N main.createConeConstraintEx actorA 0
+N main.createConeConstraintEx actorB 1
+N main.createConeConstraintEx rbAFrame_matrix 2
+N main.createConeConstraintEx rbBFrame_matrix 3
+N main.deleteConstraint constraint_id 0
+N main.getConstraintFrameOffsetA constraint_id 0
+BN main.getConstraintFrameOffsetA x 1
+BN main.getConstraintFrameOffsetA y 2
+BN main.getConstraintFrameOffsetA z 3
+BN main.getConstraintFrameOffsetA rx 4
+BN main.getConstraintFrameOffsetA ry 5
+BN main.getConstraintFrameOffsetA rz 6
+N main.getConstraintFrameOffsetB constraint_id 0
+BN main.getConstraintFrameOffsetB x 1
+BN main.getConstraintFrameOffsetB y 2
+BN main.getConstraintFrameOffsetB z 3
+BN main.getConstraintFrameOffsetB rx 4
+BN main.getConstraintFrameOffsetB ry 5
+BN main.getConstraintFrameOffsetB rz 6
+N main.useConstraintFrameOffset constraint_id 0
+N main.useConstraintFrameOffset flag 1
+N main.getHingeAngle constraint_id 0
+N main.getHingeAngleEx constraint_id 0
+N main.getHingeAngleEx t_matrixA 1
+N main.getHingeAngleEx t_matrixB 2
+N main.getConstraintBreakingImpulseThreshold constraint_id 0
+N main.getConstraintAFrame constraint_id 0
+N main.getConstraintAFrame mA 1
+N main.getConstraintBFrame constraint_id 0
+N main.getConstraintBFrame mA 1
+N main.setHingeAxis constraint_id 0
+N main.setHingeAxis x 1
+N main.setHingeAxis y 2
+N main.setHingeAxis z 3
+N main.setConstraintBreakingImpulseThreshold constraint_id 0
+N main.setConstraintBreakingImpulseThreshold threshold 1
+N main.setConstraintFrames constraint_id 0
+N main.setConstraintFrames frameA_matrix 1
+N main.setConstraintFrames frameB_matrix 2
+N main.setHingeLimit constraint_id 0
+N main.setHingeLimit low 1
+N main.setHingeLimit high 2
+N main.setHingeLimit softness 3
+N main.setHingeLimit bias_factor 4
+N main.setHingeLimit relaxation_factor 5
+N main.setConeLimit constraint_id 0
+N main.setConeLimit swingSpan1 1
+N main.setConeLimit swingSpan2 2
+N main.setConeLimit twistSpan 3
+N main.setConeLimit softness 4
+N main.setConeLimit bias_factor 5
+N main.setConeLimit relaxation_factor 6
+N main.getHingeLimitBiasFactor constraint_id 0
+N main.getHingeLimitRelaxationFactor constraint_id 0
+N main.getHingeLimitSign constraint_id 0
+N main.getHingeSolveLimit constraint_id 0
+N main.useHingeReferenceFrameA constraint_id 0
+N main.useHingeReferenceFrameA flag 1
+N main.getConstraintAppliedImpulse constraint_id 0
+N main.getConstraintFixedActor constraint_id 0
+N main.getPointPivotA constraint_id 0
+BN main.getPointPivotA x 1
+BN main.getPointPivotA y 2
+BN main.getPointPivotA z 3
+N main.getPointPivotB constraint_id 0
+BN main.getPointPivotB x 1
+BN main.getPointPivotB y 2
+BN main.getPointPivotB z 3
+N main.getConstraintActorA constraint_id 0
+N main.getConstraintActorB constraint_id 0
+N main.setConstraintSolverIterations constraint_id 0
+N main.setConstraintSolverIterations num 1
+N main.getConeBiasFactor constraint_id 0
+N main.getConeDamping constraint_id 0
+N main.getConeFixThresh constraint_id 0
+N main.getConeLimit constraint_id 0
+N main.getConeLimit limit_index 1
+N main.getConstraintLimitSoftness constraint_id 0
+N main.getConstraintSolverIterations constraint_id 0
+N main.getConeAnglePoint constraint_id 0
+N main.getConeAnglePoint angle 1
+N main.getConeAnglePoint c_len 2
+BN main.getConeAnglePoint x 3
+BN main.getConeAnglePoint y 4
+BN main.getConeAnglePoint z 5
+N main.getConstraintAngularOnly constraint_id 0
+N main.getConeSolveSwingLimit constraint_id 0
+N main.getConeSolveTwistLimit constraint_id 0
+N main.getConeSwingSpan1 constraint_id 0
+N main.getConeSwingSpan2 constraint_id 0
+N main.getConeTwistAngle constraint_id 0
+N main.getConeTwistLimitSign constraint_id 0
+N main.getConeTwistSpan constraint_id 0
+N main.setConstraintAngularOnly constraint_id 0
+N main.setConstraintAngularOnly flag 1
+N main.setConeDamping constraint_id 0
+N main.setConeDamping damping 1
+N main.setConeFixThresh constraint_id 0
+N main.setConeFixThresh fixThresh 1
+N main.getSlideAnchorA constraint_id 0
+BN main.getSlideAnchorA x 1
+BN main.getSlideAnchorA y 2
+BN main.getSlideAnchorA z 3
+N main.getSlideAnchorB constraint_id 0
+BN main.getSlideAnchorB x 1
+BN main.getSlideAnchorB y 2
+BN main.getSlideAnchorB z 3
+N main.getSlideAngDepth constraint_id 0
+N main.getSlideAngularPos constraint_id 0
+N main.getSlideDampingDirAng constraint_id 0
+N main.getSlideDampingDirLin constraint_id 0
+N main.getSlideDampingLimAng constraint_id 0
+N main.getSlideDampingLimLin constraint_id 0
+N main.getSlideDampingOrthoAng constraint_id 0
+N main.getSlideDampingOrthoLin constraint_id 0
+N main.getSlideLinearPos constraint_id 0
+N main.getSlideLinDepth constraint_id 0
+N main.getSlideLowerAngLimit constraint_id 0
+N main.getSlideLowerLinLimit constraint_id 0
+N main.getSlideRestitutionDirAng constraint_id 0
+N main.getSlideRestitutionDirLin constraint_id 0
+N main.getSlideRestitutionLimAng constraint_id 0
+N main.getSlideRestitutionLimLin constraint_id 0
+N main.getSlideRestitutionOrthoAng constraint_id 0
+N main.getSlideRestitutionOrthoLin constraint_id 0
+N main.getSlideSoftnessDirAng constraint_id 0
+N main.getSlideSoftnessDirLin constraint_id 0
+N main.getSlideSoftnessLimAng constraint_id 0
+N main.getSlideSoftnessLimLin constraint_id 0
+N main.getSlideSoftnessOrthoAng constraint_id 0
+N main.getSlideSoftnessOrthoLin constraint_id 0
+N main.getSlideSolveAngLimit constraint_id 0
+N main.getSlideSolveLinLimit constraint_id 0
+N main.getSlideUpperAngLimit constraint_id 0
+N main.getSlideUpperLinLimit constraint_id 0
+N main.getSlideUseFrameOffset constraint_id 0
+N main.setSlideDampingDirAng constraint_id 0
+N main.setSlideDampingDirAng n 1
+N main.setSlideDampingDirLin constraint_id 0
+N main.setSlideDampingDirLin n 1
+N main.setSlideDampingLimAng constraint_id 0
+N main.setSlideDampingLimAng n 1
+N main.setSlideDampingLimLin constraint_id 0
+N main.setSlideDampingLimLin n 1
+N main.setSlideDampingOrthoAng constraint_id 0
+N main.setSlideDampingOrthoAng n 1
+N main.setSlideDampingOrthoLin constraint_id 0
+N main.setSlideDampingOrthoLin n 1
+N main.setSlideLowerAngLimit constraint_id 0
+N main.setSlideLowerAngLimit n 1
+N main.setSlideLowerLinLimit constraint_id 0
+N main.setSlideLowerLinLimit n 1
+N main.setSlideRestitutionDirAng constraint_id 0
+N main.setSlideRestitutionDirAng n 1
+N main.setSlideRestitutionDirLin constraint_id 0
+N main.setSlideRestitutionDirLin n 1
+N main.setSlideRestitutionLimAng constraint_id 0
+N main.setSlideRestitutionLimAng n 1
+N main.setSlideRestitutionLimLin constraint_id 0
+N main.setSlideRestitutionLimLin n 1
+N main.setSlideRestitutionOrthoAng constraint_id 0
+N main.setSlideRestitutionOrthoAng n 1
+N main.setSlideRestitutionOrthoLin constraint_id 0
+N main.setSlideRestitutionOrthoLin n 1
+N main.setSlideSoftnessDirAng constraint_id 0
+N main.setSlideSoftnessDirAng n 1
+N main.setSlideSoftnessDirLin constraint_id 0
+N main.setSlideSoftnessDirLin n 1
+N main.setSlideSoftnessLimAng constraint_id 0
+N main.setSlideSoftnessLimAng n 1
+N main.setSlideSoftnessLimLin constraint_id 0
+N main.setSlideSoftnessLimLin n 1
+N main.setSlideSoftnessOrthoAng constraint_id 0
+N main.setSlideSoftnessOrthoAng n 1
+N main.setSlideSoftnessOrthoLin constraint_id 0
+N main.setSlideSoftnessOrthoLin n 1
+N main.setSlideUpperAngLimit constraint_id 0
+N main.setSlideUpperAngLimit n 1
+N main.setSlideUpperLinLimit constraint_id 0
+N main.setSlideUpperLinLimit n 1
+N main.ConstraintExists constraint_id 0
+N main.SetCameraPosition x 0
+N main.SetCameraPosition y 1
+N main.SetCameraPosition z 2
+BN main.GetCameraPosition x 0
+BN main.GetCameraPosition y 1
+BN main.GetCameraPosition z 2
+N main.TranslateCamera x 0
+N main.TranslateCamera y 1
+N main.TranslateCamera z 2
+N main.SetCameraRotation x 0
+N main.SetCameraRotation y 1
+N main.SetCameraRotation z 2
+BN main.GetCameraRotation x 0
+BN main.GetCameraRotation y 1
+BN main.GetCameraRotation z 2
+N main.RotateCamera x 0
+N main.RotateCamera y 1
+N main.RotateCamera z 2
+N main.SetCameraFOV fov 0
+N main.SetCameraAspectRatio aspect 0
+N main.SetCameraFarValue zf 0
+N main.SetCameraNearValue zn 0
+N main.SetProjectionMatrix matA 0
+N main.SetProjectionMatrix projection_type 1
+N main.GetProjectionMatrix matA 0
+N main.GetWorldToViewportPosition x 0
+N main.GetWorldToViewportPosition y 1
+N main.GetWorldToViewportPosition z 2
+BN main.GetWorldToViewportPosition vx 3
+BN main.GetWorldToViewportPosition vy 4
+N main.AddSceneSkyBox img_top 0
+N main.AddSceneSkyBox img_bottom 1
+N main.AddSceneSkyBox img_left 2
+N main.AddSceneSkyBox img_right 3
+N main.AddSceneSkyBox img_front 4
+N main.AddSceneSkyBox img_back 5
+N main.AddSceneSkyDome img 0
+N main.AddSceneSkyDomeEx img 0
+N main.AddSceneSkyDomeEx horiRes 1
+N main.AddSceneSkyDomeEx vertRes 2
+N main.AddSceneSkyDomeEx txPercentage 3
+N main.AddSceneSkyDomeEx spherePercentage 4
+N main.AddSceneSkyDomeEx radius 5
+N main.SetWorld3DMaxSubSteps steps 0
+N main.SetWorld3DTimeStep ts 0
+N main.startParticleEmitter actor 0
+N main.stopParticleEmitter actor 0
+N main.setParticleDirection actor 0
+N main.setParticleDirection x 1
+N main.setParticleDirection y 2
+N main.setParticleDirection z 3
+N main.getParticleDirection actor 0
+BN main.getParticleDirection x 1
+BN main.getParticleDirection y 2
+BN main.getParticleDirection z 3
+N main.useParticleEveryMeshVertex actor 0
+N main.useParticleEveryMeshVertex flag 1
+N main.particleIsUsingEveryMeshVertex actor 0
+N main.setParticleNormalDirectionMod actor 0
+N main.setParticleNormalDirectionMod nd_mod 1
+N main.getParticleNormalDirectionMod actor 0
+N main.useParticleNormalDirection actor 0
+N main.useParticleNormalDirection flag 1
+N main.particleIsUsingNormalDirection actor 0
+N main.setParticleMesh actor 0
+N main.setParticleMesh mesh 1
+N main.setMinParticlesPerSecond actor 0
+N main.setMinParticlesPerSecond minParticlesPerSecond 1
+N main.getMinParticlesPerSecond actor 0
+N main.setMaxParticlesPerSecond actor 0
+N main.setMaxParticlesPerSecond maxParticlesPerSecond 1
+N main.getMaxParticlesPerSecond actor 0
+N main.setParticleMinStartColor actor 0
+N main.setParticleMinStartColor color 1
+N main.getParticleMinStartColor actor 0
+N main.setParticleMaxStartColor actor 0
+N main.setParticleMaxStartColor color 1
+N main.getParticleMaxStartColor actor 0
+N main.setParticleMinLife actor 0
+N main.setParticleMinLife minLife 1
+N main.getParticleMinLife actor 0
+N main.setParticleMaxLife actor 0
+N main.setParticleMaxLife maxLife 1
+N main.getParticleMaxLife actor 0
+N main.setParticleMaxAngle actor 0
+N main.setParticleMaxAngle maxAngle 1
+N main.getParticleMaxAngle actor 0
+N main.setParticleMinStartSize actor 0
+N main.setParticleMinStartSize w 1
+N main.setParticleMinStartSize h 2
+N main.getParticleMinStartSize actor 0
+BN main.getParticleMinStartSize w 1
+BN main.getParticleMinStartSize h 2
+N main.setParticleMaxStartSize actor 0
+N main.setParticleMaxStartSize w 1
+N main.setParticleMaxStartSize h 2
+N main.getParticleMaxStartSize actor 0
+BN main.getParticleMaxStartSize w 1
+BN main.getParticleMaxStartSize h 2
+N main.setParticleCenter actor 0
+N main.setParticleCenter x 1
+N main.setParticleCenter y 2
+N main.setParticleCenter z 3
+N main.getParticleCenter actor 0
+BN main.getParticleCenter x 1
+BN main.getParticleCenter y 2
+BN main.getParticleCenter z 3
+N main.setParticleRadius actor 0
+N main.setParticleRadius radius 1
+N main.getParticleRadius actor 0
+N main.setParticleRingThickness actor 0
+N main.setParticleRingThickness ringThickness 1
+N main.getParticleRingThickness actor 0
+N main.setParticleBox actor 0
+N main.setParticleBox min_x 1
+N main.setParticleBox min_y 2
+N main.setParticleBox min_z 3
+N main.setParticleBox max_x 4
+N main.setParticleBox max_y 5
+N main.setParticleBox max_z 6
+N main.getParticleBox actor 0
+BN main.getParticleBox min_x 1
+BN main.getParticleBox min_y 2
+BN main.getParticleBox min_z 3
+BN main.getParticleBox max_x 4
+BN main.getParticleBox max_y 5
+BN main.getParticleBox max_z 6
+N main.setParticleNormal actor 0
+N main.setParticleNormal x 1
+N main.setParticleNormal y 2
+N main.setParticleNormal z 3
+N main.getParticleNormal actor 0
+BN main.getParticleNormal x 1
+BN main.getParticleNormal y 2
+BN main.getParticleNormal z 3
+N main.setParticleLength actor 0
+N main.setParticleLength p_len 1
+N main.getParticleLength actor 0
+N main.useParticleOutlineOnly actor 0
+N main.useParticleOutlineOnly flag 1
+N main.particleIsUsingOutlineOnly actor 0
+N main.getParticleType actor 0
+N main.lightIsCastingShadow actor 0
+N main.getLightType actor 0
+N main.getLightRadius actor 0
+N main.setLightType actor 0
+N main.setLightType light_type 1
+N main.setLightRadius actor 0
+N main.setLightRadius radius 1
+N main.setLightShadowCast actor 0
+N main.setLightShadowCast flag 1
+N main.SetLightAmbientColor actor 0
+N main.SetLightAmbientColor color 1
+N main.GetLightAmbientColor actor 0
+N main.SetLightAttenuation actor 0
+N main.SetLightAttenuation l_constant 1
+N main.SetLightAttenuation l_linear 2
+N main.SetLightAttenuation l_quadratic 3
+N main.GetLightAttenuation actor 0
+BN main.GetLightAttenuation constant 1
+BN main.GetLightAttenuation linear 2
+BN main.GetLightAttenuation quadratic 3
+N main.SetLightDiffuseColor actor 0
+N main.SetLightDiffuseColor color 1
+N main.GetLightDiffuseColor actor 0
+N main.SetLightFalloff actor 0
+N main.SetLightFalloff falloff 1
+N main.GetLightFalloff actor 0
+N main.SetLightInnerCone actor 0
+N main.SetLightInnerCone angle 1
+N main.GetLightInnerCone actor 0
+N main.SetLightOuterCone actor 0
+N main.SetLightOuterCone angle 1
+N main.GetLightOuterCone actor 0
+N main.SetLightSpecularColor actor 0
+N main.SetLightSpecularColor color 1
+N main.GetLightSpecularColor actor 0
+N main.GetTerrainPatchAABB actor 0
+N main.GetTerrainPatchAABB patchX 1
+N main.GetTerrainPatchAABB patchZ 2
+BN main.GetTerrainPatchAABB minX 3
+BN main.GetTerrainPatchAABB minY 4
+BN main.GetTerrainPatchAABB minZ 5
+BN main.GetTerrainPatchAABB maxX 6
+BN main.GetTerrainPatchAABB maxY 7
+BN main.GetTerrainPatchAABB maxZ 8
+N main.GetTerrainPatchLOD actor 0
+N main.GetTerrainPatchLOD patchX 1
+N main.GetTerrainPatchLOD patchZ 2
+N main.GetTerrainHeight actor 0
+N main.GetTerrainHeight patchX 1
+N main.GetTerrainHeight patchZ 2
+N main.GetTerrainCenter actor 0
+BN main.GetTerrainCenter x 1
+BN main.GetTerrainCenter y 2
+BN main.GetTerrainCenter z 3
+N main.SetTerrainLODDistance actor 0
+N main.SetTerrainLODDistance LOD 1
+N main.SetTerrainLODDistance distance 2
+N main.ScaleTerrainTexture actor 0
+N main.ScaleTerrainTexture scale 1
+N main.ScaleTerrainTexture scale2 2
+N main.SetTerrainCameraMovementDelta actor 0
+N main.SetTerrainCameraMovementDelta delta 1
+N main.SetTerrainCameraRotationDelta actor 0
+N main.SetTerrainCameraRotationDelta delta 1
+N main.SetTerrainPatchLOD actor 0
+N main.SetTerrainPatchLOD patchX 1
+N main.SetTerrainPatchLOD patchZ 2
+N main.SetTerrainPatchLOD LOD 3
+N main.CreateActorAnimation actor 0
+N main.CreateActorAnimation start_frame 1
+N main.CreateActorAnimation end_frame 2
+N main.CreateActorAnimation speed 3
+N main.SetActorAnimation actor 0
+N main.SetActorAnimation animation 1
+N main.SetActorAnimation num_loops 2
+N main.SetActorAnimationSpeed actor 0
+N main.SetActorAnimationSpeed animation 1
+N main.SetActorAnimationSpeed speed 2
+N main.SetActorAnimationFrames actor 0
+N main.SetActorAnimationFrames animation 1
+N main.SetActorAnimationFrames start_frame 2
+N main.SetActorAnimationFrames end_frame 3
+N main.GetActorCurrentAnimation actor 0
+N main.GetActorAnimationSpeed actor 0
+N main.GetActorAnimationSpeed animation 1
+N main.GetActorAnimationStartFrame actor 0
+N main.GetActorAnimationStartFrame animation 1
+N main.GetActorAnimationEndFrame actor 0
+N main.GetActorAnimationEndFrame animation 1
+N main.SetActorFrame actor 0
+N main.SetActorFrame frame 1
+N main.GetActorFrame actor 0
+N main.ActorAnimationIsPlaying actor 0
+N main.NumActorAnimationLoops actor 0
+N main.SetActorMD2Animation actor 0
+N main.SetActorMD2Animation anim 1
+N main.SetActorMD2Animation num_loops 2
+N main.SetActorMD2AnimationByName actor 0
+S main.SetActorMD2AnimationByName anim_name$ 0
+N main.SetActorMD2AnimationByName num_loops 1
+N main.DeleteActorAnimation actor 0
+N main.DeleteActorAnimation animation 1
+N main.deleteMaterial material_id 0
+N main.setActorMaterial actor 0
+N main.setActorMaterial material_num 1
+N main.setActorMaterial material_id 2
+N main.getActorMaterial actor 0
+N main.getActorMaterial material_num 1
+N main.copyActorMaterial actor 0
+N main.copyActorMaterial material_num 1
+N main.copyMaterial smaterial_id 0
+N main.setMaterialTextureCanvas material_id 0
+N main.setMaterialTextureCanvas level 1
+N main.setMaterialTextureCanvas canvas_id 2
+N main.setMaterialAmbientColor material_id 0
+N main.setMaterialAmbientColor color 1
+N main.getMaterialAmbientColor material_id 0
+N main.setMaterialAntiAliasing material_id 0
+N main.setMaterialAntiAliasing aa 1
+N main.getMaterialAntiAliasing material_id 0
+N main.setMaterialBackfaceCulling material_id 0
+N main.setMaterialBackfaceCulling flag 1
+N main.getMaterialBackfaceCulling material_id 0
+N main.setMaterialBlendFactor material_id 0
+N main.setMaterialBlendFactor bf 1
+N main.getMaterialBlendFactor material_id 0
+N main.setMaterialBlendMode material_id 0
+N main.setMaterialBlendMode blend_mode 1
+N main.getMaterialBlendMode material_id 0
+N main.setMaterialColorMask material_id 0
+N main.setMaterialColorMask color_mask 1
+N main.getMaterialColorMask material_id 0
+N main.setMaterialColorMode material_id 0
+N main.setMaterialColorMode color_mode 1
+N main.getMaterialColorMode material_id 0
+N main.setMaterialDiffuseColor material_id 0
+N main.setMaterialDiffuseColor color 1
+N main.getMaterialDiffuseColor material_id 0
+N main.setMaterialEmissiveColor material_id 0
+N main.setMaterialEmissiveColor color 1
+N main.getMaterialEmissiveColor material_id 0
+N main.setMaterialFog material_id 0
+N main.setMaterialFog flag 1
+N main.getMaterialFog material_id 0
+N main.setMaterialFrontfaceCulling material_id 0
+N main.setMaterialFrontfaceCulling flag 1
+N main.getMaterialFrontfaceCulling material_id 0
+N main.setMaterialGouraudShading material_id 0
+N main.setMaterialGouraudShading flag 1
+N main.materialIsGouraudShaded material_id 0
+N main.materialIsAplhaBlend material_id 0
+N main.materialIsTransparent material_id 0
+N main.setMaterialLighting material_id 0
+N main.setMaterialLighting flag 1
+N main.materialIsLit material_id 0
+N main.setMaterialType material_id 0
+N main.setMaterialType mat_type 1
+N main.getMaterialType material_id 0
+N main.setMaterialNormalize material_id 0
+N main.setMaterialNormalize flag 1
+N main.materialIsNormalized material_id 0
+N main.setMaterialPointCloud material_id 0
+N main.setMaterialPointCloud flag 1
+N main.materialIsPointCloud material_id 0
+N main.setMaterialFlag material_id 0
+N main.setMaterialFlag material_flag 1
+N main.setMaterialFlag f_value 2
+N main.getMaterialFlag material_id 0
+N main.getMaterialFlag material_flag 1
+N main.setMaterialTexture material_id 0
+N main.setMaterialTexture level 1
+N main.setMaterialTexture img_id 2
+N main.setMaterialShininess material_id 0
+N main.setMaterialShininess shininess 1
+N main.getMaterialShininess material_id 0
+N main.setMaterialSpecularColor material_id 0
+N main.setMaterialSpecularColor color 1
+N main.getMaterialSpecularColor material_id 0
+N main.setMaterialThickness material_id 0
+N main.setMaterialThickness thickness 1
+N main.getMaterialThickness material_id 0
+N main.setMaterialWireframe material_id 0
+N main.setMaterialWireframe flag 1
+N main.materialIsWireframe material_id 0
+N main.setActorTexture actor 0
+N main.setActorTexture layer 1
+N main.setActorTexture image_id 2
+N main.getActorMaterialCount actor 0
+N main.setActorMaterialFlag actor 0
+N main.setActorMaterialFlag flag 1
+N main.setActorMaterialFlag flag_value 2
+N main.getActorMaterialFlag actor 0
+N main.getActorMaterialFlag material 1
+N main.getActorMaterialFlag flag 2
+N main.setActorMaterialType actor 0
+N main.setActorMaterialType material_type 1
+N main.getActorMaterialType actor 0
+N main.getActorMaterialType material 1
+N main.MaterialExists material 0
diff --git a/rcbasic_build/rcbasic4_changes.ods b/rcbasic_build/rcbasic4_changes.ods
index d4e13c5..171c948 100644
Binary files a/rcbasic_build/rcbasic4_changes.ods and b/rcbasic_build/rcbasic4_changes.ods differ
diff --git a/rcbasic_build/rcbasic4_changes_BACKUP_945829.ods b/rcbasic_build/rcbasic4_changes_BACKUP_945829.ods
new file mode 100644
index 0000000..d4e13c5
Binary files /dev/null and b/rcbasic_build/rcbasic4_changes_BACKUP_945829.ods differ
diff --git a/rcbasic_build/rcbasic4_changes_BASE_945829.ods b/rcbasic_build/rcbasic4_changes_BASE_945829.ods
new file mode 100644
index 0000000..5847fcb
Binary files /dev/null and b/rcbasic_build/rcbasic4_changes_BASE_945829.ods differ
diff --git a/rcbasic_build/rcbasic4_changes_LOCAL_945829.ods b/rcbasic_build/rcbasic4_changes_LOCAL_945829.ods
new file mode 100644
index 0000000..d4e13c5
Binary files /dev/null and b/rcbasic_build/rcbasic4_changes_LOCAL_945829.ods differ
diff --git a/rcbasic_build/rcbasic4_changes_REMOTE_945829.ods b/rcbasic_build/rcbasic4_changes_REMOTE_945829.ods
new file mode 100644
index 0000000..bccdf7a
Binary files /dev/null and b/rcbasic_build/rcbasic4_changes_REMOTE_945829.ods differ
diff --git a/rcbasic_build/rcbasic_build.depend b/rcbasic_build/rcbasic_build.depend
index f5ee0e8..08d6280 100755
--- a/rcbasic_build/rcbasic_build.depend
+++ b/rcbasic_build/rcbasic_build.depend
@@ -1,5 +1,5 @@
# depslib dependency file v1.0
-1726847571 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp
+1728937556 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp
@@ -14,7 +14,7 @@
"env_resolve.h"
"identifier.h"
-1726839554 /home/n00b/Projects/RCBASIC4/rcbasic_build/tokenizer.h
+1729346052 /home/n00b/Projects/RCBASIC4/rcbasic_build/tokenizer.h
@@ -25,39 +25,39 @@
"keywords.h"
"constants.h"
-1726346351 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_utility.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_utility.h
-1714359665 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_debug.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_debug.h
-1714359665 /home/n00b/Projects/RCBASIC4/rcbasic_build/keywords.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/keywords.h
-1714359665 /home/n00b/Projects/RCBASIC4/rcbasic_build/constants.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/constants.h
-1726801277 /home/n00b/Projects/RCBASIC4/rcbasic_build/parser.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/parser.h
"tokenizer.h"
"identifier.h"
"rc_global.h"
"constants.h"
-1726623560 /home/n00b/Projects/RCBASIC4/rcbasic_build/identifier.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/identifier.h
"rc_global.h"
"rc_utility.h"
"rc_debug.h"
-1714359717 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_global.h
-1726536916 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h
+1729467369 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_builtin.h
"identifier.h"
-1726620092 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/rc_vm_asm.h
@@ -66,7 +66,7 @@
-1714359665 /home/n00b/Projects/RCBASIC4/rcbasic_build/file_directory.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/file_directory.h
@@ -77,7 +77,7 @@
-1714359665 /home/n00b/Projects/RCBASIC4/rcbasic_build/env_resolve.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_build/env_resolve.h
diff --git a/rcbasic_build/rcbasic_dev.txt b/rcbasic_build/rcbasic_dev.txt
index 3b882ba..ffa494d 100644
--- a/rcbasic_build/rcbasic_dev.txt
+++ b/rcbasic_build/rcbasic_dev.txt
@@ -513,8 +513,6 @@ embed_function("SetCanvasPhysics2D", ID_TYPE_SUB);
add_embedded_arg("c_num", ID_TYPE_NUM);
add_embedded_arg("state", ID_TYPE_NUM);
embed_function("OpenCanvasSpriteLayer", ID_TYPE_FN_NUM);
-add_embedded_arg("w", ID_TYPE_NUM);
-add_embedded_arg("h", ID_TYPE_NUM);
add_embedded_arg("viewport_x", ID_TYPE_NUM);
add_embedded_arg("viewport_y", ID_TYPE_NUM);
add_embedded_arg("viewport_w", ID_TYPE_NUM);
@@ -1398,6 +1396,408 @@ add_embedded_arg("sprite", ID_TYPE_NUM);
embed_function("DeleteSpriteAnimation", ID_TYPE_SUB);
add_embedded_arg("sprite", ID_TYPE_NUM);
add_embedded_arg("animation", ID_TYPE_NUM);
+embed_function("getSpriteCenter", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("setSpriteLinearVelocity", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+embed_function("getSpriteLinearVelocity", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("setSpriteAngularVelocity", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("av", ID_TYPE_NUM);
+embed_function("getSpriteAngularVelocity", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("applySpriteForce", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("fX", ID_TYPE_NUM);
+add_embedded_arg("fY", ID_TYPE_NUM);
+add_embedded_arg("pX", ID_TYPE_NUM);
+add_embedded_arg("pY", ID_TYPE_NUM);
+embed_function("applySpriteCentralForce", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+embed_function("applySpriteTorque", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("torque", ID_TYPE_NUM);
+embed_function("applySpriteLinearImpulse", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("iX", ID_TYPE_NUM);
+add_embedded_arg("iY", ID_TYPE_NUM);
+add_embedded_arg("pX", ID_TYPE_NUM);
+add_embedded_arg("pY", ID_TYPE_NUM);
+embed_function("applySpriteAngularImpulse", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("impulse", ID_TYPE_NUM);
+embed_function("getSpriteMass", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("getSpriteInertia", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("getSpriteWorldPoint", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("lX", ID_TYPE_NUM);
+add_embedded_arg("lY", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getSpriteWorldVector", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("lX", ID_TYPE_NUM);
+add_embedded_arg("lY", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getSpriteLocalPoint", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("wX", ID_TYPE_NUM);
+add_embedded_arg("wY", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getSpriteLocalVector", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("wX", ID_TYPE_NUM);
+add_embedded_arg("wY", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getSpriteLinearVelocityFromLocalPoint", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("pX", ID_TYPE_NUM);
+add_embedded_arg("pY", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getSpriteLinearVelocityFromWorldPoint", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("wX", ID_TYPE_NUM);
+add_embedded_arg("wY", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getSpriteLinearDamping", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("setSpriteLinearDamping", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("linearDamping", ID_TYPE_NUM);
+embed_function("getSpriteAngularDamping", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("setSpriteAngularDamping", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("angularDamping", ID_TYPE_NUM);
+embed_function("getSpriteGravityScale", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("setSpriteGravityScale", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("g_scale", ID_TYPE_NUM);
+embed_function("setSpriteBullet", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("flag", ID_TYPE_NUM);
+embed_function("spriteIsBullet", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("setSpriteSleepAllowed", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("flag", ID_TYPE_NUM);
+embed_function("spriteSleepAllowed", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("setSpriteAwake", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("flag", ID_TYPE_NUM);
+embed_function("spriteIsAwake", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("setSpriteFixedRotation", ID_TYPE_SUB);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+add_embedded_arg("flag", ID_TYPE_NUM);
+embed_function("spriteIsFixedRotation", ID_TYPE_FN_NUM);
+add_embedded_arg("spr_id", ID_TYPE_NUM);
+embed_function("createDistanceJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("spriteA", ID_TYPE_NUM);
+add_embedded_arg("spriteB", ID_TYPE_NUM);
+add_embedded_arg("aX", ID_TYPE_NUM);
+add_embedded_arg("aY", ID_TYPE_NUM);
+add_embedded_arg("bX", ID_TYPE_NUM);
+add_embedded_arg("bY", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("createFrictionJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("spriteA", ID_TYPE_NUM);
+add_embedded_arg("spriteB", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("createGearJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("jointA", ID_TYPE_NUM);
+add_embedded_arg("jointB", ID_TYPE_NUM);
+add_embedded_arg("g_ratio", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("createMotorJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("spriteA", ID_TYPE_NUM);
+add_embedded_arg("spriteB", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("createPrismaticJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("spriteA", ID_TYPE_NUM);
+add_embedded_arg("spriteB", ID_TYPE_NUM);
+add_embedded_arg("aX", ID_TYPE_NUM);
+add_embedded_arg("aY", ID_TYPE_NUM);
+add_embedded_arg("axisX", ID_TYPE_NUM);
+add_embedded_arg("axisY", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("createPulleyJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("spriteA", ID_TYPE_NUM);
+add_embedded_arg("spriteB", ID_TYPE_NUM);
+add_embedded_arg("gaX", ID_TYPE_NUM);
+add_embedded_arg("gaY", ID_TYPE_NUM);
+add_embedded_arg("gbX", ID_TYPE_NUM);
+add_embedded_arg("gbY", ID_TYPE_NUM);
+add_embedded_arg("aX", ID_TYPE_NUM);
+add_embedded_arg("aY", ID_TYPE_NUM);
+add_embedded_arg("bX", ID_TYPE_NUM);
+add_embedded_arg("bY", ID_TYPE_NUM);
+add_embedded_arg("j_ratio", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("createRevoluteJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("spriteA", ID_TYPE_NUM);
+add_embedded_arg("spriteB", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("createWeldJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("spriteA", ID_TYPE_NUM);
+add_embedded_arg("spriteB", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("createWheelJoint", ID_TYPE_FN_NUM);
+add_embedded_arg("spriteA", ID_TYPE_NUM);
+add_embedded_arg("spriteB", ID_TYPE_NUM);
+add_embedded_arg("aX", ID_TYPE_NUM);
+add_embedded_arg("aY", ID_TYPE_NUM);
+add_embedded_arg("axisX", ID_TYPE_NUM);
+add_embedded_arg("axisY", ID_TYPE_NUM);
+add_embedded_arg("collide_connect", ID_TYPE_NUM);
+embed_function("getJointWorldAnchorA", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getJointWorldAnchorB", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getJointReactionForce", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("inv_dt", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getJointReactionTorque", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("inv_dt", ID_TYPE_NUM);
+embed_function("getJointLocalAnchorA", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getJointLocalAnchorB", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("setJointLength", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("jlen", ID_TYPE_NUM);
+embed_function("getJointLength", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointMinLength", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("jlen", ID_TYPE_NUM);
+embed_function("getJointMinLength", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointMaxLength", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("jlen", ID_TYPE_NUM);
+embed_function("getJointMaxLength", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointCurrentLength", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointStiffness", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("stiffness", ID_TYPE_NUM);
+embed_function("getJointStiffness", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointDamping", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("damping", ID_TYPE_NUM);
+embed_function("getJointDamping", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointMaxForce", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("force", ID_TYPE_NUM);
+embed_function("getJointMaxForce", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointMaxTorque", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("torque", ID_TYPE_NUM);
+embed_function("getJointMaxTorque", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointCorrectionFactor", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("factor", ID_TYPE_NUM);
+embed_function("getJointCorrectionFactor", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointRatio", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("j_ratio", ID_TYPE_NUM);
+embed_function("getJointRatio", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointLinearOffset", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+embed_function("getJointLinearOffset", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("setJointAngularOffset", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("angleOffset", ID_TYPE_NUM);
+embed_function("getJointAngularOffset", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointLocalAxisA", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getJointReferenceAngle", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointTranslation", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointSpeed", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("jointIsLimitEnabled", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("enableJointLimit", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("flag", ID_TYPE_NUM);
+embed_function("getJointLowerLimit", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointUpperLimit", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointLimits", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("lower_limit", ID_TYPE_NUM);
+add_embedded_arg("upper_limit", ID_TYPE_NUM);
+embed_function("jointMotorIsEnabled", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("enableJointMotor", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("flag", ID_TYPE_NUM);
+embed_function("setJointMotorSpeed", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("speed", ID_TYPE_NUM);
+embed_function("getJointMotorSpeed", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointMaxMotorForce", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("force", ID_TYPE_NUM);
+embed_function("getJointMaxMotorForce", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointMotorForce", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("inv_dt", ID_TYPE_NUM);
+embed_function("setJointMaxMotorTorque", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("torque", ID_TYPE_NUM);
+embed_function("getJointMaxMotorTorque", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointMotorTorque", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("inv_dt", ID_TYPE_NUM);
+embed_function("getJointGroundAnchorA", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getJointGroundAnchorB", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_BYREF_NUM);
+add_embedded_arg("y", ID_TYPE_BYREF_NUM);
+embed_function("getJointLengthA", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointLengthB", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointCurrentLengthA", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointCurrentLengthB", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("setJointOrigin", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+embed_function("getJointAngle", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointLinearSpeed", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("getJointAngularSpeed", ID_TYPE_FN_NUM);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("DeleteJoint", ID_TYPE_SUB);
+add_embedded_arg("joint_id", ID_TYPE_NUM);
+embed_function("CreateTileSet", ID_TYPE_FN_NUM);
+add_embedded_arg("img_id", ID_TYPE_NUM);
+add_embedded_arg("tile_w", ID_TYPE_NUM);
+add_embedded_arg("tile_h", ID_TYPE_NUM);
+embed_function("SetTileAnimationLength", ID_TYPE_SUB);
+add_embedded_arg("tileset", ID_TYPE_NUM);
+add_embedded_arg("base_tile", ID_TYPE_NUM);
+add_embedded_arg("num_frames", ID_TYPE_NUM);
+embed_function("GetTileAnimationLength", ID_TYPE_FN_NUM);
+add_embedded_arg("tileset", ID_TYPE_NUM);
+add_embedded_arg("base_tile", ID_TYPE_NUM);
+embed_function("SetTileAnimationFrame", ID_TYPE_SUB);
+add_embedded_arg("tileset", ID_TYPE_NUM);
+add_embedded_arg("base_tile", ID_TYPE_NUM);
+add_embedded_arg("anim_frame", ID_TYPE_NUM);
+add_embedded_arg("tile_frame", ID_TYPE_NUM);
+embed_function("GetTileAnimationFrame", ID_TYPE_FN_NUM);
+add_embedded_arg("tileset", ID_TYPE_NUM);
+add_embedded_arg("base_tile", ID_TYPE_NUM);
+add_embedded_arg("anim_frame", ID_TYPE_NUM);
+embed_function("SetTileAnimationSpeed", ID_TYPE_SUB);
+add_embedded_arg("tileset", ID_TYPE_NUM);
+add_embedded_arg("base_tile", ID_TYPE_NUM);
+add_embedded_arg("speed", ID_TYPE_NUM);
+embed_function("GetTileAnimationSpeed", ID_TYPE_FN_NUM);
+add_embedded_arg("tileset", ID_TYPE_NUM);
+add_embedded_arg("base_tile", ID_TYPE_NUM);
+embed_function("CreateTileMap", ID_TYPE_FN_NUM);
+add_embedded_arg("tileset", ID_TYPE_NUM);
+add_embedded_arg("widthInTiles", ID_TYPE_NUM);
+add_embedded_arg("heightInTiles", ID_TYPE_NUM);
+embed_function("SetTileMapSize", ID_TYPE_SUB);
+add_embedded_arg("tilemap", ID_TYPE_NUM);
+add_embedded_arg("widthInTiles", ID_TYPE_NUM);
+add_embedded_arg("heightInTiles", ID_TYPE_NUM);
+embed_function("GetTileMapSize", ID_TYPE_SUB);
+add_embedded_arg("tilemap", ID_TYPE_NUM);
+add_embedded_arg("widthInTiles", ID_TYPE_BYREF_NUM);
+add_embedded_arg("heightInTiles", ID_TYPE_BYREF_NUM);
+embed_function("SetTile", ID_TYPE_SUB);
+add_embedded_arg("tilemap", ID_TYPE_NUM);
+add_embedded_arg("tile", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+embed_function("GetTile", ID_TYPE_FN_NUM);
+add_embedded_arg("tilemap", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+embed_function("FillTile", ID_TYPE_SUB);
+add_embedded_arg("tilemap", ID_TYPE_NUM);
+add_embedded_arg("tile", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+add_embedded_arg("widthInTiles", ID_TYPE_NUM);
+add_embedded_arg("heightInTiles", ID_TYPE_NUM);
+embed_function("DrawTileMap", ID_TYPE_SUB);
+add_embedded_arg("tilemap", ID_TYPE_NUM);
+add_embedded_arg("x", ID_TYPE_NUM);
+add_embedded_arg("y", ID_TYPE_NUM);
+add_embedded_arg("w", ID_TYPE_NUM);
+add_embedded_arg("h", ID_TYPE_NUM);
+add_embedded_arg("offset_x", ID_TYPE_NUM);
+add_embedded_arg("offset_y", ID_TYPE_NUM);
embed_function("LoadMesh", ID_TYPE_FN_NUM);
add_embedded_arg("mesh_file$", ID_TYPE_STR);
embed_function("DeleteMesh", ID_TYPE_SUB);
@@ -1519,6 +1919,55 @@ embed_function("RemoveActorShadow", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("ActorExists", ID_TYPE_FN_NUM);
add_embedded_arg("actor", ID_TYPE_NUM);
+embed_function("CreateActorAnimation", ID_TYPE_FN_NUM);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("start_frame", ID_TYPE_NUM);
+add_embedded_arg("end_frame", ID_TYPE_NUM);
+add_embedded_arg("speed", ID_TYPE_NUM);
+embed_function("SetActorAnimation", ID_TYPE_SUB);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("animation", ID_TYPE_NUM);
+add_embedded_arg("num_loops", ID_TYPE_NUM);
+embed_function("SetActorAnimationSpeed", ID_TYPE_SUB);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("animation", ID_TYPE_NUM);
+add_embedded_arg("speed", ID_TYPE_NUM);
+embed_function("SetActorAnimationFrames", ID_TYPE_SUB);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("animation", ID_TYPE_NUM);
+add_embedded_arg("start_frame", ID_TYPE_NUM);
+add_embedded_arg("end_frame", ID_TYPE_NUM);
+embed_function("GetActorCurrentAnimation", ID_TYPE_FN_NUM);
+add_embedded_arg("actor", ID_TYPE_NUM);
+embed_function("GetActorAnimationSpeed", ID_TYPE_FN_NUM);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("animation", ID_TYPE_NUM);
+embed_function("GetActorAnimationStartFrame", ID_TYPE_FN_NUM);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("animation", ID_TYPE_NUM);
+embed_function("GetActorAnimationEndFrame", ID_TYPE_FN_NUM);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("animation", ID_TYPE_NUM);
+embed_function("SetActorFrame", ID_TYPE_SUB);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("frame", ID_TYPE_NUM);
+embed_function("GetActorFrame", ID_TYPE_FN_NUM);
+add_embedded_arg("actor", ID_TYPE_NUM);
+embed_function("ActorAnimationIsPlaying", ID_TYPE_FN_NUM);
+add_embedded_arg("actor", ID_TYPE_NUM);
+embed_function("NumActorAnimationLoops", ID_TYPE_FN_NUM);
+add_embedded_arg("actor", ID_TYPE_NUM);
+embed_function("SetActorMD2Animation", ID_TYPE_SUB);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("anim", ID_TYPE_NUM);
+add_embedded_arg("num_loops", ID_TYPE_NUM);
+embed_function("SetActorMD2AnimationByName", ID_TYPE_SUB);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("anim_name$", ID_TYPE_STR);
+add_embedded_arg("num_loops", ID_TYPE_NUM);
+embed_function("DeleteActorAnimation", ID_TYPE_SUB);
+add_embedded_arg("actor", ID_TYPE_NUM);
+add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("SetGravity3D", ID_TYPE_SUB);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
@@ -1687,7 +2136,7 @@ embed_function("clearActorForces", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
embed_function("updateActorInertiaTensor", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
-embed_function("getActorCOMPosition", ID_TYPE_SUB);
+embed_function("getActorCenter", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_BYREF_NUM);
add_embedded_arg("y", ID_TYPE_BYREF_NUM);
@@ -1728,7 +2177,7 @@ add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("x", ID_TYPE_NUM);
add_embedded_arg("y", ID_TYPE_NUM);
add_embedded_arg("z", ID_TYPE_NUM);
-embed_function("getActorLocalPointVelocity", ID_TYPE_SUB);
+embed_function("getActorVelocityInLocalPoint", ID_TYPE_SUB);
add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("rel_x", ID_TYPE_NUM);
add_embedded_arg("rel_y", ID_TYPE_NUM);
@@ -2430,55 +2879,6 @@ add_embedded_arg("actor", ID_TYPE_NUM);
add_embedded_arg("patchX", ID_TYPE_NUM);
add_embedded_arg("patchZ", ID_TYPE_NUM);
add_embedded_arg("LOD", ID_TYPE_NUM);
-embed_function("CreateActorAnimation", ID_TYPE_FN_NUM);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("start_frame", ID_TYPE_NUM);
-add_embedded_arg("end_frame", ID_TYPE_NUM);
-add_embedded_arg("speed", ID_TYPE_NUM);
-embed_function("SetActorAnimation", ID_TYPE_SUB);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("animation", ID_TYPE_NUM);
-add_embedded_arg("num_loops", ID_TYPE_NUM);
-embed_function("SetActorAnimationSpeed", ID_TYPE_SUB);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("animation", ID_TYPE_NUM);
-add_embedded_arg("speed", ID_TYPE_NUM);
-embed_function("SetActorAnimationFrames", ID_TYPE_SUB);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("animation", ID_TYPE_NUM);
-add_embedded_arg("start_frame", ID_TYPE_NUM);
-add_embedded_arg("end_frame", ID_TYPE_NUM);
-embed_function("GetActorCurrentAnimation", ID_TYPE_FN_NUM);
-add_embedded_arg("actor", ID_TYPE_NUM);
-embed_function("GetActorAnimationSpeed", ID_TYPE_FN_NUM);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("animation", ID_TYPE_NUM);
-embed_function("GetActorAnimationStartFrame", ID_TYPE_FN_NUM);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("animation", ID_TYPE_NUM);
-embed_function("GetActorAnimationEndFrame", ID_TYPE_FN_NUM);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("animation", ID_TYPE_NUM);
-embed_function("SetActorFrame", ID_TYPE_SUB);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("frame", ID_TYPE_NUM);
-embed_function("GetActorFrame", ID_TYPE_FN_NUM);
-add_embedded_arg("actor", ID_TYPE_NUM);
-embed_function("ActorAnimationIsPlaying", ID_TYPE_FN_NUM);
-add_embedded_arg("actor", ID_TYPE_NUM);
-embed_function("NumActorAnimationLoops", ID_TYPE_FN_NUM);
-add_embedded_arg("actor", ID_TYPE_NUM);
-embed_function("SetActorMD2Animation", ID_TYPE_SUB);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("anim", ID_TYPE_NUM);
-add_embedded_arg("num_loops", ID_TYPE_NUM);
-embed_function("SetActorMD2AnimationByName", ID_TYPE_SUB);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("anim_name$", ID_TYPE_STR);
-add_embedded_arg("num_loops", ID_TYPE_NUM);
-embed_function("DeleteActorAnimation", ID_TYPE_SUB);
-add_embedded_arg("actor", ID_TYPE_NUM);
-add_embedded_arg("animation", ID_TYPE_NUM);
embed_function("createMaterial", ID_TYPE_FN_NUM);
embed_function("deleteMaterial", ID_TYPE_SUB);
add_embedded_arg("material_id", ID_TYPE_NUM);
diff --git a/rcbasic_build/rcbasic_dev2.txt b/rcbasic_build/rcbasic_dev2.txt
index 90ebc6a..4d1c12a 100644
--- a/rcbasic_build/rcbasic_dev2.txt
+++ b/rcbasic_build/rcbasic_dev2.txt
@@ -513,12 +513,10 @@
#define SETCANVASPHYSICS2D_C_NUM num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCANVASPHYSICS2D_STATE num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define FN_OpenCanvasSpriteLayer 197
-#define OPENCANVASSPRITELAYER_W num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define OPENCANVASSPRITELAYER_H num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define OPENCANVASSPRITELAYER_VIEWPORT_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define OPENCANVASSPRITELAYER_VIEWPORT_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define OPENCANVASSPRITELAYER_VIEWPORT_W num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define OPENCANVASSPRITELAYER_VIEWPORT_H num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define OPENCANVASSPRITELAYER_VIEWPORT_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define OPENCANVASSPRITELAYER_VIEWPORT_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define OPENCANVASSPRITELAYER_VIEWPORT_W num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define OPENCANVASSPRITELAYER_VIEWPORT_H num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define FN_Circle 198
#define CIRCLE_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CIRCLE_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
@@ -1398,12 +1396,414 @@
#define FN_DeleteSpriteAnimation 489
#define DELETESPRITEANIMATION_SPRITE num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define DELETESPRITEANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_LoadMesh 490
+#define FN_getSpriteCenter 490
+#define GETSPRITECENTER_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITECENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITECENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_setSpriteLinearVelocity 491
+#define SETSPRITELINEARVELOCITY_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITELINEARVELOCITY_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETSPRITELINEARVELOCITY_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getSpriteLinearVelocity 492
+#define GETSPRITELINEARVELOCITY_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELINEARVELOCITY_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELINEARVELOCITY_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_setSpriteAngularVelocity 493
+#define SETSPRITEANGULARVELOCITY_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEANGULARVELOCITY_AV num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getSpriteAngularVelocity 494
+#define GETSPRITEANGULARVELOCITY_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_applySpriteForce 495
+#define APPLYSPRITEFORCE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITEFORCE_FX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define APPLYSPRITEFORCE_FY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define APPLYSPRITEFORCE_PX num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define APPLYSPRITEFORCE_PY num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_applySpriteCentralForce 496
+#define APPLYSPRITECENTRALFORCE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITECENTRALFORCE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define APPLYSPRITECENTRALFORCE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_applySpriteTorque 497
+#define APPLYSPRITETORQUE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITETORQUE_TORQUE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_applySpriteLinearImpulse 498
+#define APPLYSPRITELINEARIMPULSE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITELINEARIMPULSE_IX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define APPLYSPRITELINEARIMPULSE_IY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define APPLYSPRITELINEARIMPULSE_PX num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define APPLYSPRITELINEARIMPULSE_PY num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_applySpriteAngularImpulse 499
+#define APPLYSPRITEANGULARIMPULSE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITEANGULARIMPULSE_IMPULSE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getSpriteMass 500
+#define GETSPRITEMASS_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getSpriteInertia 501
+#define GETSPRITEINERTIA_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getSpriteWorldPoint 502
+#define GETSPRITEWORLDPOINT_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITEWORLDPOINT_LX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITEWORLDPOINT_LY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITEWORLDPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITEWORLDPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteWorldVector 503
+#define GETSPRITEWORLDVECTOR_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITEWORLDVECTOR_LX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITEWORLDVECTOR_LY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITEWORLDVECTOR_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITEWORLDVECTOR_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLocalPoint 504
+#define GETSPRITELOCALPOINT_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELOCALPOINT_WX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELOCALPOINT_WY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITELOCALPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITELOCALPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLocalVector 505
+#define GETSPRITELOCALVECTOR_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELOCALVECTOR_WX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELOCALVECTOR_WY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITELOCALVECTOR_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITELOCALVECTOR_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLinearVelocityFromLocalPoint 506
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_PX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_PY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLinearVelocityFromWorldPoint 507
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_WX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_WY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLinearDamping 508
+#define GETSPRITELINEARDAMPING_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteLinearDamping 509
+#define SETSPRITELINEARDAMPING_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITELINEARDAMPING_LINEARDAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getSpriteAngularDamping 510
+#define GETSPRITEANGULARDAMPING_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteAngularDamping 511
+#define SETSPRITEANGULARDAMPING_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEANGULARDAMPING_ANGULARDAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getSpriteGravityScale 512
+#define GETSPRITEGRAVITYSCALE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteGravityScale 513
+#define SETSPRITEGRAVITYSCALE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEGRAVITYSCALE_G_SCALE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_setSpriteBullet 514
+#define SETSPRITEBULLET_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEBULLET_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_spriteIsBullet 515
+#define SPRITEISBULLET_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteSleepAllowed 516
+#define SETSPRITESLEEPALLOWED_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITESLEEPALLOWED_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_spriteSleepAllowed 517
+#define SPRITESLEEPALLOWED_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteAwake 518
+#define SETSPRITEAWAKE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEAWAKE_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_spriteIsAwake 519
+#define SPRITEISAWAKE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteFixedRotation 520
+#define SETSPRITEFIXEDROTATION_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEFIXEDROTATION_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_spriteIsFixedRotation 521
+#define SPRITEISFIXEDROTATION_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_createDistanceJoint 522
+#define CREATEDISTANCEJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEDISTANCEJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEDISTANCEJOINT_AX num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEDISTANCEJOINT_AY num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEDISTANCEJOINT_BX num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define CREATEDISTANCEJOINT_BY num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define CREATEDISTANCEJOINT_COLLIDE_CONNECT num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_createFrictionJoint 523
+#define CREATEFRICTIONJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEFRICTIONJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEFRICTIONJOINT_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEFRICTIONJOINT_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEFRICTIONJOINT_COLLIDE_CONNECT num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_createGearJoint 524
+#define CREATEGEARJOINT_JOINTA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEGEARJOINT_JOINTB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEGEARJOINT_G_RATIO num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEGEARJOINT_COLLIDE_CONNECT num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_createMotorJoint 525
+#define CREATEMOTORJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEMOTORJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEMOTORJOINT_COLLIDE_CONNECT num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_createPrismaticJoint 526
+#define CREATEPRISMATICJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEPRISMATICJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEPRISMATICJOINT_AX num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEPRISMATICJOINT_AY num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEPRISMATICJOINT_AXISX num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define CREATEPRISMATICJOINT_AXISY num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define CREATEPRISMATICJOINT_COLLIDE_CONNECT num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_createPulleyJoint 527
+#define CREATEPULLEYJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEPULLEYJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEPULLEYJOINT_GAX num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEPULLEYJOINT_GAY num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEPULLEYJOINT_GBX num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define CREATEPULLEYJOINT_GBY num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define CREATEPULLEYJOINT_AX num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define CREATEPULLEYJOINT_AY num_var[7].nref[0].value[ num_var[7].byref_offset ]
+#define CREATEPULLEYJOINT_BX num_var[8].nref[0].value[ num_var[8].byref_offset ]
+#define CREATEPULLEYJOINT_BY num_var[9].nref[0].value[ num_var[9].byref_offset ]
+#define CREATEPULLEYJOINT_J_RATIO num_var[10].nref[0].value[ num_var[10].byref_offset ]
+#define CREATEPULLEYJOINT_COLLIDE_CONNECT num_var[11].nref[0].value[ num_var[11].byref_offset ]
+#define FN_createRevoluteJoint 528
+#define CREATEREVOLUTEJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEREVOLUTEJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEREVOLUTEJOINT_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEREVOLUTEJOINT_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEREVOLUTEJOINT_COLLIDE_CONNECT num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_createWeldJoint 529
+#define CREATEWELDJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEWELDJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEWELDJOINT_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEWELDJOINT_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEWELDJOINT_COLLIDE_CONNECT num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_createWheelJoint 530
+#define CREATEWHEELJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEWHEELJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEWHEELJOINT_AX num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEWHEELJOINT_AY num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEWHEELJOINT_AXISX num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define CREATEWHEELJOINT_AXISY num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define CREATEWHEELJOINT_COLLIDE_CONNECT num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_getJointWorldAnchorA 531
+#define GETJOINTWORLDANCHORA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTWORLDANCHORA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTWORLDANCHORA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointWorldAnchorB 532
+#define GETJOINTWORLDANCHORB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTWORLDANCHORB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTWORLDANCHORB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointReactionForce 533
+#define GETJOINTREACTIONFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTREACTIONFORCE_INV_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTREACTIONFORCE_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETJOINTREACTIONFORCE_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_getJointReactionTorque 534
+#define GETJOINTREACTIONTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTREACTIONTORQUE_INV_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointLocalAnchorA 535
+#define GETJOINTLOCALANCHORA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTLOCALANCHORA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTLOCALANCHORA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointLocalAnchorB 536
+#define GETJOINTLOCALANCHORB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTLOCALANCHORB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTLOCALANCHORB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_setJointLength 537
+#define SETJOINTLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTLENGTH_JLEN num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointLength 538
+#define GETJOINTLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMinLength 539
+#define SETJOINTMINLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMINLENGTH_JLEN num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMinLength 540
+#define GETJOINTMINLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMaxLength 541
+#define SETJOINTMAXLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXLENGTH_JLEN num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxLength 542
+#define GETJOINTMAXLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointCurrentLength 543
+#define GETJOINTCURRENTLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointStiffness 544
+#define SETJOINTSTIFFNESS_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTSTIFFNESS_STIFFNESS num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointStiffness 545
+#define GETJOINTSTIFFNESS_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointDamping 546
+#define SETJOINTDAMPING_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTDAMPING_DAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointDamping 547
+#define GETJOINTDAMPING_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMaxForce 548
+#define SETJOINTMAXFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXFORCE_FORCE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxForce 549
+#define GETJOINTMAXFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMaxTorque 550
+#define SETJOINTMAXTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXTORQUE_TORQUE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxTorque 551
+#define GETJOINTMAXTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointCorrectionFactor 552
+#define SETJOINTCORRECTIONFACTOR_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTCORRECTIONFACTOR_FACTOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointCorrectionFactor 553
+#define GETJOINTCORRECTIONFACTOR_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointRatio 554
+#define SETJOINTRATIO_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTRATIO_J_RATIO num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointRatio 555
+#define GETJOINTRATIO_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointLinearOffset 556
+#define SETJOINTLINEAROFFSET_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTLINEAROFFSET_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETJOINTLINEAROFFSET_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointLinearOffset 557
+#define GETJOINTLINEAROFFSET_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTLINEAROFFSET_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTLINEAROFFSET_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_setJointAngularOffset 558
+#define SETJOINTANGULAROFFSET_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTANGULAROFFSET_ANGLEOFFSET num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointAngularOffset 559
+#define GETJOINTANGULAROFFSET_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointLocalAxisA 560
+#define GETJOINTLOCALAXISA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTLOCALAXISA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTLOCALAXISA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointReferenceAngle 561
+#define GETJOINTREFERENCEANGLE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointTranslation 562
+#define GETJOINTTRANSLATION_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointSpeed 563
+#define GETJOINTSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_jointIsLimitEnabled 564
+#define JOINTISLIMITENABLED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_enableJointLimit 565
+#define ENABLEJOINTLIMIT_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define ENABLEJOINTLIMIT_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointLowerLimit 566
+#define GETJOINTLOWERLIMIT_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointUpperLimit 567
+#define GETJOINTUPPERLIMIT_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointLimits 568
+#define SETJOINTLIMITS_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTLIMITS_LOWER_LIMIT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETJOINTLIMITS_UPPER_LIMIT num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_jointMotorIsEnabled 569
+#define JOINTMOTORISENABLED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_enableJointMotor 570
+#define ENABLEJOINTMOTOR_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define ENABLEJOINTMOTOR_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_setJointMotorSpeed 571
+#define SETJOINTMOTORSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMOTORSPEED_SPEED num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMotorSpeed 572
+#define GETJOINTMOTORSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMaxMotorForce 573
+#define SETJOINTMAXMOTORFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXMOTORFORCE_FORCE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxMotorForce 574
+#define GETJOINTMAXMOTORFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointMotorForce 575
+#define GETJOINTMOTORFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTMOTORFORCE_INV_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_setJointMaxMotorTorque 576
+#define SETJOINTMAXMOTORTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXMOTORTORQUE_TORQUE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxMotorTorque 577
+#define GETJOINTMAXMOTORTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointMotorTorque 578
+#define GETJOINTMOTORTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTMOTORTORQUE_INV_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointGroundAnchorA 579
+#define GETJOINTGROUNDANCHORA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTGROUNDANCHORA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTGROUNDANCHORA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointGroundAnchorB 580
+#define GETJOINTGROUNDANCHORB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTGROUNDANCHORB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTGROUNDANCHORB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointLengthA 581
+#define GETJOINTLENGTHA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointLengthB 582
+#define GETJOINTLENGTHB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointCurrentLengthA 583
+#define GETJOINTCURRENTLENGTHA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointCurrentLengthB 584
+#define GETJOINTCURRENTLENGTHB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointOrigin 585
+#define SETJOINTORIGIN_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTORIGIN_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETJOINTORIGIN_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointAngle 586
+#define GETJOINTANGLE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointLinearSpeed 587
+#define GETJOINTLINEARSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointAngularSpeed 588
+#define GETJOINTANGULARSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_DeleteJoint 589
+#define DELETEJOINT_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_CreateTileSet 590
+#define CREATETILESET_IMG_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATETILESET_TILE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATETILESET_TILE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetTileAnimationLength 591
+#define SETTILEANIMATIONLENGTH_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILEANIMATIONLENGTH_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILEANIMATIONLENGTH_NUM_FRAMES num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_GetTileAnimationLength 592
+#define GETTILEANIMATIONLENGTH_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILEANIMATIONLENGTH_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_SetTileAnimationFrame 593
+#define SETTILEANIMATIONFRAME_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILEANIMATIONFRAME_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILEANIMATIONFRAME_ANIM_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define SETTILEANIMATIONFRAME_TILE_FRAME num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_GetTileAnimationFrame 594
+#define GETTILEANIMATIONFRAME_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILEANIMATIONFRAME_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETTILEANIMATIONFRAME_ANIM_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetTileAnimationSpeed 595
+#define SETTILEANIMATIONSPEED_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILEANIMATIONSPEED_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILEANIMATIONSPEED_SPEED num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_GetTileAnimationSpeed 596
+#define GETTILEANIMATIONSPEED_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILEANIMATIONSPEED_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_CreateTileMap 597
+#define CREATETILEMAP_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATETILEMAP_WIDTHINTILES num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATETILEMAP_HEIGHTINTILES num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetTileMapSize 598
+#define SETTILEMAPSIZE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILEMAPSIZE_WIDTHINTILES num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILEMAPSIZE_HEIGHTINTILES num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_GetTileMapSize 599
+#define GETTILEMAPSIZE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILEMAPSIZE_WIDTHINTILES num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETTILEMAPSIZE_HEIGHTINTILES num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetTile 600
+#define SETTILE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILE_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define SETTILE_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_GetTile 601
+#define GETTILE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETTILE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_FillTile 602
+#define FILLTILE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FILLTILE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FILLTILE_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FILLTILE_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FILLTILE_WIDTHINTILES num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FILLTILE_HEIGHTINTILES num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define FN_DrawTileMap 603
+#define DRAWTILEMAP_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define DRAWTILEMAP_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define DRAWTILEMAP_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define DRAWTILEMAP_W num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define DRAWTILEMAP_H num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define DRAWTILEMAP_OFFSET_X num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define DRAWTILEMAP_OFFSET_Y num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_LoadMesh 604
#define LOADMESH_MESH_FILE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define FN_DeleteMesh 491
+#define FN_DeleteMesh 605
#define DELETEMESH_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateMesh 492
-#define FN_AddMeshBuffer 493
+#define FN_CreateMesh 606
+#define FN_AddMeshBuffer 607
#define ADDMESHBUFFER_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ADDMESHBUFFER_VERTEX_COUNT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ADDMESHBUFFER_VERTEX_DATA num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1411,227 +1811,276 @@
#define ADDMESHBUFFER_UV_DATA num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define ADDMESHBUFFER_INDEX_COUNT num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define ADDMESHBUFFER_INDEX_DATA num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_LoadMeshFromArchive 494
+#define FN_LoadMeshFromArchive 608
#define LOADMESHFROMARCHIVE_ARCHIVE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
#define LOADMESHFROMARCHIVE_MESH_FILE$ str_var[1].sref[0].value[ str_var[1].byref_offset ]
-#define FN_CreatePlaneMesh 495
+#define FN_CreatePlaneMesh 609
#define CREATEPLANEMESH_W num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEPLANEMESH_H num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEPLANEMESH_TILECOUNT_W num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATEPLANEMESH_TILECOUNT_H num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_LoadAN8 496
+#define FN_LoadAN8 610
#define LOADAN8_AN8_FILE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define FN_LoadMeshFromAN8 497
+#define FN_LoadMeshFromAN8 611
#define LOADMESHFROMAN8_AN8_PROJECT num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define LOADMESHFROMAN8_AN8_SCENE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define FN_GetNumAN8Scenes 498
+#define FN_GetNumAN8Scenes 612
#define GETNUMAN8SCENES_AN8_PROJECT num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetAN8SceneName$ 499
+#define FN_GetAN8SceneName$ 613
#define GETAN8SCENENAME$_AN8_PROJECT num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETAN8SCENENAME$_SCENE_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_CreateAnimatedActor 500
+#define FN_CreateAnimatedActor 614
#define CREATEANIMATEDACTOR_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateOctreeActor 501
+#define FN_CreateOctreeActor 615
#define CREATEOCTREEACTOR_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateCubeActor 502
+#define FN_CreateCubeActor 616
#define CREATECUBEACTOR_CUBE_SIZE num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateSphereActor 503
+#define FN_CreateSphereActor 617
#define CREATESPHEREACTOR_RADIUS num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateWaterActor 504
+#define FN_CreateWaterActor 618
#define CREATEWATERACTOR_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEWATERACTOR_WAVEHEIGHT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEWATERACTOR_WAVESPEED num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATEWATERACTOR_WAVELENGTH num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_CreateLightActor 505
-#define FN_CreateBillboardActor 506
-#define FN_CreateTerrainActor 507
+#define FN_CreateLightActor 619
+#define FN_CreateBillboardActor 620
+#define FN_CreateTerrainActor 621
#define CREATETERRAINACTOR_HMAP_FILE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define FN_CreateParticleActor 508
+#define FN_CreateParticleActor 622
#define CREATEPARTICLEACTOR_PARTICLE_TYPE num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_DeleteActor 509
+#define FN_DeleteActor 623
#define DELETEACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetActorTransform 510
+#define FN_GetActorTransform 624
#define GETACTORTRANSFORM_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORTRANSFORM_MATRIX num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetActorPosition 511
+#define FN_SetActorPosition 625
#define SETACTORPOSITION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORPOSITION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORPOSITION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORPOSITION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_TranslateActorLocal 512
+#define FN_TranslateActorLocal 626
#define TRANSLATEACTORLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define TRANSLATEACTORLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define TRANSLATEACTORLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define TRANSLATEACTORLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_TranslateActorWorld 513
+#define FN_TranslateActorWorld 627
#define TRANSLATEACTORWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define TRANSLATEACTORWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define TRANSLATEACTORWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define TRANSLATEACTORWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorPosition 514
+#define FN_GetActorPosition 628
#define GETACTORPOSITION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORPOSITION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORPOSITION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORPOSITION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorScale 515
+#define FN_SetActorScale 629
#define SETACTORSCALE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORSCALE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORSCALE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORSCALE_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_ScaleActor 516
+#define FN_ScaleActor 630
#define SCALEACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SCALEACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SCALEACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SCALEACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorScale 517
+#define FN_GetActorScale 631
#define GETACTORSCALE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORSCALE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORSCALE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORSCALE_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorRotation 518
+#define FN_SetActorRotation 632
#define SETACTORROTATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORROTATION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORROTATION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORROTATION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_RotateActor 519
+#define FN_RotateActor 633
#define ROTATEACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ROTATEACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ROTATEACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define ROTATEACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorRotation 520
+#define FN_GetActorRotation 634
#define GETACTORROTATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORROTATION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORROTATION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORROTATION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorVisible 521
+#define FN_SetActorVisible 635
#define SETACTORVISIBLE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORVISIBLE_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_ActorIsVisible 522
+#define FN_ActorIsVisible 636
#define ACTORISVISIBLE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetActorAutoCulling 523
+#define FN_SetActorAutoCulling 637
#define SETACTORAUTOCULLING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORAUTOCULLING_CULL_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetActorAutoCulling 524
+#define FN_GetActorAutoCulling 638
#define GETACTORAUTOCULLING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_AddActorShadow 525
+#define FN_AddActorShadow 639
#define ADDACTORSHADOW_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_RemoveActorShadow 526
+#define FN_RemoveActorShadow 640
#define REMOVEACTORSHADOW_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_ActorExists 527
+#define FN_ActorExists 641
#define ACTOREXISTS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetGravity3D 528
+#define FN_CreateActorAnimation 642
+#define CREATEACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEACTORANIMATION_START_FRAME num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEACTORANIMATION_END_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEACTORANIMATION_SPEED num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_SetActorAnimation 643
+#define SETACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETACTORANIMATION_NUM_LOOPS num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetActorAnimationSpeed 644
+#define SETACTORANIMATIONSPEED_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORANIMATIONSPEED_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETACTORANIMATIONSPEED_SPEED num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetActorAnimationFrames 645
+#define SETACTORANIMATIONFRAMES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORANIMATIONFRAMES_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETACTORANIMATIONFRAMES_START_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define SETACTORANIMATIONFRAMES_END_FRAME num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_GetActorCurrentAnimation 646
+#define GETACTORCURRENTANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_GetActorAnimationSpeed 647
+#define GETACTORANIMATIONSPEED_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORANIMATIONSPEED_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_GetActorAnimationStartFrame 648
+#define GETACTORANIMATIONSTARTFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORANIMATIONSTARTFRAME_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_GetActorAnimationEndFrame 649
+#define GETACTORANIMATIONENDFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORANIMATIONENDFRAME_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_SetActorFrame 650
+#define SETACTORFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORFRAME_FRAME num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_GetActorFrame 651
+#define GETACTORFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_ActorAnimationIsPlaying 652
+#define ACTORANIMATIONISPLAYING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_NumActorAnimationLoops 653
+#define NUMACTORANIMATIONLOOPS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_SetActorMD2Animation 654
+#define SETACTORMD2ANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORMD2ANIMATION_ANIM num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETACTORMD2ANIMATION_NUM_LOOPS num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetActorMD2AnimationByName 655
+#define SETACTORMD2ANIMATIONBYNAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
+#define SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_DeleteActorAnimation 656
+#define DELETEACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define DELETEACTORANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_SetGravity3D 657
#define SETGRAVITY3D_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETGRAVITY3D_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETGRAVITY3D_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetGravity3D 529
+#define FN_GetGravity3D 658
#define GETGRAVITY3D_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETGRAVITY3D_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETGRAVITY3D_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetActorCollisionShape 530
+#define FN_SetActorCollisionShape 659
#define SETACTORCOLLISIONSHAPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORCOLLISIONSHAPE_SHAPE_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORCOLLISIONSHAPE_MASS num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetActorCollisionShape 531
+#define FN_GetActorCollisionShape 660
#define GETACTORCOLLISIONSHAPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetActorSolid 532
+#define FN_SetActorSolid 661
#define SETACTORSOLID_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORSOLID_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_ActorIsSolid 533
+#define FN_ActorIsSolid 662
#define ACTORISSOLID_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetActorCollision 534
+#define FN_GetActorCollision 663
#define GETACTORCOLLISION_ACTOR1 num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORCOLLISION_ACTOR2 num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetActorGravity 535
+#define FN_SetActorGravity 664
#define SETACTORGRAVITY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORGRAVITY_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORGRAVITY_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORGRAVITY_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorGravity 536
+#define FN_GetActorGravity 665
#define GETACTORGRAVITY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORGRAVITY_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORGRAVITY_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORGRAVITY_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorDamping 537
+#define FN_setActorDamping 666
#define SETACTORDAMPING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORDAMPING_LIN_DAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORDAMPING_ANG_DAMPING num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getActorLinearDamping 538
+#define FN_getActorLinearDamping 667
#define GETACTORLINEARDAMPING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getActorAngularDamping 539
+#define FN_getActorAngularDamping 668
#define GETACTORANGULARDAMPING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getActorLinearSleepThreshold 540
+#define FN_getActorLinearSleepThreshold 669
#define GETACTORLINEARSLEEPTHRESHOLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getActorAngularSleepThreshold 541
+#define FN_getActorAngularSleepThreshold 670
#define GETACTORANGULARSLEEPTHRESHOLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_applyActorDamping 542
+#define FN_applyActorDamping 671
#define APPLYACTORDAMPING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORDAMPING_TIMESTEP num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setActorMassProperties 543
+#define FN_setActorMassProperties 672
#define SETACTORMASSPROPERTIES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORMASSPROPERTIES_MASS num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORMASSPROPERTIES_INERTIA_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORMASSPROPERTIES_INERTIA_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define SETACTORMASSPROPERTIES_INERTIA_Z num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_getActorLinearFactor 544
+#define FN_getActorLinearFactor 673
#define GETACTORLINEARFACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORLINEARFACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORLINEARFACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORLINEARFACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorLinearFactor 545
+#define FN_setActorLinearFactor 674
#define SETACTORLINEARFACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORLINEARFACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORLINEARFACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORLINEARFACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorInverseMass 546
+#define FN_getActorInverseMass 675
#define GETACTORINVERSEMASS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_integrateActorVelocities 547
+#define FN_integrateActorVelocities 676
#define INTEGRATEACTORVELOCITIES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define INTEGRATEACTORVELOCITIES_V_STEP num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_applyActorCentralForceLocal 548
+#define FN_applyActorCentralForceLocal 677
#define APPLYACTORCENTRALFORCELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORCENTRALFORCELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORCENTRALFORCELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORCENTRALFORCELOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorCentralForceWorld 549
+#define FN_applyActorCentralForceWorld 678
#define APPLYACTORCENTRALFORCEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORCENTRALFORCEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORCENTRALFORCEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORCENTRALFORCEWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorTotalForce 550
+#define FN_getActorTotalForce 679
#define GETACTORTOTALFORCE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORTOTALFORCE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORTOTALFORCE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORTOTALFORCE_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorTotalTorque 551
+#define FN_getActorTotalTorque 680
#define GETACTORTOTALTORQUE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORTOTALTORQUE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORTOTALTORQUE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORTOTALTORQUE_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorInverseInertiaDiagLocal 552
+#define FN_getActorInverseInertiaDiagLocal 681
#define GETACTORINVERSEINERTIADIAGLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORINVERSEINERTIADIAGLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORINVERSEINERTIADIAGLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORINVERSEINERTIADIAGLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorInverseInertiaDiagLocal 553
+#define FN_setActorInverseInertiaDiagLocal 682
#define SETACTORINVERSEINERTIADIAGLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORINVERSEINERTIADIAGLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORINVERSEINERTIADIAGLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORINVERSEINERTIADIAGLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorSleepThresholds 554
+#define FN_setActorSleepThresholds 683
#define SETACTORSLEEPTHRESHOLDS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORSLEEPTHRESHOLDS_LINEAR num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORSLEEPTHRESHOLDS_ANGULAR num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_applyActorTorqueLocal 555
+#define FN_applyActorTorqueLocal 684
#define APPLYACTORTORQUELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORTORQUELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORTORQUELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORTORQUELOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorTorqueWorld 556
+#define FN_applyActorTorqueWorld 685
#define APPLYACTORTORQUEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORTORQUEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORTORQUEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORTORQUEWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorForceLocal 557
+#define FN_applyActorForceLocal 686
#define APPLYACTORFORCELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORFORCELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORFORCELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1639,7 +2088,7 @@
#define APPLYACTORFORCELOCAL_REL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define APPLYACTORFORCELOCAL_REL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define APPLYACTORFORCELOCAL_REL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_applyActorForceWorld 558
+#define FN_applyActorForceWorld 687
#define APPLYACTORFORCEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORFORCEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORFORCEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1647,27 +2096,27 @@
#define APPLYACTORFORCEWORLD_REL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define APPLYACTORFORCEWORLD_REL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define APPLYACTORFORCEWORLD_REL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_applyActorCentralImpulseLocal 559
+#define FN_applyActorCentralImpulseLocal 688
#define APPLYACTORCENTRALIMPULSELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORCENTRALIMPULSELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORCENTRALIMPULSELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORCENTRALIMPULSELOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorCentralImpulseWorld 560
+#define FN_applyActorCentralImpulseWorld 689
#define APPLYACTORCENTRALIMPULSEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORCENTRALIMPULSEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORCENTRALIMPULSEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORCENTRALIMPULSEWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorTorqueImpulseLocal 561
+#define FN_applyActorTorqueImpulseLocal 690
#define APPLYACTORTORQUEIMPULSELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORTORQUEIMPULSELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORTORQUEIMPULSELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORTORQUEIMPULSELOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorTorqueImpulseWorld 562
+#define FN_applyActorTorqueImpulseWorld 691
#define APPLYACTORTORQUEIMPULSEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORTORQUEIMPULSEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORTORQUEIMPULSEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORTORQUEIMPULSEWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorImpulseLocal 563
+#define FN_applyActorImpulseLocal 692
#define APPLYACTORIMPULSELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORIMPULSELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORIMPULSELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1675,7 +2124,7 @@
#define APPLYACTORIMPULSELOCAL_REL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define APPLYACTORIMPULSELOCAL_REL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define APPLYACTORIMPULSELOCAL_REL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_applyActorImpulseWorld 564
+#define FN_applyActorImpulseWorld 693
#define APPLYACTORIMPULSEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORIMPULSEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORIMPULSEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1683,70 +2132,70 @@
#define APPLYACTORIMPULSEWORLD_REL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define APPLYACTORIMPULSEWORLD_REL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define APPLYACTORIMPULSEWORLD_REL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_clearActorForces 565
+#define FN_clearActorForces 694
#define CLEARACTORFORCES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_updateActorInertiaTensor 566
+#define FN_updateActorInertiaTensor 695
#define UPDATEACTORINERTIATENSOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getActorCOMPosition 567
-#define GETACTORCOMPOSITION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORCOMPOSITION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define GETACTORCOMPOSITION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define GETACTORCOMPOSITION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorRotationQ 568
+#define FN_getActorCenter 696
+#define GETACTORCENTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORCENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETACTORCENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETACTORCENTER_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_getActorRotationQ 697
#define GETACTORROTATIONQ_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORROTATIONQ_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORROTATIONQ_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORROTATIONQ_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define GETACTORROTATIONQ_W num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_getActorLinearVelocityWorld 569
+#define FN_getActorLinearVelocityWorld 698
#define GETACTORLINEARVELOCITYWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORLINEARVELOCITYWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORLINEARVELOCITYWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORLINEARVELOCITYWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorAngularVelocityWorld 570
+#define FN_getActorAngularVelocityWorld 699
#define GETACTORANGULARVELOCITYWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORANGULARVELOCITYWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORANGULARVELOCITYWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORANGULARVELOCITYWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorLinearVelocityLocal 571
+#define FN_setActorLinearVelocityLocal 700
#define SETACTORLINEARVELOCITYLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORLINEARVELOCITYLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORLINEARVELOCITYLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORLINEARVELOCITYLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorLinearVelocityWorld 572
+#define FN_setActorLinearVelocityWorld 701
#define SETACTORLINEARVELOCITYWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORLINEARVELOCITYWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORLINEARVELOCITYWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORLINEARVELOCITYWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorAngularVelocityLocal 573
+#define FN_setActorAngularVelocityLocal 702
#define SETACTORANGULARVELOCITYLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORANGULARVELOCITYLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORANGULARVELOCITYLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORANGULARVELOCITYLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorAngularVelocityWorld 574
+#define FN_setActorAngularVelocityWorld 703
#define SETACTORANGULARVELOCITYWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORANGULARVELOCITYWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORANGULARVELOCITYWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORANGULARVELOCITYWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorLocalPointVelocity 575
-#define GETACTORLOCALPOINTVELOCITY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_REL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_REL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_REL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_getActorLinearVelocityLocal 576
+#define FN_getActorVelocityInLocalPoint 704
+#define GETACTORVELOCITYINLOCALPOINT_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_REL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_REL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_REL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_getActorLinearVelocityLocal 705
#define GETACTORLINEARVELOCITYLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORLINEARVELOCITYLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORLINEARVELOCITYLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORLINEARVELOCITYLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorAngularVelocityLocal 577
+#define FN_getActorAngularVelocityLocal 706
#define GETACTORANGULARVELOCITYLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORANGULARVELOCITYLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORANGULARVELOCITYLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORANGULARVELOCITYLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorAABB 578
+#define FN_getActorAABB 707
#define GETACTORAABB_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORAABB_MIN_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORAABB_MIN_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1754,7 +2203,7 @@
#define GETACTORAABB_MAX_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETACTORAABB_MAX_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define GETACTORAABB_MAX_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_computeActorImpulseDenominator 579
+#define FN_computeActorImpulseDenominator 708
#define COMPUTEACTORIMPULSEDENOMINATOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COMPUTEACTORIMPULSEDENOMINATOR_POS_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define COMPUTEACTORIMPULSEDENOMINATOR_POS_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1762,47 +2211,47 @@
#define COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_computeActorAngularImpulseDenominator 580
+#define FN_computeActorAngularImpulseDenominator 709
#define COMPUTEACTORANGULARIMPULSEDENOMINATOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COMPUTEACTORANGULARIMPULSEDENOMINATOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define COMPUTEACTORANGULARIMPULSEDENOMINATOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define COMPUTEACTORANGULARIMPULSEDENOMINATOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorAngularFactor 581
+#define FN_setActorAngularFactor 710
#define SETACTORANGULARFACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORANGULARFACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORANGULARFACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORANGULARFACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorAngularFactor 582
+#define FN_getActorAngularFactor 711
#define GETACTORANGULARFACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORANGULARFACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORANGULARFACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORANGULARFACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_computeActorGyroImpulseLocal 583
+#define FN_computeActorGyroImpulseLocal 712
#define COMPUTEACTORGYROIMPULSELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COMPUTEACTORGYROIMPULSELOCAL_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define COMPUTEACTORGYROIMPULSELOCAL_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define COMPUTEACTORGYROIMPULSELOCAL_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define COMPUTEACTORGYROIMPULSELOCAL_Z num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_computeActorGyroImpulseWorld 584
+#define FN_computeActorGyroImpulseWorld 713
#define COMPUTEACTORGYROIMPULSEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COMPUTEACTORGYROIMPULSEWORLD_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define COMPUTEACTORGYROIMPULSEWORLD_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define COMPUTEACTORGYROIMPULSEWORLD_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define COMPUTEACTORGYROIMPULSEWORLD_Z num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_getActorLocalInertia 585
+#define FN_getActorLocalInertia 714
#define GETACTORLOCALINERTIA_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORLOCALINERTIA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORLOCALINERTIA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORLOCALINERTIA_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorSleepState 586
+#define FN_SetActorSleepState 715
#define SETACTORSLEEPSTATE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORSLEEPSTATE_STATE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_createPointConstraint 587
+#define FN_createPointConstraint 716
#define CREATEPOINTCONSTRAINT_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEPOINTCONSTRAINT_PXA num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEPOINTCONSTRAINT_PYA num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATEPOINTCONSTRAINT_PZA num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_createPointConstraintEx 588
+#define FN_createPointConstraintEx 717
#define CREATEPOINTCONSTRAINTEX_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEPOINTCONSTRAINTEX_ACTORB num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEPOINTCONSTRAINTEX_PXA num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1811,47 +2260,47 @@
#define CREATEPOINTCONSTRAINTEX_PXB num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define CREATEPOINTCONSTRAINTEX_PYB num_var[6].nref[0].value[ num_var[6].byref_offset ]
#define CREATEPOINTCONSTRAINTEX_PZB num_var[7].nref[0].value[ num_var[7].byref_offset ]
-#define FN_setPointPivotA 589
+#define FN_setPointPivotA 718
#define SETPOINTPIVOTA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPOINTPIVOTA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPOINTPIVOTA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPOINTPIVOTA_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setPointPivotB 590
+#define FN_setPointPivotB 719
#define SETPOINTPIVOTB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPOINTPIVOTB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPOINTPIVOTB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPOINTPIVOTB_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_createHingeConstraint 591
+#define FN_createHingeConstraint 720
#define CREATEHINGECONSTRAINT_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEHINGECONSTRAINT_FRAMEA num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEHINGECONSTRAINT_USEREFERENCEFRAMEA num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_createHingeConstraintEx 592
+#define FN_createHingeConstraintEx 721
#define CREATEHINGECONSTRAINTEX_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEHINGECONSTRAINTEX_ACTORB num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEHINGECONSTRAINTEX_FRAMEA num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATEHINGECONSTRAINTEX_FRAMEB num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define CREATEHINGECONSTRAINTEX_USEREFERENCEFRAMEA num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_createSlideConstraint 593
+#define FN_createSlideConstraint 722
#define CREATESLIDECONSTRAINT_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATESLIDECONSTRAINT_FRAMEINB_MATRIX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATESLIDECONSTRAINT_USELINEARREFERENCEFRAMEA num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_createSlideConstraintEx 594
+#define FN_createSlideConstraintEx 723
#define CREATESLIDECONSTRAINTEX_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATESLIDECONSTRAINTEX_ACTORB num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATESLIDECONSTRAINTEX_FRAMEINA_MATRIX num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATESLIDECONSTRAINTEX_FRAMEINB_MATRIX num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define CREATESLIDECONSTRAINTEX_USELINEARREFERENCEFRAMEA num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_createConeConstraint 595
+#define FN_createConeConstraint 724
#define CREATECONECONSTRAINT_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATECONECONSTRAINT_RBAFRAME_MATRIX num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_createConeConstraintEx 596
+#define FN_createConeConstraintEx 725
#define CREATECONECONSTRAINTEX_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATECONECONSTRAINTEX_ACTORB num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATECONECONSTRAINTEX_RBAFRAME_MATRIX num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATECONECONSTRAINTEX_RBBFRAME_MATRIX num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_deleteConstraint 597
+#define FN_deleteConstraint 726
#define DELETECONSTRAINT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintFrameOffsetA 598
+#define FN_getConstraintFrameOffsetA 727
#define GETCONSTRAINTFRAMEOFFSETA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1859,7 +2308,7 @@
#define GETCONSTRAINTFRAMEOFFSETA_RX num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETA_RY num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETA_RZ num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_getConstraintFrameOffsetB 599
+#define FN_getConstraintFrameOffsetB 728
#define GETCONSTRAINTFRAMEOFFSETB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1867,43 +2316,43 @@
#define GETCONSTRAINTFRAMEOFFSETB_RX num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETB_RY num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETB_RZ num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_useConstraintFrameOffset 600
+#define FN_useConstraintFrameOffset 729
#define USECONSTRAINTFRAMEOFFSET_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USECONSTRAINTFRAMEOFFSET_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getHingeAngle 601
+#define FN_getHingeAngle 730
#define GETHINGEANGLE_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getHingeAngleEx 602
+#define FN_getHingeAngleEx 731
#define GETHINGEANGLEEX_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETHINGEANGLEEX_T_MATRIXA num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETHINGEANGLEEX_T_MATRIXB num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getConstraintBreakingImpulseThreshold 603
+#define FN_getConstraintBreakingImpulseThreshold 732
#define GETCONSTRAINTBREAKINGIMPULSETHRESHOLD_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintAFrame 604
+#define FN_getConstraintAFrame 733
#define GETCONSTRAINTAFRAME_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONSTRAINTAFRAME_MA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getConstraintBFrame 605
+#define FN_getConstraintBFrame 734
#define GETCONSTRAINTBFRAME_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONSTRAINTBFRAME_MA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setHingeAxis 606
+#define FN_setHingeAxis 735
#define SETHINGEAXIS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETHINGEAXIS_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETHINGEAXIS_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETHINGEAXIS_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setConstraintBreakingImpulseThreshold 607
+#define FN_setConstraintBreakingImpulseThreshold 736
#define SETCONSTRAINTBREAKINGIMPULSETHRESHOLD_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONSTRAINTBREAKINGIMPULSETHRESHOLD_THRESHOLD num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setConstraintFrames 608
+#define FN_setConstraintFrames 737
#define SETCONSTRAINTFRAMES_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONSTRAINTFRAMES_FRAMEA_MATRIX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETCONSTRAINTFRAMES_FRAMEB_MATRIX num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setHingeLimit 609
+#define FN_setHingeLimit 738
#define SETHINGELIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETHINGELIMIT_LOW num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETHINGELIMIT_HIGH num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETHINGELIMIT_SOFTNESS num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define SETHINGELIMIT_BIAS_FACTOR num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define SETHINGELIMIT_RELAXATION_FACTOR num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define FN_setConeLimit 610
+#define FN_setConeLimit 739
#define SETCONELIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONELIMIT_SWINGSPAN1 num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETCONELIMIT_SWINGSPAN2 num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1911,391 +2360,391 @@
#define SETCONELIMIT_SOFTNESS num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define SETCONELIMIT_BIAS_FACTOR num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define SETCONELIMIT_RELAXATION_FACTOR num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_getHingeLimitBiasFactor 611
+#define FN_getHingeLimitBiasFactor 740
#define GETHINGELIMITBIASFACTOR_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getHingeLimitRelaxationFactor 612
+#define FN_getHingeLimitRelaxationFactor 741
#define GETHINGELIMITRELAXATIONFACTOR_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getHingeLimitSign 613
+#define FN_getHingeLimitSign 742
#define GETHINGELIMITSIGN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getHingeSolveLimit 614
+#define FN_getHingeSolveLimit 743
#define GETHINGESOLVELIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_useHingeReferenceFrameA 615
+#define FN_useHingeReferenceFrameA 744
#define USEHINGEREFERENCEFRAMEA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USEHINGEREFERENCEFRAMEA_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getConstraintAppliedImpulse 616
+#define FN_getConstraintAppliedImpulse 745
#define GETCONSTRAINTAPPLIEDIMPULSE_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintFixedActor 617
+#define FN_getConstraintFixedActor 746
#define GETCONSTRAINTFIXEDACTOR_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getPointPivotA 618
+#define FN_getPointPivotA 747
#define GETPOINTPIVOTA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPOINTPIVOTA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPOINTPIVOTA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPOINTPIVOTA_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getPointPivotB 619
+#define FN_getPointPivotB 748
#define GETPOINTPIVOTB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPOINTPIVOTB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPOINTPIVOTB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPOINTPIVOTB_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getConstraintActorA 620
+#define FN_getConstraintActorA 749
#define GETCONSTRAINTACTORA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintActorB 621
+#define FN_getConstraintActorB 750
#define GETCONSTRAINTACTORB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setConstraintSolverIterations 622
+#define FN_setConstraintSolverIterations 751
#define SETCONSTRAINTSOLVERITERATIONS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONSTRAINTSOLVERITERATIONS_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getConeBiasFactor 623
+#define FN_getConeBiasFactor 752
#define GETCONEBIASFACTOR_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeDamping 624
+#define FN_getConeDamping 753
#define GETCONEDAMPING_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeFixThresh 625
+#define FN_getConeFixThresh 754
#define GETCONEFIXTHRESH_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeLimit 626
+#define FN_getConeLimit 755
#define GETCONELIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONELIMIT_LIMIT_INDEX num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getConstraintLimitSoftness 627
+#define FN_getConstraintLimitSoftness 756
#define GETCONSTRAINTLIMITSOFTNESS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintSolverIterations 628
+#define FN_getConstraintSolverIterations 757
#define GETCONSTRAINTSOLVERITERATIONS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeAnglePoint 629
+#define FN_getConeAnglePoint 758
#define GETCONEANGLEPOINT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONEANGLEPOINT_ANGLE num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCONEANGLEPOINT_C_LEN num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETCONEANGLEPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define GETCONEANGLEPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETCONEANGLEPOINT_Z num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define FN_getConstraintAngularOnly 630
+#define FN_getConstraintAngularOnly 759
#define GETCONSTRAINTANGULARONLY_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeSolveSwingLimit 631
+#define FN_getConeSolveSwingLimit 760
#define GETCONESOLVESWINGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeSolveTwistLimit 632
+#define FN_getConeSolveTwistLimit 761
#define GETCONESOLVETWISTLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeSwingSpan1 633
+#define FN_getConeSwingSpan1 762
#define GETCONESWINGSPAN1_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeSwingSpan2 634
+#define FN_getConeSwingSpan2 763
#define GETCONESWINGSPAN2_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeTwistAngle 635
+#define FN_getConeTwistAngle 764
#define GETCONETWISTANGLE_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeTwistLimitSign 636
+#define FN_getConeTwistLimitSign 765
#define GETCONETWISTLIMITSIGN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeTwistSpan 637
+#define FN_getConeTwistSpan 766
#define GETCONETWISTSPAN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setConstraintAngularOnly 638
+#define FN_setConstraintAngularOnly 767
#define SETCONSTRAINTANGULARONLY_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONSTRAINTANGULARONLY_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setConeDamping 639
+#define FN_setConeDamping 768
#define SETCONEDAMPING_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONEDAMPING_DAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setConeFixThresh 640
+#define FN_setConeFixThresh 769
#define SETCONEFIXTHRESH_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONEFIXTHRESH_FIXTHRESH num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getSlideAnchorA 641
+#define FN_getSlideAnchorA 770
#define GETSLIDEANCHORA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETSLIDEANCHORA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETSLIDEANCHORA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETSLIDEANCHORA_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getSlideAnchorB 642
+#define FN_getSlideAnchorB 771
#define GETSLIDEANCHORB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETSLIDEANCHORB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETSLIDEANCHORB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETSLIDEANCHORB_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getSlideAngDepth 643
+#define FN_getSlideAngDepth 772
#define GETSLIDEANGDEPTH_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideAngularPos 644
+#define FN_getSlideAngularPos 773
#define GETSLIDEANGULARPOS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingDirAng 645
+#define FN_getSlideDampingDirAng 774
#define GETSLIDEDAMPINGDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingDirLin 646
+#define FN_getSlideDampingDirLin 775
#define GETSLIDEDAMPINGDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingLimAng 647
+#define FN_getSlideDampingLimAng 776
#define GETSLIDEDAMPINGLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingLimLin 648
+#define FN_getSlideDampingLimLin 777
#define GETSLIDEDAMPINGLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingOrthoAng 649
+#define FN_getSlideDampingOrthoAng 778
#define GETSLIDEDAMPINGORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingOrthoLin 650
+#define FN_getSlideDampingOrthoLin 779
#define GETSLIDEDAMPINGORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideLinearPos 651
+#define FN_getSlideLinearPos 780
#define GETSLIDELINEARPOS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideLinDepth 652
+#define FN_getSlideLinDepth 781
#define GETSLIDELINDEPTH_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideLowerAngLimit 653
+#define FN_getSlideLowerAngLimit 782
#define GETSLIDELOWERANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideLowerLinLimit 654
+#define FN_getSlideLowerLinLimit 783
#define GETSLIDELOWERLINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionDirAng 655
+#define FN_getSlideRestitutionDirAng 784
#define GETSLIDERESTITUTIONDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionDirLin 656
+#define FN_getSlideRestitutionDirLin 785
#define GETSLIDERESTITUTIONDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionLimAng 657
+#define FN_getSlideRestitutionLimAng 786
#define GETSLIDERESTITUTIONLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionLimLin 658
+#define FN_getSlideRestitutionLimLin 787
#define GETSLIDERESTITUTIONLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionOrthoAng 659
+#define FN_getSlideRestitutionOrthoAng 788
#define GETSLIDERESTITUTIONORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionOrthoLin 660
+#define FN_getSlideRestitutionOrthoLin 789
#define GETSLIDERESTITUTIONORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessDirAng 661
+#define FN_getSlideSoftnessDirAng 790
#define GETSLIDESOFTNESSDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessDirLin 662
+#define FN_getSlideSoftnessDirLin 791
#define GETSLIDESOFTNESSDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessLimAng 663
+#define FN_getSlideSoftnessLimAng 792
#define GETSLIDESOFTNESSLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessLimLin 664
+#define FN_getSlideSoftnessLimLin 793
#define GETSLIDESOFTNESSLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessOrthoAng 665
+#define FN_getSlideSoftnessOrthoAng 794
#define GETSLIDESOFTNESSORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessOrthoLin 666
+#define FN_getSlideSoftnessOrthoLin 795
#define GETSLIDESOFTNESSORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSolveAngLimit 667
+#define FN_getSlideSolveAngLimit 796
#define GETSLIDESOLVEANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSolveLinLimit 668
+#define FN_getSlideSolveLinLimit 797
#define GETSLIDESOLVELINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideUpperAngLimit 669
+#define FN_getSlideUpperAngLimit 798
#define GETSLIDEUPPERANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideUpperLinLimit 670
+#define FN_getSlideUpperLinLimit 799
#define GETSLIDEUPPERLINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideUseFrameOffset 671
+#define FN_getSlideUseFrameOffset 800
#define GETSLIDEUSEFRAMEOFFSET_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setSlideDampingDirAng 672
+#define FN_setSlideDampingDirAng 801
#define SETSLIDEDAMPINGDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGDIRANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingDirLin 673
+#define FN_setSlideDampingDirLin 802
#define SETSLIDEDAMPINGDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGDIRLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingLimAng 674
+#define FN_setSlideDampingLimAng 803
#define SETSLIDEDAMPINGLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGLIMANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingLimLin 675
+#define FN_setSlideDampingLimLin 804
#define SETSLIDEDAMPINGLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGLIMLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingOrthoAng 676
+#define FN_setSlideDampingOrthoAng 805
#define SETSLIDEDAMPINGORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGORTHOANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingOrthoLin 677
+#define FN_setSlideDampingOrthoLin 806
#define SETSLIDEDAMPINGORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGORTHOLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideLowerAngLimit 678
+#define FN_setSlideLowerAngLimit 807
#define SETSLIDELOWERANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDELOWERANGLIMIT_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideLowerLinLimit 679
+#define FN_setSlideLowerLinLimit 808
#define SETSLIDELOWERLINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDELOWERLINLIMIT_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionDirAng 680
+#define FN_setSlideRestitutionDirAng 809
#define SETSLIDERESTITUTIONDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONDIRANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionDirLin 681
+#define FN_setSlideRestitutionDirLin 810
#define SETSLIDERESTITUTIONDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONDIRLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionLimAng 682
+#define FN_setSlideRestitutionLimAng 811
#define SETSLIDERESTITUTIONLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONLIMANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionLimLin 683
+#define FN_setSlideRestitutionLimLin 812
#define SETSLIDERESTITUTIONLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONLIMLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionOrthoAng 684
+#define FN_setSlideRestitutionOrthoAng 813
#define SETSLIDERESTITUTIONORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONORTHOANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionOrthoLin 685
+#define FN_setSlideRestitutionOrthoLin 814
#define SETSLIDERESTITUTIONORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONORTHOLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessDirAng 686
+#define FN_setSlideSoftnessDirAng 815
#define SETSLIDESOFTNESSDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSDIRANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessDirLin 687
+#define FN_setSlideSoftnessDirLin 816
#define SETSLIDESOFTNESSDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSDIRLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessLimAng 688
+#define FN_setSlideSoftnessLimAng 817
#define SETSLIDESOFTNESSLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSLIMANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessLimLin 689
+#define FN_setSlideSoftnessLimLin 818
#define SETSLIDESOFTNESSLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSLIMLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessOrthoAng 690
+#define FN_setSlideSoftnessOrthoAng 819
#define SETSLIDESOFTNESSORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSORTHOANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessOrthoLin 691
+#define FN_setSlideSoftnessOrthoLin 820
#define SETSLIDESOFTNESSORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSORTHOLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideUpperAngLimit 692
+#define FN_setSlideUpperAngLimit 821
#define SETSLIDEUPPERANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEUPPERANGLIMIT_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideUpperLinLimit 693
+#define FN_setSlideUpperLinLimit 822
#define SETSLIDEUPPERLINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEUPPERLINLIMIT_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_ConstraintExists 694
+#define FN_ConstraintExists 823
#define CONSTRAINTEXISTS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetCameraPosition 695
+#define FN_SetCameraPosition 824
#define SETCAMERAPOSITION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCAMERAPOSITION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETCAMERAPOSITION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetCameraPosition 696
+#define FN_GetCameraPosition 825
#define GETCAMERAPOSITION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCAMERAPOSITION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCAMERAPOSITION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_TranslateCamera 697
+#define FN_TranslateCamera 826
#define TRANSLATECAMERA_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define TRANSLATECAMERA_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define TRANSLATECAMERA_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetCameraRotation 698
+#define FN_SetCameraRotation 827
#define SETCAMERAROTATION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCAMERAROTATION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETCAMERAROTATION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetCameraRotation 699
+#define FN_GetCameraRotation 828
#define GETCAMERAROTATION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCAMERAROTATION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCAMERAROTATION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_RotateCamera 700
+#define FN_RotateCamera 829
#define ROTATECAMERA_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ROTATECAMERA_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ROTATECAMERA_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetCameraFOV 701
+#define FN_SetCameraFOV 830
#define SETCAMERAFOV_FOV num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetCameraFOV 702
-#define FN_SetCameraAspectRatio 703
+#define FN_GetCameraFOV 831
+#define FN_SetCameraAspectRatio 832
#define SETCAMERAASPECTRATIO_ASPECT num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetCameraAspectRatio 704
-#define FN_SetCameraFarValue 705
+#define FN_GetCameraAspectRatio 833
+#define FN_SetCameraFarValue 834
#define SETCAMERAFARVALUE_ZF num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetCameraFarValue 706
-#define FN_SetCameraNearValue 707
+#define FN_GetCameraFarValue 835
+#define FN_SetCameraNearValue 836
#define SETCAMERANEARVALUE_ZN num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetCameraNearValue 708
-#define FN_SetProjectionMatrix 709
+#define FN_GetCameraNearValue 837
+#define FN_SetProjectionMatrix 838
#define SETPROJECTIONMATRIX_MATA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPROJECTIONMATRIX_PROJECTION_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetProjectionMatrix 710
+#define FN_GetProjectionMatrix 839
#define GETPROJECTIONMATRIX_MATA num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetWorldToViewportPosition 711
+#define FN_GetWorldToViewportPosition 840
#define GETWORLDTOVIEWPORTPOSITION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETWORLDTOVIEWPORTPOSITION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETWORLDTOVIEWPORTPOSITION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETWORLDTOVIEWPORTPOSITION_VX num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define GETWORLDTOVIEWPORTPOSITION_VY num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_AddSceneSkyBox 712
+#define FN_AddSceneSkyBox 841
#define ADDSCENESKYBOX_IMG_TOP num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ADDSCENESKYBOX_IMG_BOTTOM num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ADDSCENESKYBOX_IMG_LEFT num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define ADDSCENESKYBOX_IMG_RIGHT num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define ADDSCENESKYBOX_IMG_FRONT num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define ADDSCENESKYBOX_IMG_BACK num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define FN_AddSceneSkyDome 713
+#define FN_AddSceneSkyDome 842
#define ADDSCENESKYDOME_IMG num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_AddSceneSkyDomeEx 714
+#define FN_AddSceneSkyDomeEx 843
#define ADDSCENESKYDOMEEX_IMG num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ADDSCENESKYDOMEEX_HORIRES num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ADDSCENESKYDOMEEX_VERTRES num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define ADDSCENESKYDOMEEX_TXPERCENTAGE num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define ADDSCENESKYDOMEEX_SPHEREPERCENTAGE num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define ADDSCENESKYDOMEEX_RADIUS num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define FN_RemoveSceneSky 715
-#define FN_SetWorld3DMaxSubSteps 716
+#define FN_RemoveSceneSky 844
+#define FN_SetWorld3DMaxSubSteps 845
#define SETWORLD3DMAXSUBSTEPS_STEPS num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetWorld3DTimeStep 717
+#define FN_SetWorld3DTimeStep 846
#define SETWORLD3DTIMESTEP_TS num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_startParticleEmitter 718
+#define FN_startParticleEmitter 847
#define STARTPARTICLEEMITTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_stopParticleEmitter 719
+#define FN_stopParticleEmitter 848
#define STOPPARTICLEEMITTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleDirection 720
+#define FN_setParticleDirection 849
#define SETPARTICLEDIRECTION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEDIRECTION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLEDIRECTION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPARTICLEDIRECTION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getParticleDirection 721
+#define FN_getParticleDirection 850
#define GETPARTICLEDIRECTION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLEDIRECTION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLEDIRECTION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPARTICLEDIRECTION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_useParticleEveryMeshVertex 722
+#define FN_useParticleEveryMeshVertex 851
#define USEPARTICLEEVERYMESHVERTEX_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USEPARTICLEEVERYMESHVERTEX_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_particleIsUsingEveryMeshVertex 723
+#define FN_particleIsUsingEveryMeshVertex 852
#define PARTICLEISUSINGEVERYMESHVERTEX_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleNormalDirectionMod 724
+#define FN_setParticleNormalDirectionMod 853
#define SETPARTICLENORMALDIRECTIONMOD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLENORMALDIRECTIONMOD_ND_MOD num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleNormalDirectionMod 725
+#define FN_getParticleNormalDirectionMod 854
#define GETPARTICLENORMALDIRECTIONMOD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_useParticleNormalDirection 726
+#define FN_useParticleNormalDirection 855
#define USEPARTICLENORMALDIRECTION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USEPARTICLENORMALDIRECTION_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_particleIsUsingNormalDirection 727
+#define FN_particleIsUsingNormalDirection 856
#define PARTICLEISUSINGNORMALDIRECTION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMesh 728
+#define FN_setParticleMesh 857
#define SETPARTICLEMESH_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMESH_MESH num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setMinParticlesPerSecond 729
+#define FN_setMinParticlesPerSecond 858
#define SETMINPARTICLESPERSECOND_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMINPARTICLESPERSECOND_MINPARTICLESPERSECOND num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMinParticlesPerSecond 730
+#define FN_getMinParticlesPerSecond 859
#define GETMINPARTICLESPERSECOND_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaxParticlesPerSecond 731
+#define FN_setMaxParticlesPerSecond 860
#define SETMAXPARTICLESPERSECOND_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMAXPARTICLESPERSECOND_MAXPARTICLESPERSECOND num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaxParticlesPerSecond 732
+#define FN_getMaxParticlesPerSecond 861
#define GETMAXPARTICLESPERSECOND_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMinStartColor 733
+#define FN_setParticleMinStartColor 862
#define SETPARTICLEMINSTARTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMINSTARTCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMinStartColor 734
+#define FN_getParticleMinStartColor 863
#define GETPARTICLEMINSTARTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMaxStartColor 735
+#define FN_setParticleMaxStartColor 864
#define SETPARTICLEMAXSTARTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMAXSTARTCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMaxStartColor 736
+#define FN_getParticleMaxStartColor 865
#define GETPARTICLEMAXSTARTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMinLife 737
+#define FN_setParticleMinLife 866
#define SETPARTICLEMINLIFE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMINLIFE_MINLIFE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMinLife 738
+#define FN_getParticleMinLife 867
#define GETPARTICLEMINLIFE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMaxLife 739
+#define FN_setParticleMaxLife 868
#define SETPARTICLEMAXLIFE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMAXLIFE_MAXLIFE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMaxLife 740
+#define FN_getParticleMaxLife 869
#define GETPARTICLEMAXLIFE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMaxAngle 741
+#define FN_setParticleMaxAngle 870
#define SETPARTICLEMAXANGLE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMAXANGLE_MAXANGLE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMaxAngle 742
+#define FN_getParticleMaxAngle 871
#define GETPARTICLEMAXANGLE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMinStartSize 743
+#define FN_setParticleMinStartSize 872
#define SETPARTICLEMINSTARTSIZE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMINSTARTSIZE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLEMINSTARTSIZE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getParticleMinStartSize 744
+#define FN_getParticleMinStartSize 873
#define GETPARTICLEMINSTARTSIZE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLEMINSTARTSIZE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLEMINSTARTSIZE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setParticleMaxStartSize 745
+#define FN_setParticleMaxStartSize 874
#define SETPARTICLEMAXSTARTSIZE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMAXSTARTSIZE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLEMAXSTARTSIZE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getParticleMaxStartSize 746
+#define FN_getParticleMaxStartSize 875
#define GETPARTICLEMAXSTARTSIZE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLEMAXSTARTSIZE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLEMAXSTARTSIZE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setParticleCenter 747
+#define FN_setParticleCenter 876
#define SETPARTICLECENTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLECENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLECENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPARTICLECENTER_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getParticleCenter 748
+#define FN_getParticleCenter 877
#define GETPARTICLECENTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLECENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLECENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPARTICLECENTER_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setParticleRadius 749
+#define FN_setParticleRadius 878
#define SETPARTICLERADIUS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLERADIUS_RADIUS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleRadius 750
+#define FN_getParticleRadius 879
#define GETPARTICLERADIUS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleRingThickness 751
+#define FN_setParticleRingThickness 880
#define SETPARTICLERINGTHICKNESS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLERINGTHICKNESS_RINGTHICKNESS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleRingThickness 752
+#define FN_getParticleRingThickness 881
#define GETPARTICLERINGTHICKNESS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleBox 753
+#define FN_setParticleBox 882
#define SETPARTICLEBOX_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEBOX_MIN_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLEBOX_MIN_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -2303,7 +2752,7 @@
#define SETPARTICLEBOX_MAX_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define SETPARTICLEBOX_MAX_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define SETPARTICLEBOX_MAX_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_getParticleBox 754
+#define FN_getParticleBox 883
#define GETPARTICLEBOX_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLEBOX_MIN_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLEBOX_MIN_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -2311,84 +2760,84 @@
#define GETPARTICLEBOX_MAX_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETPARTICLEBOX_MAX_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define GETPARTICLEBOX_MAX_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_setParticleNormal 755
+#define FN_setParticleNormal 884
#define SETPARTICLENORMAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLENORMAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLENORMAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPARTICLENORMAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getParticleNormal 756
+#define FN_getParticleNormal 885
#define GETPARTICLENORMAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLENORMAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLENORMAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPARTICLENORMAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setParticleLength 757
+#define FN_setParticleLength 886
#define SETPARTICLELENGTH_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLELENGTH_P_LEN num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleLength 758
+#define FN_getParticleLength 887
#define GETPARTICLELENGTH_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_useParticleOutlineOnly 759
+#define FN_useParticleOutlineOnly 888
#define USEPARTICLEOUTLINEONLY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USEPARTICLEOUTLINEONLY_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_particleIsUsingOutlineOnly 760
+#define FN_particleIsUsingOutlineOnly 889
#define PARTICLEISUSINGOUTLINEONLY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getParticleType 761
+#define FN_getParticleType 890
#define GETPARTICLETYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_lightIsCastingShadow 762
+#define FN_lightIsCastingShadow 891
#define LIGHTISCASTINGSHADOW_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getLightType 763
+#define FN_getLightType 892
#define GETLIGHTTYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getLightRadius 764
+#define FN_getLightRadius 893
#define GETLIGHTRADIUS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setLightType 765
+#define FN_setLightType 894
#define SETLIGHTTYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTTYPE_LIGHT_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setLightRadius 766
+#define FN_setLightRadius 895
#define SETLIGHTRADIUS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTRADIUS_RADIUS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setLightShadowCast 767
+#define FN_setLightShadowCast 896
#define SETLIGHTSHADOWCAST_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTSHADOWCAST_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetLightAmbientColor 768
+#define FN_SetLightAmbientColor 897
#define SETLIGHTAMBIENTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTAMBIENTCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightAmbientColor 769
+#define FN_GetLightAmbientColor 898
#define GETLIGHTAMBIENTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightAttenuation 770
+#define FN_SetLightAttenuation 899
#define SETLIGHTATTENUATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTATTENUATION_L_CONSTANT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETLIGHTATTENUATION_L_LINEAR num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETLIGHTATTENUATION_L_QUADRATIC num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetLightAttenuation 771
+#define FN_GetLightAttenuation 900
#define GETLIGHTATTENUATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETLIGHTATTENUATION_CONSTANT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETLIGHTATTENUATION_LINEAR num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETLIGHTATTENUATION_QUADRATIC num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetLightDiffuseColor 772
+#define FN_SetLightDiffuseColor 901
#define SETLIGHTDIFFUSECOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTDIFFUSECOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightDiffuseColor 773
+#define FN_GetLightDiffuseColor 902
#define GETLIGHTDIFFUSECOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightFalloff 774
+#define FN_SetLightFalloff 903
#define SETLIGHTFALLOFF_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTFALLOFF_FALLOFF num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightFalloff 775
+#define FN_GetLightFalloff 904
#define GETLIGHTFALLOFF_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightInnerCone 776
+#define FN_SetLightInnerCone 905
#define SETLIGHTINNERCONE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTINNERCONE_ANGLE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightInnerCone 777
+#define FN_GetLightInnerCone 906
#define GETLIGHTINNERCONE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightOuterCone 778
+#define FN_SetLightOuterCone 907
#define SETLIGHTOUTERCONE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTOUTERCONE_ANGLE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightOuterCone 779
+#define FN_GetLightOuterCone 908
#define GETLIGHTOUTERCONE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightSpecularColor 780
+#define FN_SetLightSpecularColor 909
#define SETLIGHTSPECULARCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTSPECULARCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightSpecularColor 781
+#define FN_GetLightSpecularColor 910
#define GETLIGHTSPECULARCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetTerrainPatchAABB 782
+#define FN_GetTerrainPatchAABB 911
#define GETTERRAINPATCHAABB_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETTERRAINPATCHAABB_PATCHX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETTERRAINPATCHAABB_PATCHZ num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -2398,240 +2847,191 @@
#define GETTERRAINPATCHAABB_MAXX num_var[6].nref[0].value[ num_var[6].byref_offset ]
#define GETTERRAINPATCHAABB_MAXY num_var[7].nref[0].value[ num_var[7].byref_offset ]
#define GETTERRAINPATCHAABB_MAXZ num_var[8].nref[0].value[ num_var[8].byref_offset ]
-#define FN_GetTerrainPatchLOD 783
+#define FN_GetTerrainPatchLOD 912
#define GETTERRAINPATCHLOD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETTERRAINPATCHLOD_PATCHX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETTERRAINPATCHLOD_PATCHZ num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetTerrainHeight 784
+#define FN_GetTerrainHeight 913
#define GETTERRAINHEIGHT_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETTERRAINHEIGHT_PATCHX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETTERRAINHEIGHT_PATCHZ num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetTerrainCenter 785
+#define FN_GetTerrainCenter 914
#define GETTERRAINCENTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETTERRAINCENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETTERRAINCENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETTERRAINCENTER_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetTerrainLODDistance 786
+#define FN_SetTerrainLODDistance 915
#define SETTERRAINLODDISTANCE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETTERRAINLODDISTANCE_LOD num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETTERRAINLODDISTANCE_DISTANCE num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_ScaleTerrainTexture 787
+#define FN_ScaleTerrainTexture 916
#define SCALETERRAINTEXTURE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SCALETERRAINTEXTURE_SCALE num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SCALETERRAINTEXTURE_SCALE2 num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetTerrainCameraMovementDelta 788
+#define FN_SetTerrainCameraMovementDelta 917
#define SETTERRAINCAMERAMOVEMENTDELTA_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETTERRAINCAMERAMOVEMENTDELTA_DELTA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetTerrainCameraRotationDelta 789
+#define FN_SetTerrainCameraRotationDelta 918
#define SETTERRAINCAMERAROTATIONDELTA_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETTERRAINCAMERAROTATIONDELTA_DELTA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetTerrainPatchLOD 790
+#define FN_SetTerrainPatchLOD 919
#define SETTERRAINPATCHLOD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETTERRAINPATCHLOD_PATCHX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETTERRAINPATCHLOD_PATCHZ num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETTERRAINPATCHLOD_LOD num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_CreateActorAnimation 791
-#define CREATEACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define CREATEACTORANIMATION_START_FRAME num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define CREATEACTORANIMATION_END_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define CREATEACTORANIMATION_SPEED num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorAnimation 792
-#define SETACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define SETACTORANIMATION_NUM_LOOPS num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetActorAnimationSpeed 793
-#define SETACTORANIMATIONSPEED_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORANIMATIONSPEED_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define SETACTORANIMATIONSPEED_SPEED num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetActorAnimationFrames 794
-#define SETACTORANIMATIONFRAMES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORANIMATIONFRAMES_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define SETACTORANIMATIONFRAMES_START_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define SETACTORANIMATIONFRAMES_END_FRAME num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorCurrentAnimation 795
-#define GETACTORCURRENTANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetActorAnimationSpeed 796
-#define GETACTORANIMATIONSPEED_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORANIMATIONSPEED_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetActorAnimationStartFrame 797
-#define GETACTORANIMATIONSTARTFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORANIMATIONSTARTFRAME_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetActorAnimationEndFrame 798
-#define GETACTORANIMATIONENDFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORANIMATIONENDFRAME_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetActorFrame 799
-#define SETACTORFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORFRAME_FRAME num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetActorFrame 800
-#define GETACTORFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_ActorAnimationIsPlaying 801
-#define ACTORANIMATIONISPLAYING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_NumActorAnimationLoops 802
-#define NUMACTORANIMATIONLOOPS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetActorMD2Animation 803
-#define SETACTORMD2ANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORMD2ANIMATION_ANIM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define SETACTORMD2ANIMATION_NUM_LOOPS num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetActorMD2AnimationByName 804
-#define SETACTORMD2ANIMATIONBYNAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_DeleteActorAnimation 805
-#define DELETEACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define DELETEACTORANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_createMaterial 806
-#define FN_deleteMaterial 807
+#define FN_createMaterial 920
+#define FN_deleteMaterial 921
#define DELETEMATERIAL_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setActorMaterial 808
+#define FN_setActorMaterial 922
#define SETACTORMATERIAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORMATERIAL_MATERIAL_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORMATERIAL_MATERIAL_ID num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getActorMaterial 809
+#define FN_getActorMaterial 923
#define GETACTORMATERIAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORMATERIAL_MATERIAL_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_copyActorMaterial 810
+#define FN_copyActorMaterial 924
#define COPYACTORMATERIAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COPYACTORMATERIAL_MATERIAL_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_copyMaterial 811
+#define FN_copyMaterial 925
#define COPYMATERIAL_SMATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialTextureCanvas 812
+#define FN_setMaterialTextureCanvas 926
#define SETMATERIALTEXTURECANVAS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALTEXTURECANVAS_LEVEL num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETMATERIALTEXTURECANVAS_CANVAS_ID num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setMaterialAmbientColor 813
+#define FN_setMaterialAmbientColor 927
#define SETMATERIALAMBIENTCOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALAMBIENTCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialAmbientColor 814
+#define FN_getMaterialAmbientColor 928
#define GETMATERIALAMBIENTCOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialAntiAliasing 815
+#define FN_setMaterialAntiAliasing 929
#define SETMATERIALANTIALIASING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALANTIALIASING_AA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialAntiAliasing 816
+#define FN_getMaterialAntiAliasing 930
#define GETMATERIALANTIALIASING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialBackfaceCulling 817
+#define FN_setMaterialBackfaceCulling 931
#define SETMATERIALBACKFACECULLING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALBACKFACECULLING_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialBackfaceCulling 818
+#define FN_getMaterialBackfaceCulling 932
#define GETMATERIALBACKFACECULLING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialBlendFactor 819
+#define FN_setMaterialBlendFactor 933
#define SETMATERIALBLENDFACTOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALBLENDFACTOR_BF num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialBlendFactor 820
+#define FN_getMaterialBlendFactor 934
#define GETMATERIALBLENDFACTOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialBlendMode 821
+#define FN_setMaterialBlendMode 935
#define SETMATERIALBLENDMODE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALBLENDMODE_BLEND_MODE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialBlendMode 822
+#define FN_getMaterialBlendMode 936
#define GETMATERIALBLENDMODE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialColorMask 823
+#define FN_setMaterialColorMask 937
#define SETMATERIALCOLORMASK_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALCOLORMASK_COLOR_MASK num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialColorMask 824
+#define FN_getMaterialColorMask 938
#define GETMATERIALCOLORMASK_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialColorMode 825
+#define FN_setMaterialColorMode 939
#define SETMATERIALCOLORMODE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALCOLORMODE_COLOR_MODE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialColorMode 826
+#define FN_getMaterialColorMode 940
#define GETMATERIALCOLORMODE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialDiffuseColor 827
+#define FN_setMaterialDiffuseColor 941
#define SETMATERIALDIFFUSECOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALDIFFUSECOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialDiffuseColor 828
+#define FN_getMaterialDiffuseColor 942
#define GETMATERIALDIFFUSECOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialEmissiveColor 829
+#define FN_setMaterialEmissiveColor 943
#define SETMATERIALEMISSIVECOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALEMISSIVECOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialEmissiveColor 830
+#define FN_getMaterialEmissiveColor 944
#define GETMATERIALEMISSIVECOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialFog 831
+#define FN_setMaterialFog 945
#define SETMATERIALFOG_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALFOG_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialFog 832
+#define FN_getMaterialFog 946
#define GETMATERIALFOG_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialFrontfaceCulling 833
+#define FN_setMaterialFrontfaceCulling 947
#define SETMATERIALFRONTFACECULLING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALFRONTFACECULLING_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialFrontfaceCulling 834
+#define FN_getMaterialFrontfaceCulling 948
#define GETMATERIALFRONTFACECULLING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialGouraudShading 835
+#define FN_setMaterialGouraudShading 949
#define SETMATERIALGOURAUDSHADING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALGOURAUDSHADING_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsGouraudShaded 836
+#define FN_materialIsGouraudShaded 950
#define MATERIALISGOURAUDSHADED_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_materialIsAplhaBlend 837
+#define FN_materialIsAplhaBlend 951
#define MATERIALISAPLHABLEND_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_materialIsTransparent 838
+#define FN_materialIsTransparent 952
#define MATERIALISTRANSPARENT_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialLighting 839
+#define FN_setMaterialLighting 953
#define SETMATERIALLIGHTING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALLIGHTING_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsLit 840
+#define FN_materialIsLit 954
#define MATERIALISLIT_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialType 841
+#define FN_setMaterialType 955
#define SETMATERIALTYPE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALTYPE_MAT_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialType 842
+#define FN_getMaterialType 956
#define GETMATERIALTYPE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialNormalize 843
+#define FN_setMaterialNormalize 957
#define SETMATERIALNORMALIZE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALNORMALIZE_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsNormalized 844
+#define FN_materialIsNormalized 958
#define MATERIALISNORMALIZED_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialPointCloud 845
+#define FN_setMaterialPointCloud 959
#define SETMATERIALPOINTCLOUD_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALPOINTCLOUD_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsPointCloud 846
+#define FN_materialIsPointCloud 960
#define MATERIALISPOINTCLOUD_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialFlag 847
+#define FN_setMaterialFlag 961
#define SETMATERIALFLAG_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALFLAG_MATERIAL_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETMATERIALFLAG_F_VALUE num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getMaterialFlag 848
+#define FN_getMaterialFlag 962
#define GETMATERIALFLAG_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETMATERIALFLAG_MATERIAL_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setMaterialTexture 849
+#define FN_setMaterialTexture 963
#define SETMATERIALTEXTURE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALTEXTURE_LEVEL num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETMATERIALTEXTURE_IMG_ID num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setMaterialShininess 850
+#define FN_setMaterialShininess 964
#define SETMATERIALSHININESS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALSHININESS_SHININESS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialShininess 851
+#define FN_getMaterialShininess 965
#define GETMATERIALSHININESS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialSpecularColor 852
+#define FN_setMaterialSpecularColor 966
#define SETMATERIALSPECULARCOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALSPECULARCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialSpecularColor 853
+#define FN_getMaterialSpecularColor 967
#define GETMATERIALSPECULARCOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialThickness 854
+#define FN_setMaterialThickness 968
#define SETMATERIALTHICKNESS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALTHICKNESS_THICKNESS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialThickness 855
+#define FN_getMaterialThickness 969
#define GETMATERIALTHICKNESS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialWireframe 856
+#define FN_setMaterialWireframe 970
#define SETMATERIALWIREFRAME_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALWIREFRAME_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsWireframe 857
+#define FN_materialIsWireframe 971
#define MATERIALISWIREFRAME_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setActorTexture 858
+#define FN_setActorTexture 972
#define SETACTORTEXTURE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORTEXTURE_LAYER num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORTEXTURE_IMAGE_ID num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getActorMaterialCount 859
+#define FN_getActorMaterialCount 973
#define GETACTORMATERIALCOUNT_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setActorMaterialFlag 860
+#define FN_setActorMaterialFlag 974
#define SETACTORMATERIALFLAG_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORMATERIALFLAG_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORMATERIALFLAG_FLAG_VALUE num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getActorMaterialFlag 861
+#define FN_getActorMaterialFlag 975
#define GETACTORMATERIALFLAG_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORMATERIALFLAG_MATERIAL num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORMATERIALFLAG_FLAG num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setActorMaterialType 862
+#define FN_setActorMaterialType 976
#define SETACTORMATERIALTYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORMATERIALTYPE_MATERIAL_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getActorMaterialType 863
+#define FN_getActorMaterialType 977
#define GETACTORMATERIALTYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORMATERIALTYPE_MATERIAL num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_MaterialExists 864
+#define FN_MaterialExists 978
#define MATERIALEXISTS_MATERIAL num_var[0].nref[0].value[ num_var[0].byref_offset ]
diff --git a/rcbasic_build/rcbasic_dev3.txt b/rcbasic_build/rcbasic_dev3.txt
index 45c5eea..f602c3c 100644
--- a/rcbasic_build/rcbasic_dev3.txt
+++ b/rcbasic_build/rcbasic_dev3.txt
@@ -617,7 +617,7 @@ case FN_SetCanvasPhysics2D: //Sub Procedure
rc_setCanvasPhysics2D( SETCANVASPHYSICS2D_C_NUM, SETCANVASPHYSICS2D_STATE );
break;
case FN_OpenCanvasSpriteLayer: //Number Function
- rc_push_num(rc_canvasOpenSpriteLayer( OPENCANVASSPRITELAYER_W, OPENCANVASSPRITELAYER_H, OPENCANVASSPRITELAYER_VIEWPORT_X, OPENCANVASSPRITELAYER_VIEWPORT_Y, OPENCANVASSPRITELAYER_VIEWPORT_W, OPENCANVASSPRITELAYER_VIEWPORT_H ));
+ rc_push_num(rc_canvasOpenSpriteLayer( OPENCANVASSPRITELAYER_VIEWPORT_X, OPENCANVASSPRITELAYER_VIEWPORT_Y, OPENCANVASSPRITELAYER_VIEWPORT_W, OPENCANVASSPRITELAYER_VIEWPORT_H ));
break;
case FN_Circle: //Sub Procedure
rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS );
@@ -1496,6 +1496,348 @@ case FN_SpriteAnimationIsPlaying: //Number Function
case FN_DeleteSpriteAnimation: //Sub Procedure
rc_deleteSpriteAnimation( DELETESPRITEANIMATION_SPRITE, DELETESPRITEANIMATION_ANIMATION );
break;
+case FN_getSpriteCenter: //Sub Procedure
+ rc_getSpriteCenter( GETSPRITECENTER_SPR_ID, &GETSPRITECENTER_X, &GETSPRITECENTER_Y );
+ break;
+case FN_setSpriteLinearVelocity: //Sub Procedure
+ rc_setSpriteLinearVelocity( SETSPRITELINEARVELOCITY_SPR_ID, SETSPRITELINEARVELOCITY_X, SETSPRITELINEARVELOCITY_Y );
+ break;
+case FN_getSpriteLinearVelocity: //Sub Procedure
+ rc_getSpriteLinearVelocity( GETSPRITELINEARVELOCITY_SPR_ID, &GETSPRITELINEARVELOCITY_X, &GETSPRITELINEARVELOCITY_Y );
+ break;
+case FN_setSpriteAngularVelocity: //Sub Procedure
+ rc_setSpriteAngularVelocity( SETSPRITEANGULARVELOCITY_SPR_ID, SETSPRITEANGULARVELOCITY_AV );
+ break;
+case FN_getSpriteAngularVelocity: //Number Function
+ rc_push_num(rc_getSpriteAngularVelocity( GETSPRITEANGULARVELOCITY_SPR_ID ));
+ break;
+case FN_applySpriteForce: //Sub Procedure
+ rc_applySpriteForce( APPLYSPRITEFORCE_SPR_ID, APPLYSPRITEFORCE_FX, APPLYSPRITEFORCE_FY, APPLYSPRITEFORCE_PX, APPLYSPRITEFORCE_PY );
+ break;
+case FN_applySpriteCentralForce: //Sub Procedure
+ rc_applySpriteCentralForce( APPLYSPRITECENTRALFORCE_SPR_ID, APPLYSPRITECENTRALFORCE_X, APPLYSPRITECENTRALFORCE_Y );
+ break;
+case FN_applySpriteTorque: //Sub Procedure
+ rc_applySpriteTorque( APPLYSPRITETORQUE_SPR_ID, APPLYSPRITETORQUE_TORQUE );
+ break;
+case FN_applySpriteLinearImpulse: //Sub Procedure
+ rc_applySpriteLinearImpulse( APPLYSPRITELINEARIMPULSE_SPR_ID, APPLYSPRITELINEARIMPULSE_IX, APPLYSPRITELINEARIMPULSE_IY, APPLYSPRITELINEARIMPULSE_PX, APPLYSPRITELINEARIMPULSE_PY );
+ break;
+case FN_applySpriteAngularImpulse: //Sub Procedure
+ rc_applySpriteAngularImpulse( APPLYSPRITEANGULARIMPULSE_SPR_ID, APPLYSPRITEANGULARIMPULSE_IMPULSE );
+ break;
+case FN_getSpriteMass: //Number Function
+ rc_push_num(rc_getSpriteMass( GETSPRITEMASS_SPR_ID ));
+ break;
+case FN_getSpriteInertia: //Number Function
+ rc_push_num(rc_getSpriteInertia( GETSPRITEINERTIA_SPR_ID ));
+ break;
+case FN_getSpriteWorldPoint: //Sub Procedure
+ rc_getSpriteWorldPoint( GETSPRITEWORLDPOINT_SPR_ID, GETSPRITEWORLDPOINT_LX, GETSPRITEWORLDPOINT_LY, &GETSPRITEWORLDPOINT_X, &GETSPRITEWORLDPOINT_Y );
+ break;
+case FN_getSpriteWorldVector: //Sub Procedure
+ rc_getSpriteWorldVector( GETSPRITEWORLDVECTOR_SPR_ID, GETSPRITEWORLDVECTOR_LX, GETSPRITEWORLDVECTOR_LY, &GETSPRITEWORLDVECTOR_X, &GETSPRITEWORLDVECTOR_Y );
+ break;
+case FN_getSpriteLocalPoint: //Sub Procedure
+ rc_getSpriteLocalPoint( GETSPRITELOCALPOINT_SPR_ID, GETSPRITELOCALPOINT_WX, GETSPRITELOCALPOINT_WY, &GETSPRITELOCALPOINT_X, &GETSPRITELOCALPOINT_Y );
+ break;
+case FN_getSpriteLocalVector: //Sub Procedure
+ rc_getSpriteLocalVector( GETSPRITELOCALVECTOR_SPR_ID, GETSPRITELOCALVECTOR_WX, GETSPRITELOCALVECTOR_WY, &GETSPRITELOCALVECTOR_X, &GETSPRITELOCALVECTOR_Y );
+ break;
+case FN_getSpriteLinearVelocityFromLocalPoint: //Sub Procedure
+ rc_getSpriteLinearVelocityFromLocalPoint( GETSPRITELINEARVELOCITYFROMLOCALPOINT_SPR_ID, GETSPRITELINEARVELOCITYFROMLOCALPOINT_PX, GETSPRITELINEARVELOCITYFROMLOCALPOINT_PY, &GETSPRITELINEARVELOCITYFROMLOCALPOINT_X, &GETSPRITELINEARVELOCITYFROMLOCALPOINT_Y );
+ break;
+case FN_getSpriteLinearVelocityFromWorldPoint: //Sub Procedure
+ rc_getSpriteLinearVelocityFromWorldPoint( GETSPRITELINEARVELOCITYFROMWORLDPOINT_SPR_ID, GETSPRITELINEARVELOCITYFROMWORLDPOINT_WX, GETSPRITELINEARVELOCITYFROMWORLDPOINT_WY, &GETSPRITELINEARVELOCITYFROMWORLDPOINT_X, &GETSPRITELINEARVELOCITYFROMWORLDPOINT_Y );
+ break;
+case FN_getSpriteLinearDamping: //Number Function
+ rc_push_num(rc_getSpriteLinearDamping( GETSPRITELINEARDAMPING_SPR_ID ));
+ break;
+case FN_setSpriteLinearDamping: //Sub Procedure
+ rc_setSpriteLinearDamping( SETSPRITELINEARDAMPING_SPR_ID, SETSPRITELINEARDAMPING_LINEARDAMPING );
+ break;
+case FN_getSpriteAngularDamping: //Number Function
+ rc_push_num(rc_getSpriteAngularDamping( GETSPRITEANGULARDAMPING_SPR_ID ));
+ break;
+case FN_setSpriteAngularDamping: //Sub Procedure
+ rc_setSpriteAngularDamping( SETSPRITEANGULARDAMPING_SPR_ID, SETSPRITEANGULARDAMPING_ANGULARDAMPING );
+ break;
+case FN_getSpriteGravityScale: //Number Function
+ rc_push_num(rc_getSpriteGravityScale( GETSPRITEGRAVITYSCALE_SPR_ID ));
+ break;
+case FN_setSpriteGravityScale: //Sub Procedure
+ rc_setSpriteGravityScale( SETSPRITEGRAVITYSCALE_SPR_ID, SETSPRITEGRAVITYSCALE_G_SCALE );
+ break;
+case FN_setSpriteBullet: //Sub Procedure
+ rc_setSpriteBullet( SETSPRITEBULLET_SPR_ID, SETSPRITEBULLET_FLAG );
+ break;
+case FN_spriteIsBullet: //Number Function
+ rc_push_num(rc_spriteIsBullet( SPRITEISBULLET_SPR_ID ));
+ break;
+case FN_setSpriteSleepAllowed: //Sub Procedure
+ rc_setSpriteSleepAllowed( SETSPRITESLEEPALLOWED_SPR_ID, SETSPRITESLEEPALLOWED_FLAG );
+ break;
+case FN_spriteSleepAllowed: //Number Function
+ rc_push_num(rc_spriteSleepAllowed( SPRITESLEEPALLOWED_SPR_ID ));
+ break;
+case FN_setSpriteAwake: //Sub Procedure
+ rc_setSpriteAwake( SETSPRITEAWAKE_SPR_ID, SETSPRITEAWAKE_FLAG );
+ break;
+case FN_spriteIsAwake: //Number Function
+ rc_push_num(rc_spriteIsAwake( SPRITEISAWAKE_SPR_ID ));
+ break;
+case FN_setSpriteFixedRotation: //Sub Procedure
+ rc_setSpriteFixedRotation( SETSPRITEFIXEDROTATION_SPR_ID, SETSPRITEFIXEDROTATION_FLAG );
+ break;
+case FN_spriteIsFixedRotation: //Number Function
+ rc_push_num(rc_spriteIsFixedRotation( SPRITEISFIXEDROTATION_SPR_ID ));
+ break;
+case FN_createDistanceJoint: //Number Function
+ rc_push_num(rc_createDistanceJoint( CREATEDISTANCEJOINT_SPRITEA, CREATEDISTANCEJOINT_SPRITEB, CREATEDISTANCEJOINT_AX, CREATEDISTANCEJOINT_AY, CREATEDISTANCEJOINT_BX, CREATEDISTANCEJOINT_BY, CREATEDISTANCEJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createFrictionJoint: //Number Function
+ rc_push_num(rc_createFrictionJoint( CREATEFRICTIONJOINT_SPRITEA, CREATEFRICTIONJOINT_SPRITEB, CREATEFRICTIONJOINT_X, CREATEFRICTIONJOINT_Y, CREATEFRICTIONJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createGearJoint: //Number Function
+ rc_push_num(rc_createGearJoint( CREATEGEARJOINT_JOINTA, CREATEGEARJOINT_JOINTB, CREATEGEARJOINT_G_RATIO, CREATEGEARJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createMotorJoint: //Number Function
+ rc_push_num(rc_createMotorJoint( CREATEMOTORJOINT_SPRITEA, CREATEMOTORJOINT_SPRITEB, CREATEMOTORJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createPrismaticJoint: //Number Function
+ rc_push_num(rc_createPrismaticJoint( CREATEPRISMATICJOINT_SPRITEA, CREATEPRISMATICJOINT_SPRITEB, CREATEPRISMATICJOINT_AX, CREATEPRISMATICJOINT_AY, CREATEPRISMATICJOINT_AXISX, CREATEPRISMATICJOINT_AXISY, CREATEPRISMATICJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createPulleyJoint: //Number Function
+ rc_push_num(rc_createPulleyJoint( CREATEPULLEYJOINT_SPRITEA, CREATEPULLEYJOINT_SPRITEB, CREATEPULLEYJOINT_GAX, CREATEPULLEYJOINT_GAY, CREATEPULLEYJOINT_GBX, CREATEPULLEYJOINT_GBY, CREATEPULLEYJOINT_AX, CREATEPULLEYJOINT_AY, CREATEPULLEYJOINT_BX, CREATEPULLEYJOINT_BY, CREATEPULLEYJOINT_J_RATIO, CREATEPULLEYJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createRevoluteJoint: //Number Function
+ rc_push_num(rc_createRevoluteJoint( CREATEREVOLUTEJOINT_SPRITEA, CREATEREVOLUTEJOINT_SPRITEB, CREATEREVOLUTEJOINT_X, CREATEREVOLUTEJOINT_Y, CREATEREVOLUTEJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createWeldJoint: //Number Function
+ rc_push_num(rc_createWeldJoint( CREATEWELDJOINT_SPRITEA, CREATEWELDJOINT_SPRITEB, CREATEWELDJOINT_X, CREATEWELDJOINT_Y, CREATEWELDJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createWheelJoint: //Number Function
+ rc_push_num(rc_createWheelJoint( CREATEWHEELJOINT_SPRITEA, CREATEWHEELJOINT_SPRITEB, CREATEWHEELJOINT_AX, CREATEWHEELJOINT_AY, CREATEWHEELJOINT_AXISX, CREATEWHEELJOINT_AXISY, CREATEWHEELJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_getJointWorldAnchorA: //Sub Procedure
+ rc_getJointWorldAnchorA( GETJOINTWORLDANCHORA_JOINT_ID, &GETJOINTWORLDANCHORA_X, &GETJOINTWORLDANCHORA_Y );
+ break;
+case FN_getJointWorldAnchorB: //Sub Procedure
+ rc_getJointWorldAnchorB( GETJOINTWORLDANCHORB_JOINT_ID, &GETJOINTWORLDANCHORB_X, &GETJOINTWORLDANCHORB_Y );
+ break;
+case FN_getJointReactionForce: //Sub Procedure
+ rc_getJointReactionForce( GETJOINTREACTIONFORCE_JOINT_ID, GETJOINTREACTIONFORCE_INV_DT, &GETJOINTREACTIONFORCE_X, &GETJOINTREACTIONFORCE_Y );
+ break;
+case FN_getJointReactionTorque: //Number Function
+ rc_push_num(rc_getJointReactionTorque( GETJOINTREACTIONTORQUE_JOINT_ID, GETJOINTREACTIONTORQUE_INV_DT ));
+ break;
+case FN_getJointLocalAnchorA: //Sub Procedure
+ rc_getJointLocalAnchorA( GETJOINTLOCALANCHORA_JOINT_ID, &GETJOINTLOCALANCHORA_X, &GETJOINTLOCALANCHORA_Y );
+ break;
+case FN_getJointLocalAnchorB: //Sub Procedure
+ rc_getJointLocalAnchorB( GETJOINTLOCALANCHORB_JOINT_ID, &GETJOINTLOCALANCHORB_X, &GETJOINTLOCALANCHORB_Y );
+ break;
+case FN_setJointLength: //Sub Procedure
+ rc_setJointLength( SETJOINTLENGTH_JOINT_ID, SETJOINTLENGTH_JLEN );
+ break;
+case FN_getJointLength: //Number Function
+ rc_push_num(rc_getJointLength( GETJOINTLENGTH_JOINT_ID ));
+ break;
+case FN_setJointMinLength: //Sub Procedure
+ rc_setJointMinLength( SETJOINTMINLENGTH_JOINT_ID, SETJOINTMINLENGTH_JLEN );
+ break;
+case FN_getJointMinLength: //Number Function
+ rc_push_num(rc_getJointMinLength( GETJOINTMINLENGTH_JOINT_ID ));
+ break;
+case FN_setJointMaxLength: //Sub Procedure
+ rc_setJointMaxLength( SETJOINTMAXLENGTH_JOINT_ID, SETJOINTMAXLENGTH_JLEN );
+ break;
+case FN_getJointMaxLength: //Number Function
+ rc_push_num(rc_getJointMaxLength( GETJOINTMAXLENGTH_JOINT_ID ));
+ break;
+case FN_getJointCurrentLength: //Number Function
+ rc_push_num(rc_getJointCurrentLength( GETJOINTCURRENTLENGTH_JOINT_ID ));
+ break;
+case FN_setJointStiffness: //Sub Procedure
+ rc_setJointStiffness( SETJOINTSTIFFNESS_JOINT_ID, SETJOINTSTIFFNESS_STIFFNESS );
+ break;
+case FN_getJointStiffness: //Number Function
+ rc_push_num(rc_getJointStiffness( GETJOINTSTIFFNESS_JOINT_ID ));
+ break;
+case FN_setJointDamping: //Sub Procedure
+ rc_setJointDamping( SETJOINTDAMPING_JOINT_ID, SETJOINTDAMPING_DAMPING );
+ break;
+case FN_getJointDamping: //Number Function
+ rc_push_num(rc_getJointDamping( GETJOINTDAMPING_JOINT_ID ));
+ break;
+case FN_setJointMaxForce: //Sub Procedure
+ rc_setJointMaxForce( SETJOINTMAXFORCE_JOINT_ID, SETJOINTMAXFORCE_FORCE );
+ break;
+case FN_getJointMaxForce: //Number Function
+ rc_push_num(rc_getJointMaxForce( GETJOINTMAXFORCE_JOINT_ID ));
+ break;
+case FN_setJointMaxTorque: //Sub Procedure
+ rc_setJointMaxTorque( SETJOINTMAXTORQUE_JOINT_ID, SETJOINTMAXTORQUE_TORQUE );
+ break;
+case FN_getJointMaxTorque: //Number Function
+ rc_push_num(rc_getJointMaxTorque( GETJOINTMAXTORQUE_JOINT_ID ));
+ break;
+case FN_setJointCorrectionFactor: //Sub Procedure
+ rc_setJointCorrectionFactor( SETJOINTCORRECTIONFACTOR_JOINT_ID, SETJOINTCORRECTIONFACTOR_FACTOR );
+ break;
+case FN_getJointCorrectionFactor: //Number Function
+ rc_push_num(rc_getJointCorrectionFactor( GETJOINTCORRECTIONFACTOR_JOINT_ID ));
+ break;
+case FN_setJointRatio: //Sub Procedure
+ rc_setJointRatio( SETJOINTRATIO_JOINT_ID, SETJOINTRATIO_J_RATIO );
+ break;
+case FN_getJointRatio: //Number Function
+ rc_push_num(rc_getJointRatio( GETJOINTRATIO_JOINT_ID ));
+ break;
+case FN_setJointLinearOffset: //Sub Procedure
+ rc_setJointLinearOffset( SETJOINTLINEAROFFSET_JOINT_ID, SETJOINTLINEAROFFSET_X, SETJOINTLINEAROFFSET_Y );
+ break;
+case FN_getJointLinearOffset: //Sub Procedure
+ rc_getJointLinearOffset( GETJOINTLINEAROFFSET_JOINT_ID, &GETJOINTLINEAROFFSET_X, &GETJOINTLINEAROFFSET_Y );
+ break;
+case FN_setJointAngularOffset: //Sub Procedure
+ rc_setJointAngularOffset( SETJOINTANGULAROFFSET_JOINT_ID, SETJOINTANGULAROFFSET_ANGLEOFFSET );
+ break;
+case FN_getJointAngularOffset: //Number Function
+ rc_push_num(rc_getJointAngularOffset( GETJOINTANGULAROFFSET_JOINT_ID ));
+ break;
+case FN_getJointLocalAxisA: //Sub Procedure
+ rc_getJointLocalAxisA( GETJOINTLOCALAXISA_JOINT_ID, &GETJOINTLOCALAXISA_X, &GETJOINTLOCALAXISA_Y );
+ break;
+case FN_getJointReferenceAngle: //Number Function
+ rc_push_num(rc_getJointReferenceAngle( GETJOINTREFERENCEANGLE_JOINT_ID ));
+ break;
+case FN_getJointTranslation: //Number Function
+ rc_push_num(rc_getJointTranslation( GETJOINTTRANSLATION_JOINT_ID ));
+ break;
+case FN_getJointSpeed: //Number Function
+ rc_push_num(rc_getJointSpeed( GETJOINTSPEED_JOINT_ID ));
+ break;
+case FN_jointIsLimitEnabled: //Number Function
+ rc_push_num(rc_jointIsLimitEnabled( JOINTISLIMITENABLED_JOINT_ID ));
+ break;
+case FN_enableJointLimit: //Sub Procedure
+ rc_enableJointLimit( ENABLEJOINTLIMIT_JOINT_ID, ENABLEJOINTLIMIT_FLAG );
+ break;
+case FN_getJointLowerLimit: //Number Function
+ rc_push_num(rc_getJointLowerLimit( GETJOINTLOWERLIMIT_JOINT_ID ));
+ break;
+case FN_getJointUpperLimit: //Number Function
+ rc_push_num(rc_getJointUpperLimit( GETJOINTUPPERLIMIT_JOINT_ID ));
+ break;
+case FN_setJointLimits: //Sub Procedure
+ rc_setJointLimits( SETJOINTLIMITS_JOINT_ID, SETJOINTLIMITS_LOWER_LIMIT, SETJOINTLIMITS_UPPER_LIMIT );
+ break;
+case FN_jointMotorIsEnabled: //Number Function
+ rc_push_num(rc_jointMotorIsEnabled( JOINTMOTORISENABLED_JOINT_ID ));
+ break;
+case FN_enableJointMotor: //Sub Procedure
+ rc_enableJointMotor( ENABLEJOINTMOTOR_JOINT_ID, ENABLEJOINTMOTOR_FLAG );
+ break;
+case FN_setJointMotorSpeed: //Sub Procedure
+ rc_setJointMotorSpeed( SETJOINTMOTORSPEED_JOINT_ID, SETJOINTMOTORSPEED_SPEED );
+ break;
+case FN_getJointMotorSpeed: //Number Function
+ rc_push_num(rc_getJointMotorSpeed( GETJOINTMOTORSPEED_JOINT_ID ));
+ break;
+case FN_setJointMaxMotorForce: //Sub Procedure
+ rc_setJointMaxMotorForce( SETJOINTMAXMOTORFORCE_JOINT_ID, SETJOINTMAXMOTORFORCE_FORCE );
+ break;
+case FN_getJointMaxMotorForce: //Number Function
+ rc_push_num(rc_getJointMaxMotorForce( GETJOINTMAXMOTORFORCE_JOINT_ID ));
+ break;
+case FN_getJointMotorForce: //Number Function
+ rc_push_num(rc_getJointMotorForce( GETJOINTMOTORFORCE_JOINT_ID, GETJOINTMOTORFORCE_INV_DT ));
+ break;
+case FN_setJointMaxMotorTorque: //Sub Procedure
+ rc_setJointMaxMotorTorque( SETJOINTMAXMOTORTORQUE_JOINT_ID, SETJOINTMAXMOTORTORQUE_TORQUE );
+ break;
+case FN_getJointMaxMotorTorque: //Number Function
+ rc_push_num(rc_getJointMaxMotorTorque( GETJOINTMAXMOTORTORQUE_JOINT_ID ));
+ break;
+case FN_getJointMotorTorque: //Number Function
+ rc_push_num(rc_getJointMotorTorque( GETJOINTMOTORTORQUE_JOINT_ID, GETJOINTMOTORTORQUE_INV_DT ));
+ break;
+case FN_getJointGroundAnchorA: //Sub Procedure
+ rc_getJointGroundAnchorA( GETJOINTGROUNDANCHORA_JOINT_ID, &GETJOINTGROUNDANCHORA_X, &GETJOINTGROUNDANCHORA_Y );
+ break;
+case FN_getJointGroundAnchorB: //Sub Procedure
+ rc_getJointGroundAnchorB( GETJOINTGROUNDANCHORB_JOINT_ID, &GETJOINTGROUNDANCHORB_X, &GETJOINTGROUNDANCHORB_Y );
+ break;
+case FN_getJointLengthA: //Number Function
+ rc_push_num(rc_getJointLengthA( GETJOINTLENGTHA_JOINT_ID ));
+ break;
+case FN_getJointLengthB: //Number Function
+ rc_push_num(rc_getJointLengthB( GETJOINTLENGTHB_JOINT_ID ));
+ break;
+case FN_getJointCurrentLengthA: //Number Function
+ rc_push_num(rc_getJointCurrentLengthA( GETJOINTCURRENTLENGTHA_JOINT_ID ));
+ break;
+case FN_getJointCurrentLengthB: //Number Function
+ rc_push_num(rc_getJointCurrentLengthB( GETJOINTCURRENTLENGTHB_JOINT_ID ));
+ break;
+case FN_setJointOrigin: //Sub Procedure
+ rc_setJointOrigin( SETJOINTORIGIN_JOINT_ID, SETJOINTORIGIN_X, SETJOINTORIGIN_Y );
+ break;
+case FN_getJointAngle: //Number Function
+ rc_push_num(rc_getJointAngle( GETJOINTANGLE_JOINT_ID ));
+ break;
+case FN_getJointLinearSpeed: //Number Function
+ rc_push_num(rc_getJointLinearSpeed( GETJOINTLINEARSPEED_JOINT_ID ));
+ break;
+case FN_getJointAngularSpeed: //Number Function
+ rc_push_num(rc_getJointAngularSpeed( GETJOINTANGULARSPEED_JOINT_ID ));
+ break;
+case FN_DeleteJoint: //Sub Procedure
+ rc_deleteJoint( DELETEJOINT_JOINT_ID );
+ break;
+case FN_CreateTileSet: //Number Function
+ rc_push_num(rc_createTileSet( CREATETILESET_IMG_ID, CREATETILESET_TILE_W, CREATETILESET_TILE_H ));
+ break;
+case FN_SetTileAnimationLength: //Sub Procedure
+ rc_setTileAnimationLength( SETTILEANIMATIONLENGTH_TILESET, SETTILEANIMATIONLENGTH_BASE_TILE, SETTILEANIMATIONLENGTH_NUM_FRAMES );
+ break;
+case FN_GetTileAnimationLength: //Number Function
+ rc_push_num(rc_getTileAnimationLength( GETTILEANIMATIONLENGTH_TILESET, GETTILEANIMATIONLENGTH_BASE_TILE ));
+ break;
+case FN_SetTileAnimationFrame: //Sub Procedure
+ rc_setTileAnimationFrame( SETTILEANIMATIONFRAME_TILESET, SETTILEANIMATIONFRAME_BASE_TILE, SETTILEANIMATIONFRAME_ANIM_FRAME, SETTILEANIMATIONFRAME_TILE_FRAME );
+ break;
+case FN_GetTileAnimationFrame: //Number Function
+ rc_push_num(rc_getTileAnimationFrame( GETTILEANIMATIONFRAME_TILESET, GETTILEANIMATIONFRAME_BASE_TILE, GETTILEANIMATIONFRAME_ANIM_FRAME ));
+ break;
+case FN_SetTileAnimationSpeed: //Sub Procedure
+ rc_setTileAnimationSpeed( SETTILEANIMATIONSPEED_TILESET, SETTILEANIMATIONSPEED_BASE_TILE, SETTILEANIMATIONSPEED_SPEED );
+ break;
+case FN_GetTileAnimationSpeed: //Number Function
+ rc_push_num(rc_getTileAnimationSpeed( GETTILEANIMATIONSPEED_TILESET, GETTILEANIMATIONSPEED_BASE_TILE ));
+ break;
+case FN_CreateTileMap: //Number Function
+ rc_push_num(rc_createTileMap( CREATETILEMAP_TILESET, CREATETILEMAP_WIDTHINTILES, CREATETILEMAP_HEIGHTINTILES ));
+ break;
+case FN_SetTileMapSize: //Sub Procedure
+ rc_setTileMapSize( SETTILEMAPSIZE_TILEMAP, SETTILEMAPSIZE_WIDTHINTILES, SETTILEMAPSIZE_HEIGHTINTILES );
+ break;
+case FN_GetTileMapSize: //Sub Procedure
+ rc_getTileMapSize( GETTILEMAPSIZE_TILEMAP, &GETTILEMAPSIZE_WIDTHINTILES, &GETTILEMAPSIZE_HEIGHTINTILES );
+ break;
+case FN_SetTile: //Sub Procedure
+ rc_setTile( SETTILE_TILEMAP, SETTILE_TILE, SETTILE_X, SETTILE_Y );
+ break;
+case FN_GetTile: //Number Function
+ rc_push_num(rc_getTile( GETTILE_TILEMAP, GETTILE_X, GETTILE_Y ));
+ break;
+case FN_FillTile: //Sub Procedure
+ rc_fillTile( FILLTILE_TILEMAP, FILLTILE_TILE, FILLTILE_X, FILLTILE_Y, FILLTILE_WIDTHINTILES, FILLTILE_HEIGHTINTILES );
+ break;
+case FN_DrawTileMap: //Sub Procedure
+ rc_drawTileMap( DRAWTILEMAP_TILEMAP, DRAWTILEMAP_X, DRAWTILEMAP_Y, DRAWTILEMAP_W, DRAWTILEMAP_H, DRAWTILEMAP_OFFSET_X, DRAWTILEMAP_OFFSET_Y );
+ break;
case FN_LoadMesh: //Number Function
rc_push_num(rc_loadMesh( LOADMESH_MESH_FILE$ ));
break;
@@ -1610,6 +1952,51 @@ case FN_RemoveActorShadow: //Sub Procedure
case FN_ActorExists: //Number Function
rc_push_num(rc_actorExists( ACTOREXISTS_ACTOR ));
break;
+case FN_CreateActorAnimation: //Number Function
+ rc_push_num(rc_createActorAnimation( CREATEACTORANIMATION_ACTOR, CREATEACTORANIMATION_START_FRAME, CREATEACTORANIMATION_END_FRAME, CREATEACTORANIMATION_SPEED ));
+ break;
+case FN_SetActorAnimation: //Sub Procedure
+ rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_ANIMATION, SETACTORANIMATION_NUM_LOOPS );
+ break;
+case FN_SetActorAnimationSpeed: //Sub Procedure
+ rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_ANIMATION, SETACTORANIMATIONSPEED_SPEED );
+ break;
+case FN_SetActorAnimationFrames: //Sub Procedure
+ rc_setActorAnimationFrames( SETACTORANIMATIONFRAMES_ACTOR, SETACTORANIMATIONFRAMES_ANIMATION, SETACTORANIMATIONFRAMES_START_FRAME, SETACTORANIMATIONFRAMES_END_FRAME );
+ break;
+case FN_GetActorCurrentAnimation: //Number Function
+ rc_push_num(rc_getActorCurrentAnimation( GETACTORCURRENTANIMATION_ACTOR ));
+ break;
+case FN_GetActorAnimationSpeed: //Number Function
+ rc_push_num(rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR, GETACTORANIMATIONSPEED_ANIMATION ));
+ break;
+case FN_GetActorAnimationStartFrame: //Number Function
+ rc_push_num(rc_getActorAnimationStartFrame( GETACTORANIMATIONSTARTFRAME_ACTOR, GETACTORANIMATIONSTARTFRAME_ANIMATION ));
+ break;
+case FN_GetActorAnimationEndFrame: //Number Function
+ rc_push_num(rc_getActorAnimationEndFrame( GETACTORANIMATIONENDFRAME_ACTOR, GETACTORANIMATIONENDFRAME_ANIMATION ));
+ break;
+case FN_SetActorFrame: //Sub Procedure
+ rc_setActorFrame( SETACTORFRAME_ACTOR, SETACTORFRAME_FRAME );
+ break;
+case FN_GetActorFrame: //Number Function
+ rc_push_num(rc_getActorFrame( GETACTORFRAME_ACTOR ));
+ break;
+case FN_ActorAnimationIsPlaying: //Number Function
+ rc_push_num(rc_actorAnimationIsPlaying( ACTORANIMATIONISPLAYING_ACTOR ));
+ break;
+case FN_NumActorAnimationLoops: //Number Function
+ rc_push_num(rc_numActorAnimationLoops( NUMACTORANIMATIONLOOPS_ACTOR ));
+ break;
+case FN_SetActorMD2Animation: //Sub Procedure
+ rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM, SETACTORMD2ANIMATION_NUM_LOOPS );
+ break;
+case FN_SetActorMD2AnimationByName: //Sub Procedure
+ rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$, SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS );
+ break;
+case FN_DeleteActorAnimation: //Sub Procedure
+ rc_deleteActorAnimation( DELETEACTORANIMATION_ACTOR, DELETEACTORANIMATION_ANIMATION );
+ break;
case FN_SetGravity3D: //Sub Procedure
rc_setGravity3D( SETGRAVITY3D_X, SETGRAVITY3D_Y, SETGRAVITY3D_Z );
break;
@@ -1727,8 +2114,8 @@ case FN_clearActorForces: //Sub Procedure
case FN_updateActorInertiaTensor: //Sub Procedure
rc_updateActorInertiaTensor( UPDATEACTORINERTIATENSOR_ACTOR );
break;
-case FN_getActorCOMPosition: //Sub Procedure
- rc_getActorCOMPosition( GETACTORCOMPOSITION_ACTOR, &GETACTORCOMPOSITION_X, &GETACTORCOMPOSITION_Y, &GETACTORCOMPOSITION_Z );
+case FN_getActorCenter: //Sub Procedure
+ rc_getActorCenter( GETACTORCENTER_ACTOR, &GETACTORCENTER_X, &GETACTORCENTER_Y, &GETACTORCENTER_Z );
break;
case FN_getActorRotationQ: //Sub Procedure
rc_getActorRotationQ( GETACTORROTATIONQ_ACTOR, &GETACTORROTATIONQ_X, &GETACTORROTATIONQ_Y, &GETACTORROTATIONQ_Z, &GETACTORROTATIONQ_W );
@@ -1751,8 +2138,8 @@ case FN_setActorAngularVelocityLocal: //Sub Procedure
case FN_setActorAngularVelocityWorld: //Sub Procedure
rc_setActorAngularVelocityWorld( SETACTORANGULARVELOCITYWORLD_ACTOR, SETACTORANGULARVELOCITYWORLD_X, SETACTORANGULARVELOCITYWORLD_Y, SETACTORANGULARVELOCITYWORLD_Z );
break;
-case FN_getActorLocalPointVelocity: //Sub Procedure
- rc_getActorLocalPointVelocity( GETACTORLOCALPOINTVELOCITY_ACTOR, GETACTORLOCALPOINTVELOCITY_REL_X, GETACTORLOCALPOINTVELOCITY_REL_Y, GETACTORLOCALPOINTVELOCITY_REL_Z, &GETACTORLOCALPOINTVELOCITY_X, &GETACTORLOCALPOINTVELOCITY_Y, &GETACTORLOCALPOINTVELOCITY_Z );
+case FN_getActorVelocityInLocalPoint: //Sub Procedure
+ rc_getActorVelocityInLocalPoint( GETACTORVELOCITYINLOCALPOINT_ACTOR, GETACTORVELOCITYINLOCALPOINT_REL_X, GETACTORVELOCITYINLOCALPOINT_REL_Y, GETACTORVELOCITYINLOCALPOINT_REL_Z, &GETACTORVELOCITYINLOCALPOINT_X, &GETACTORVELOCITYINLOCALPOINT_Y, &GETACTORVELOCITYINLOCALPOINT_Z );
break;
case FN_getActorLinearVelocityLocal: //Sub Procedure
rc_getActorLinearVelocityLocal( GETACTORLINEARVELOCITYLOCAL_ACTOR, &GETACTORLINEARVELOCITYLOCAL_X, &GETACTORLINEARVELOCITYLOCAL_Y, &GETACTORLINEARVELOCITYLOCAL_Z );
@@ -2399,51 +2786,6 @@ case FN_SetTerrainCameraRotationDelta: //Sub Procedure
case FN_SetTerrainPatchLOD: //Sub Procedure
rc_setTerrainPatchLOD( SETTERRAINPATCHLOD_ACTOR, SETTERRAINPATCHLOD_PATCHX, SETTERRAINPATCHLOD_PATCHZ, SETTERRAINPATCHLOD_LOD );
break;
-case FN_CreateActorAnimation: //Number Function
- rc_push_num(rc_createActorAnimation( CREATEACTORANIMATION_ACTOR, CREATEACTORANIMATION_START_FRAME, CREATEACTORANIMATION_END_FRAME, CREATEACTORANIMATION_SPEED ));
- break;
-case FN_SetActorAnimation: //Sub Procedure
- rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_ANIMATION, SETACTORANIMATION_NUM_LOOPS );
- break;
-case FN_SetActorAnimationSpeed: //Sub Procedure
- rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_ANIMATION, SETACTORANIMATIONSPEED_SPEED );
- break;
-case FN_SetActorAnimationFrames: //Sub Procedure
- rc_setActorAnimationFrames( SETACTORANIMATIONFRAMES_ACTOR, SETACTORANIMATIONFRAMES_ANIMATION, SETACTORANIMATIONFRAMES_START_FRAME, SETACTORANIMATIONFRAMES_END_FRAME );
- break;
-case FN_GetActorCurrentAnimation: //Number Function
- rc_push_num(rc_getActorCurrentAnimation( GETACTORCURRENTANIMATION_ACTOR ));
- break;
-case FN_GetActorAnimationSpeed: //Number Function
- rc_push_num(rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR, GETACTORANIMATIONSPEED_ANIMATION ));
- break;
-case FN_GetActorAnimationStartFrame: //Number Function
- rc_push_num(rc_getActorAnimationStartFrame( GETACTORANIMATIONSTARTFRAME_ACTOR, GETACTORANIMATIONSTARTFRAME_ANIMATION ));
- break;
-case FN_GetActorAnimationEndFrame: //Number Function
- rc_push_num(rc_getActorAnimationEndFrame( GETACTORANIMATIONENDFRAME_ACTOR, GETACTORANIMATIONENDFRAME_ANIMATION ));
- break;
-case FN_SetActorFrame: //Sub Procedure
- rc_setActorFrame( SETACTORFRAME_ACTOR, SETACTORFRAME_FRAME );
- break;
-case FN_GetActorFrame: //Number Function
- rc_push_num(rc_getActorFrame( GETACTORFRAME_ACTOR ));
- break;
-case FN_ActorAnimationIsPlaying: //Number Function
- rc_push_num(rc_actorAnimationIsPlaying( ACTORANIMATIONISPLAYING_ACTOR ));
- break;
-case FN_NumActorAnimationLoops: //Number Function
- rc_push_num(rc_numActorAnimationLoops( NUMACTORANIMATIONLOOPS_ACTOR ));
- break;
-case FN_SetActorMD2Animation: //Sub Procedure
- rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM, SETACTORMD2ANIMATION_NUM_LOOPS );
- break;
-case FN_SetActorMD2AnimationByName: //Sub Procedure
- rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$, SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS );
- break;
-case FN_DeleteActorAnimation: //Sub Procedure
- rc_deleteActorAnimation( DELETEACTORANIMATION_ACTOR, DELETEACTORANIMATION_ANIMATION );
- break;
case FN_createMaterial: //Number Function
rc_push_num(rc_createMaterial( ));
break;
diff --git a/rcbasic_runtime/rc_actor_animation.h b/rcbasic_runtime/rc_actor_animation.h
new file mode 100644
index 0000000..bc78205
--- /dev/null
+++ b/rcbasic_runtime/rc_actor_animation.h
@@ -0,0 +1,359 @@
+#ifndef RC_ACTOR_ANIMATION_H_INCLUDED
+#define RC_ACTOR_ANIMATION_H_INCLUDED
+
+//set actor animation [TODO]
+int rc_createActorAnimation(int actor, int start_frame, int end_frame, double speed)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ rc_actor_animation_obj animation;
+ animation.active = true;
+ animation.start_frame = start_frame;
+ animation.end_frame = end_frame;
+ animation.fps = speed;
+ animation.frame_swap_time = 1000/speed;
+
+ int animation_id = rc_actor[actor].animation.size();
+
+ if(rc_actor[actor].deleted_animation.size() > 0)
+ {
+ animation_id = rc_actor[actor].deleted_animation[0];
+ rc_actor[actor].deleted_animation.erase(0);
+ rc_actor[actor].animation[animation_id] = animation;
+ }
+ else
+ rc_actor[actor].animation.push_back(animation);
+
+ return animation_id;
+}
+
+void rc_deleteActorAnimation(int actor, int animation)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(animation < 0 || animation >= rc_actor[actor].animation.size())
+ return;
+
+ if(!rc_actor[actor].animation[animation].active)
+ return;
+
+ rc_actor[actor].animation[animation].active = false;
+ rc_actor[actor].deleted_animation.push_back(animation);
+}
+
+void rc_setActorAnimation(int actor, int animation, int num_loops)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(animation < 0 || animation >= rc_actor[actor].animation.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ int start_frame = rc_actor[actor].animation[animation].start_frame;
+ int end_frame = rc_actor[actor].animation[animation].end_frame;
+ rc_actor[actor].current_animation = animation;
+ rc_actor[actor].current_animation_loop = 0;
+ rc_actor[actor].num_animation_loops = num_loops;
+ rc_actor[actor].isPlaying = true;
+ node->setCurrentFrame(start_frame);
+ node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame );
+ node->setAnimationSpeed(rc_actor[actor].animation[animation].fps);
+ break;
+ }
+}
+
+int rc_getActorCurrentAnimation(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ return rc_actor[actor].current_animation;
+}
+
+int rc_numActorAnimationLoops(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ return rc_actor[actor].num_animation_loops;
+}
+
+bool rc_actorAnimationIsPlaying(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ return rc_actor[actor].isPlaying;
+}
+
+void rc_setActorMD2Animation(int actor, int md2_animation, int num_loops)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ node->setMD2Animation( (irr::scene::EMD2_ANIMATION_TYPE) md2_animation );
+
+ //int start_frame = node->getStartFrame();
+ //int end_frame = node->getEndFrame();
+ rc_actor[actor].current_animation = RC_ANIMATION_MD2;
+ rc_actor[actor].current_animation_loop = 0;
+ rc_actor[actor].num_animation_loops = num_loops;
+ rc_actor[actor].isPlaying = true;
+ //node->setCurrentFrame(start_frame);
+ //node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame ); //setMD2Animation() does this for me
+ node->setAnimationSpeed(node->getMesh()->getAnimationSpeed());
+ break;
+ }
+}
+
+void rc_setActorMD2AnimationByName(int actor, std::string animation_name, int num_loops)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ node->setMD2Animation( animation_name.c_str() );
+
+ //int start_frame = node->getStartFrame();
+ //int end_frame = node->getEndFrame();
+ rc_actor[actor].current_animation = RC_ANIMATION_MD2;
+ rc_actor[actor].current_animation_loop = 0;
+ rc_actor[actor].num_animation_loops = num_loops;
+ rc_actor[actor].isPlaying = true;
+ //node->setCurrentFrame(start_frame);
+ //node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame ); //setMD2Animation() does this for me
+ node->setAnimationSpeed(node->getMesh()->getAnimationSpeed());
+ break;
+ }
+}
+
+int rc_getActorAnimationStartFrame(int actor, int animation)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(animation < 0 || animation >= rc_actor[actor].animation.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ if(rc_actor[actor].current_animation == animation)
+ {
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ return node->getStartFrame();
+ }
+ else
+ {
+ return rc_actor[actor].animation[animation].start_frame;
+ }
+ }
+
+ return 0;
+}
+
+int rc_getActorAnimationEndFrame(int actor, int animation)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(animation < 0 || animation >= rc_actor[actor].animation.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ if(rc_actor[actor].current_animation == animation)
+ {
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ return node->getEndFrame();
+ }
+ else
+ {
+ return rc_actor[actor].animation[animation].end_frame;
+ }
+ }
+
+ return 0;
+}
+
+int rc_getActorFrame(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ return node->getFrameNr();
+ }
+
+ return 0;
+}
+
+//set actor animation speed
+void rc_setActorAnimationSpeed(int actor, int animation, double speed)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(animation < 0 || animation >= rc_actor[actor].animation.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ rc_actor[actor].animation[animation].fps = speed;
+
+ if(animation == rc_actor[actor].current_animation)
+ {
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ node->setAnimationSpeed( (irr::f32)speed );
+ }
+ break;
+ }
+}
+
+double rc_getActorAnimationSpeed(int actor, int animation)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(animation < 0 || animation >= rc_actor[actor].animation.size())
+ return 0;
+
+ return rc_actor[actor].animation[animation].fps;
+}
+
+void rc_setActorFrame(int actor, int frame)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ rc_actor[actor].animation[0].start_frame = frame;
+ rc_actor[actor].animation[0].end_frame = frame;
+ rc_actor[actor].animation[0].fps = 0;
+ rc_actor[actor].current_animation_loop = 0;
+ rc_actor[actor].isPlaying = true;
+ rc_actor[actor].current_animation = 0;
+ node->setCurrentFrame(frame);
+ break;
+ }
+}
+
+void rc_setActorAnimationFrames(int actor, int animation, int start_frame, int end_frame)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(animation < 0 || animation >= rc_actor[actor].animation.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ rc_actor[actor].animation[animation].start_frame = start_frame;
+ rc_actor[actor].animation[animation].end_frame = end_frame;
+
+ if(animation == rc_actor[actor].current_animation)
+ {
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ node->setFrameLoop(start_frame, end_frame);
+ }
+ break;
+ }
+}
+
+void rc_startActorTransition(int actor, double frame, double transition_time)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].transition)
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ node->setTransitionTime(transition_time);
+ //node->setJointMode(irr::scene::EJUOR_CONTROL); //This is actually called in setTransitionTime()
+ node->setCurrentFrame(frame);
+ rc_actor[actor].transition_frame = frame;
+ rc_actor[actor].transition = true;
+ rc_actor[actor].transition_time = transition_time;
+ rc_actor[actor].transition_start_time = ((double)SDL_GetTicks())/1000.0;
+ rc_actor[actor].current_animation = RC_ANIMATION_TRANSITION;
+ rc_transition_actor.push_back(actor);
+ }
+}
+
+double rc_getActorTransitionTime(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].transition)
+ return rc_actor[actor].transition_time;
+
+ return 0;
+}
+
+
+void rc_stopActorTransition(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ node->setTransitionTime(0);
+ node->setJointMode(irr::scene::EJUOR_NONE);
+ rc_actor[actor].transition = false;
+ rc_actor[actor].transition_time = 0;
+
+ rc_setActorFrame(actor, rc_actor[actor].transition_frame);
+
+ for(int i = 0; i < rc_transition_actor.size();)
+ {
+ if(rc_transition_actor[i] == actor)
+ {
+ rc_transition_actor.erase(i);
+ }
+ else
+ i++;
+ }
+ }
+}
+
+bool rc_actorIsInTransition(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return false;
+
+ return rc_actor[actor].transition;
+}
+
+
+#endif // RC_ACTOR_ANIMATION_H_INCLUDED
diff --git a/rcbasic_runtime/rc_actor_material.h b/rcbasic_runtime/rc_actor_material.h
new file mode 100644
index 0000000..ef723ae
--- /dev/null
+++ b/rcbasic_runtime/rc_actor_material.h
@@ -0,0 +1,1012 @@
+#ifndef RC_ACTOR_MATERIAL_H_INCLUDED
+#define RC_ACTOR_MATERIAL_H_INCLUDED
+
+//set actor texture
+void rc_setActorTexture(int actor, int layer, int image_id)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(!rc_actor[actor].mesh_node)
+ return;
+
+ if(image_id < 0 || image_id >= rc_image.size())
+ return;
+
+ if(rc_image[image_id].image)
+ {
+ rc_actor[actor].mesh_node->setMaterialTexture(layer, rc_image[image_id].image);
+ }
+}
+
+//get Material count
+Uint32 rc_getActorMaterialCount(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(!rc_actor[actor].mesh_node)
+ return 0;
+
+ return rc_actor[actor].mesh_node->getMaterialCount();
+}
+
+//set Actor Material Flag
+void rc_setActorMaterialFlag(int actor, int flag, bool flag_value)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(!rc_actor[actor].mesh_node)
+ return;
+
+ rc_actor[actor].mesh_node->setMaterialFlag((irr::video::E_MATERIAL_FLAG)flag, flag_value);
+}
+
+//set Actor Material Flag
+bool rc_getActorMaterialFlag(int actor, int material, int flag)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return false;
+
+ if(!rc_actor[actor].mesh_node)
+ return false;
+
+ return rc_actor[actor].mesh_node->getMaterial(material).getFlag((irr::video::E_MATERIAL_FLAG)flag);
+}
+
+//Set Actor Material Type
+void rc_setActorMaterialType(int actor, int material_type)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(!rc_actor[actor].mesh_node)
+ return;
+
+ irr::video::E_MATERIAL_TYPE n = (irr::video::E_MATERIAL_TYPE) material_type;
+ rc_actor[actor].mesh_node->setMaterialType(n);
+}
+
+//Set Actor Material Type
+int rc_getActorMaterialType(int actor, int material)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(!rc_actor[actor].mesh_node)
+ return 0;
+
+ return (int)rc_actor[actor].mesh_node->getMaterial(material).MaterialType;
+}
+
+int rc_createMaterial()
+{
+ int material_id = -1;
+
+ for(int i = 0; i < rc_material.size(); i++)
+ {
+ if(!rc_material[i].isUsed)
+ {
+ material_id = i;
+ break;
+ }
+ }
+
+ if(material_id < 0)
+ {
+ material_id = rc_material.size();
+ rc_material_obj mat;
+ mat.isUsed = true;
+ mat.isReference = false;
+ rc_material.push_back(mat);
+ }
+
+ return material_id;
+}
+
+void rc_deleteMaterial(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ rc_material[material_id].isUsed = false;
+ rc_material[material_id].mat = irr::video::SMaterial();
+}
+
+//Set Actor Material Type
+void rc_setActorMaterial(int actor, int material_num, int material_id)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(!rc_actor[actor].mesh_node)
+ return;
+
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isUsed)
+ {
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[actor].mesh_node->getMaterial(material_num) = rc_actor[ refActor ].mesh_node->getMaterial( refMatNum );
+ }
+ else
+ rc_actor[actor].mesh_node->getMaterial(material_num) = rc_material[material_id].mat;
+ }
+}
+
+//Set Actor Material Type
+int rc_copyActorMaterial(int actor, int material_num)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ if(!rc_actor[actor].mesh_node)
+ return -1;
+
+ int material_id = -1;
+
+ for(int i = 0; i < rc_material.size(); i++)
+ {
+ if(!rc_material[i].isUsed)
+ {
+ rc_material[i].isUsed = true;
+ material_id = i;
+ break;
+ }
+ }
+
+ if(material_id < 0)
+ {
+ material_id = rc_material.size();
+ rc_material_obj nmat;
+ nmat.isUsed = true;
+ nmat.mat = rc_actor[actor].mesh_node->getMaterial(material_num);
+ rc_material.push_back(nmat);
+ }
+ else
+ rc_material[material_id].mat = rc_actor[actor].mesh_node->getMaterial(material_num);
+
+ return material_id;
+}
+
+int rc_copyMaterial(int src_material_id)
+{
+ int material_id = -1;
+
+ for(int i = 0; i < rc_material.size(); i++)
+ {
+ if(!rc_material[i].isUsed)
+ {
+ rc_material[i].isUsed = true;
+ material_id = i;
+ break;
+ }
+ }
+
+ rc_material_obj nmat;
+ nmat.isUsed = true;
+ nmat.mat = rc_material[src_material_id].mat;
+ nmat.isReference = false;
+ nmat.refActor = -1;
+ nmat.refMatNum = 0;
+
+ if(material_id < 0)
+ {
+ material_id = rc_material.size();
+ rc_material.push_back(nmat);
+ }
+ else
+ rc_material[material_id] = nmat;
+
+ return material_id;
+}
+
+int rc_getActorMaterial(int actor, int material_num)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ if(!rc_actor[actor].mesh_node)
+ return -1;
+
+ if(rc_actor[actor].material_ref_index >= 0)
+ return rc_actor[actor].material_ref_index;
+
+ int material_id = -1;
+
+ for(int i = 0; i < rc_material.size(); i++)
+ {
+ if(!rc_material[i].isUsed)
+ {
+ rc_material[i].isUsed = true;
+ material_id = i;
+ break;
+ }
+ }
+
+ if(material_id < 0)
+ {
+ material_id = rc_material.size();
+ rc_material_obj nmat;
+ nmat.isUsed = true;
+ nmat.isReference = true;
+ nmat.refActor = actor;
+ nmat.refMatNum = material_num;
+ rc_material.push_back(nmat);
+ }
+ else
+ {
+ rc_material_obj nmat;
+ nmat.isUsed = true;
+ nmat.isReference = true;
+ nmat.refActor = actor;
+ nmat.refMatNum = material_num;
+ rc_material[material_id] = nmat;
+ }
+
+ return material_id;
+}
+
+bool rc_materialExists(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ return rc_material[material_id].isUsed;
+}
+
+void rc_setMaterialAmbientColor(int material_id, Uint32 color)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).AmbientColor = irr::video::SColor(color);
+ }
+ else
+ rc_material[material_id].mat.AmbientColor = irr::video::SColor(color);
+}
+
+void rc_setMaterialTextureCanvas(int material_id, int level, int canvas_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(canvas_id < 0 || canvas_id >= rc_canvas.size())
+ return;
+
+ if(!rc_canvas[canvas_id].texture)
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).setTexture(level, rc_canvas[canvas_id].texture);
+ }
+ else
+ rc_material[material_id].mat.setTexture(level, rc_canvas[canvas_id].texture);
+}
+
+Uint32 rc_getMaterialAmbientColor(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).AmbientColor.color;
+ }
+ else
+ return rc_material[material_id].mat.AmbientColor.color;
+}
+
+void rc_setMaterialAntiAliasing(int material_id, int aa)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).AntiAliasing = aa;
+ }
+ else
+ rc_material[material_id].mat.AntiAliasing = aa;
+}
+
+int rc_getMaterialAntiAliasing(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).AntiAliasing;
+ }
+ else
+ return rc_material[material_id].mat.AntiAliasing;
+}
+
+void rc_setMaterialBackfaceCulling(int material_id, bool flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).BackfaceCulling = flag;
+ }
+ else
+ rc_material[material_id].mat.BackfaceCulling = flag;
+}
+
+bool rc_getMaterialBackfaceCulling(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).BackfaceCulling;
+ }
+ else
+ return rc_material[material_id].mat.BackfaceCulling;
+}
+
+void rc_setMaterialBlendFactor(int material_id, double bf)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).BlendFactor = bf;
+ }
+ else
+ rc_material[material_id].mat.BlendFactor = bf;
+}
+
+double rc_getMaterialBlendFactor(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).BlendFactor;
+ }
+ else
+ return rc_material[material_id].mat.BlendFactor;
+}
+
+void rc_setMaterialBlendMode(int material_id, int blend_mode)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).BlendOperation = (irr::video::E_BLEND_OPERATION)blend_mode;
+ }
+ else
+ rc_material[material_id].mat.BlendOperation = (irr::video::E_BLEND_OPERATION)blend_mode;
+}
+
+int rc_getMaterialBlendMode(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return (int)rc_actor[refActor].mesh_node->getMaterial(refMatNum).BlendOperation;
+ }
+ else
+ return (int)rc_material[material_id].mat.BlendOperation;
+}
+
+void rc_setMaterialColorMask(int material_id, int color_mask)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).ColorMask = color_mask;
+ }
+ else
+ rc_material[material_id].mat.ColorMask = color_mask;
+}
+
+int rc_getMaterialColorMask(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).ColorMask;
+ }
+ else
+ return rc_material[material_id].mat.ColorMask;
+}
+
+void rc_setMaterialColorMode(int material_id, int color_mode)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).ColorMaterial = (irr::video::E_COLOR_MATERIAL)color_mode;
+ }
+ else
+ rc_material[material_id].mat.ColorMaterial = (irr::video::E_COLOR_MATERIAL)color_mode;
+}
+
+int rc_getMaterialColorMode(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return (int)rc_actor[refActor].mesh_node->getMaterial(refMatNum).ColorMaterial;
+ }
+ else
+ return (int)rc_material[material_id].mat.ColorMaterial;
+}
+
+void rc_setMaterialDiffuseColor(int material_id, Uint32 color)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).DiffuseColor.set(color);
+ }
+ else
+ rc_material[material_id].mat.DiffuseColor = irr::video::SColor(color);
+}
+
+Uint32 rc_getMaterialDiffuseColor(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).DiffuseColor.color;
+ }
+ else
+ return rc_material[material_id].mat.DiffuseColor.color;
+}
+
+void rc_setMaterialEmissiveColor(int material_id, Uint32 color)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).EmissiveColor.set(color);
+ }
+ else
+ rc_material[material_id].mat.EmissiveColor = irr::video::SColor(color);
+}
+
+Uint32 rc_getMaterialEmissiveColor(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).EmissiveColor.color;
+ }
+ else
+ return rc_material[material_id].mat.EmissiveColor.color;
+}
+
+void rc_setMaterialFog(int material_id, bool flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).FogEnable = flag;
+ }
+ else
+ rc_material[material_id].mat.FogEnable = flag;
+}
+
+bool rc_getMaterialFog(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).FogEnable;
+ }
+ else
+ return rc_material[material_id].mat.FogEnable;
+}
+
+void rc_setMaterialFrontfaceCulling(int material_id, bool flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).FrontfaceCulling = flag;
+ }
+ else
+ rc_material[material_id].mat.FrontfaceCulling = flag;
+}
+
+bool rc_getMaterialFrontfaceCulling(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).FrontfaceCulling;
+ }
+ else
+ return rc_material[material_id].mat.FrontfaceCulling;
+}
+
+void rc_setMaterialGouraudShading(int material_id, bool flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).GouraudShading = flag;
+ }
+ else
+ rc_material[material_id].mat.GouraudShading = flag;
+}
+
+bool rc_materialIsGouraudShaded(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).GouraudShading;
+ }
+ else
+ return rc_material[material_id].mat.GouraudShading;
+}
+
+bool rc_materialIsAplhaBlend(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).isAlphaBlendOperation();
+ }
+ else
+ return rc_material[material_id].mat.isAlphaBlendOperation();
+}
+
+bool rc_materialIsTransparent(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).isTransparent();
+ }
+ else
+ return rc_material[material_id].mat.isTransparent();
+}
+
+void rc_setMaterialLighting(int material_id, bool flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).Lighting = flag;
+ }
+ else
+ rc_material[material_id].mat.Lighting = flag;
+}
+
+bool rc_materialIsLit(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).Lighting;
+ }
+ else
+ return rc_material[material_id].mat.Lighting;
+}
+
+void rc_setMaterialType(int material_id, int mat_type)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).MaterialType = (irr::video::E_MATERIAL_TYPE)mat_type;
+ }
+ else
+ rc_material[material_id].mat.MaterialType = (irr::video::E_MATERIAL_TYPE)mat_type;
+}
+
+int rc_getMaterialType(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return (int)rc_actor[refActor].mesh_node->getMaterial(refMatNum).MaterialType;
+ }
+ else
+ return (int)rc_material[material_id].mat.MaterialType;
+}
+
+void rc_setMaterialNormalize(int material_id, bool flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).NormalizeNormals = flag;
+ }
+ else
+ rc_material[material_id].mat.NormalizeNormals = flag;
+}
+
+bool rc_materialIsNormalized(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).NormalizeNormals;
+ }
+ else
+ return rc_material[material_id].mat.NormalizeNormals;
+}
+
+void rc_setMaterialPointCloud(int material_id, bool flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).PointCloud = flag;
+ }
+ else
+ rc_material[material_id].mat.PointCloud = flag;
+}
+
+bool rc_materialIsPointCloud(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).PointCloud;
+ }
+ else
+ return rc_material[material_id].mat.PointCloud;
+}
+
+void rc_setMaterialFlag(int material_id, int material_flag, bool f_value)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).setFlag((irr::video::E_MATERIAL_FLAG)material_flag, f_value);
+ }
+ else
+ rc_material[material_id].mat.setFlag((irr::video::E_MATERIAL_FLAG)material_flag, f_value);
+}
+
+bool rc_getMaterialFlag(int material_id, int material_flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).getFlag((irr::video::E_MATERIAL_FLAG) material_flag);
+ }
+ else
+ return rc_material[material_id].mat.getFlag((irr::video::E_MATERIAL_FLAG) material_flag);
+}
+
+void rc_setMaterialTexture(int material_id, int level, int img_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(level < 0 || level >= irr::video::MATERIAL_MAX_TEXTURES)
+ return;
+
+ if(img_id < 0 || img_id >= rc_image.size())
+ return;
+
+ if(!rc_image[img_id].image)
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).setTexture(level, rc_image[img_id].image);
+ }
+ else
+ rc_material[material_id].mat.setTexture(level, rc_image[img_id].image);
+}
+
+void rc_setMaterialShininess(int material_id, double shininess)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).Shininess = shininess;
+ }
+ else
+ rc_material[material_id].mat.Shininess = shininess;
+}
+
+double rc_getMaterialShininess(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).Shininess;
+ }
+ else
+ return rc_material[material_id].mat.Shininess;
+}
+
+void rc_setMaterialSpecularColor(int material_id, Uint32 color)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).SpecularColor.set(color);
+ }
+ else
+ rc_material[material_id].mat.SpecularColor = irr::video::SColor(color);
+}
+
+Uint32 rc_getMaterialSpecularColor(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).SpecularColor.color;
+ }
+ else
+ return rc_material[material_id].mat.SpecularColor.color;
+}
+
+void rc_setMaterialThickness(int material_id, double thickness)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).Thickness = thickness;
+ }
+ else
+ rc_material[material_id].mat.Thickness = thickness;
+}
+
+double rc_getMaterialThickness(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return 0;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).Thickness;
+ }
+ else
+ return rc_material[material_id].mat.Thickness;
+}
+
+void rc_setMaterialWireframe(int material_id, bool flag)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ rc_actor[refActor].mesh_node->getMaterial(refMatNum).Wireframe = flag;
+ }
+ else
+ rc_material[material_id].mat.Wireframe = flag;
+}
+
+bool rc_materialIsWireframe(int material_id)
+{
+ if(material_id < 0 || material_id >= rc_material.size())
+ return false;
+
+ if(rc_material[material_id].isReference)
+ {
+ int refActor = rc_material[material_id].refActor;
+ int refMatNum = rc_material[material_id].refMatNum;
+ return rc_actor[refActor].mesh_node->getMaterial(refMatNum).Wireframe;
+ }
+ else
+ return rc_material[material_id].mat.Wireframe;
+}
+
+
+
+
+//get Actor Texture
+int rc_getActorTexture(int actor, int material, int layer)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ if(!rc_actor[actor].mesh_node)
+ return -1;
+
+ rc_image_obj img;
+ img.image = rc_actor[actor].mesh_node->getMaterial(material).getTexture(layer);
+
+ if(img.image == NULL)
+ return -1;
+
+ int img_id = -1;
+
+ for(int i = 0; i < rc_image.size(); i++)
+ {
+ if(rc_image[i].image == NULL)
+ {
+ img_id = i;
+ break;
+ }
+ }
+
+ if(img_id < 0)
+ {
+ img_id = rc_image.size();
+ rc_image.push_back(img);
+ }
+ else
+ {
+ rc_image[img_id] = img;
+ }
+
+ return img_id;
+}
+
+#endif // RC_ACTOR_MATERIAL_H_INCLUDED
diff --git a/rcbasic_runtime/rc_actor_physics.h b/rcbasic_runtime/rc_actor_physics.h
new file mode 100644
index 0000000..e3c0578
--- /dev/null
+++ b/rcbasic_runtime/rc_actor_physics.h
@@ -0,0 +1,713 @@
+#ifndef RC_ACTOR_PHYSICS_H_INCLUDED
+#define RC_ACTOR_PHYSICS_H_INCLUDED
+
+void rc_setActorGravity(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->setGravity(irr::core::vector3df(x, y, z));
+ }
+}
+
+void rc_getActorGravity(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df gvec = rc_actor[actor].physics.rigid_body->getGravity();
+ *x = gvec.X;
+ *y = gvec.Y;
+ *z = gvec.Z;
+ }
+}
+
+void rc_setActorDamping(int actor, double lin_damping, double ang_damping)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->setDamping(lin_damping, ang_damping);
+ }
+}
+
+double rc_getActorLinearDamping(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ return rc_actor[actor].physics.rigid_body->getLinearDamping();
+ }
+ return 0;
+}
+
+double rc_getActorAngularDamping(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ return rc_actor[actor].physics.rigid_body->getAngularDamping();
+ }
+ return 0;
+}
+
+double rc_getActorLinearSleepThreshold(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ return rc_actor[actor].physics.rigid_body->getLinearSleepingThreshold();
+ }
+ return 0;
+}
+
+double rc_getActorAngularSleepThreshold(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ return rc_util_degrees(rc_actor[actor].physics.rigid_body->getAngularSleepingThreshold()); //convert to degrees per second
+ }
+ return 0;
+}
+
+void rc_applyActorDamping(int actor, double timeStep)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyDamping(timeStep);
+ }
+}
+
+void rc_setActorMassProperties(int actor, double mass, double inertia_x, double inertia_y, double inertia_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_physics3D.world->removeCollisionObject(rc_actor[actor].physics.rigid_body, false);
+ rc_actor[actor].physics.rigid_body->setMassProps(mass, irr::core::vector3df(inertia_x, inertia_y, inertia_z));
+ rc_physics3D.world->addRigidBody(rc_actor[actor].physics.rigid_body);
+ }
+ rc_actor[actor].physics.mass = mass;
+}
+
+void rc_getActorLinearFactor(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df lf = rc_actor[actor].physics.rigid_body->getLinearFactor();
+ *x = lf.X;
+ *y = lf.Y;
+ *z = lf.Z;
+ }
+}
+
+void rc_setActorLinearFactor(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->setLinearFactor(irr::core::vector3df(x, y, z));
+ }
+}
+
+double rc_getActorInverseMass(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ return rc_actor[actor].physics.rigid_body->getInvMass();
+ }
+ return 0;
+}
+
+void rc_integrateActorVelocities(int actor, double step)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->integrateVelocities(step);
+ }
+}
+
+void rc_applyActorCentralForceLocal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyCentralForce(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_LOCAL);
+ }
+}
+
+void rc_applyActorCentralForceWorld(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyCentralForce(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_WORLD);
+ }
+}
+
+void rc_getActorTotalForce(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df f = rc_actor[actor].physics.rigid_body->getTotalForce();
+ *x = f.X;
+ *y = f.Y;
+ *z = f.Z;
+ }
+}
+
+void rc_getActorTotalTorque(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df f = rc_actor[actor].physics.rigid_body->getTotalTorque();
+ *x = f.X;
+ *y = f.Y;
+ *z = f.Z;
+ }
+}
+
+void rc_getActorInverseInertiaDiagLocal(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df f = rc_actor[actor].physics.rigid_body->getInvInertiaDiagLocal();
+ *x = f.X;
+ *y = f.Y;
+ *z = f.Z;
+ }
+}
+
+void rc_setActorInverseInertiaDiagLocal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->setInvInertiaDiagLocal(irr::core::vector3df(x,y,z));
+ }
+}
+
+void rc_setActorSleepThresholds(int actor, double linear, double angular)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->setSleepingThresholds(linear, rc_util_radians(angular));
+ }
+}
+
+void rc_applyActorTorqueLocal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyTorque(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_LOCAL);
+ }
+}
+
+void rc_applyActorTorqueWorld(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyTorque(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_WORLD);
+ }
+}
+
+void rc_applyActorForceLocal(int actor, double x, double y, double z, double rel_x, double rel_y, double rel_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyForce(irr::core::vector3df(x,y,z), irr::core::vector3df(rel_x, rel_y, rel_z), ERBTransformSpace::ERBTS_LOCAL);
+ }
+}
+
+void rc_applyActorForceWorld(int actor, double x, double y, double z, double rel_x, double rel_y, double rel_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyForce(irr::core::vector3df(x,y,z), irr::core::vector3df(rel_x, rel_y, rel_z), ERBTransformSpace::ERBTS_WORLD);
+ }
+}
+
+void rc_applyActorCentralImpulseLocal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyCentralImpulse(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_LOCAL);
+ }
+}
+
+void rc_applyActorCentralImpulseWorld(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyCentralImpulse(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_WORLD);
+ }
+}
+
+void rc_applyActorTorqueImpulseLocal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyTorqueImpulse(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_LOCAL);
+ }
+}
+
+void rc_applyActorTorqueImpulseWorld(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyTorqueImpulse(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_WORLD);
+ }
+}
+
+void rc_applyActorImpulseLocal(int actor, double x, double y, double z, double rel_x, double rel_y, double rel_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyImpulse(irr::core::vector3df(x,y,z), irr::core::vector3df(rel_x, rel_y, rel_z), ERBTransformSpace::ERBTS_LOCAL);
+ }
+}
+
+void rc_applyActorImpulseWorld(int actor, double x, double y, double z, double rel_x, double rel_y, double rel_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->applyImpulse(irr::core::vector3df(x,y,z), irr::core::vector3df(rel_x, rel_y, rel_z), ERBTransformSpace::ERBTS_WORLD);
+ }
+}
+
+void rc_clearActorForces(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->clearForces();
+ }
+}
+
+void rc_updateActorInertiaTensor(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->updateInertiaTensor();
+ }
+}
+
+void rc_getActorCenter(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df pos = rc_actor[actor].physics.rigid_body->getCenterOfMassPosition();
+ *x = pos.X;
+ *y = pos.Y;
+ *z = pos.Z;
+ }
+}
+
+void rc_getActorRotationQ(int actor, double* x, double* y, double* z, double* w)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+ *w = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::quaternion q = rc_actor[actor].physics.rigid_body->getOrientation();
+ *x = q.X;
+ *y = q.Y;
+ *z = q.Z;
+ *w = q.W;
+ }
+}
+
+void rc_getActorLinearVelocityWorld(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df pos = rc_actor[actor].physics.rigid_body->getLinearVelocity();
+ *x = pos.X;
+ *y = pos.Y;
+ *z = pos.Z;
+ }
+}
+
+void rc_getActorAngularVelocityWorld(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df pos = rc_actor[actor].physics.rigid_body->getAngularVelocity();
+ *x = rc_util_degrees(pos.X);
+ *y = rc_util_degrees(pos.Y);
+ *z = rc_util_degrees(pos.Z);
+ }
+}
+
+void rc_setActorLinearVelocityLocal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->setLinearVelocity(irr::core::vector3df(x, y, z), ERBTransformSpace::ERBTS_LOCAL);
+ }
+}
+
+void rc_setActorLinearVelocityWorld(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->setLinearVelocity(irr::core::vector3df(x, y, z), ERBTransformSpace::ERBTS_WORLD);
+ }
+}
+
+void rc_setActorAngularVelocityLocal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ x = rc_util_radians(x);
+ y = rc_util_radians(y);
+ z = rc_util_radians(z);
+ rc_actor[actor].physics.rigid_body->setAngularVelocity(irr::core::vector3df(x, y, z), ERBTransformSpace::ERBTS_LOCAL);
+ }
+}
+
+void rc_setActorAngularVelocityWorld(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ x = rc_util_radians(x);
+ y = rc_util_radians(y);
+ z = rc_util_radians(z);
+ rc_actor[actor].physics.rigid_body->setAngularVelocity(irr::core::vector3df(x, y, z), ERBTransformSpace::ERBTS_WORLD);
+ }
+}
+
+void rc_getActorVelocityInLocalPoint(int actor, double rel_x, double rel_y, double rel_z, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df pos = rc_actor[actor].physics.rigid_body->getVelocityInLocalPoint(irr::core::vector3df(rel_x, rel_y, rel_z));
+ *x = pos.X;
+ *y = pos.Y;
+ *z = pos.Z;
+ }
+}
+
+void rc_getActorLinearVelocityLocal(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->getWorldTransform().getBasis().transpose() * rc_actor[actor].physics.rigid_body->getPointer()->getLinearVelocity();
+ *x = v.getX();
+ *y = v.getY();
+ *z = v.getZ();
+ }
+}
+
+void rc_getActorAngularVelocityLocal(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->getWorldTransform().getBasis().transpose() * rc_actor[actor].physics.rigid_body->getPointer()->getAngularVelocity();
+ *x = rc_util_degrees(v.getX());
+ *y = rc_util_degrees(v.getY());
+ *z = rc_util_degrees(v.getZ());
+ }
+}
+
+void rc_getActorAABB(int actor, double* min_x, double* min_y, double* min_z, double* max_x, double* max_y, double* max_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *min_x = 0;
+ *min_y = 0;
+ *min_z = 0;
+ *max_x = 0;
+ *max_y = 0;
+ *max_z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df min_aabb;
+ irr::core::vector3df max_aabb;
+ rc_actor[actor].physics.rigid_body->getAabb(min_aabb, max_aabb);
+ *min_x = min_aabb.X;
+ *min_y = min_aabb.Y;
+ *min_z = min_aabb.Z;
+ *max_x = max_aabb.X;
+ *max_y = max_aabb.Y;
+ *max_z = max_aabb.Z;
+ }
+}
+
+double rc_computeActorImpulseDenominator(int actor, double pos_x, double pos_y, double pos_z, double normal_x, double normal_y, double normal_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ return rc_actor[actor].physics.rigid_body->computeImpulseDenominator(irr::core::vector3df(pos_x, pos_y, pos_z), irr::core::vector3df(normal_x, normal_y, normal_z));
+ }
+
+ return 0;
+}
+
+double rc_computeActorAngularImpulseDenominator(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ return rc_actor[actor].physics.rigid_body->computeAngularImpulseDenominator(irr::core::vector3df(x, y, z));
+ }
+
+ return 0;
+}
+
+void rc_setActorAngularFactor(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->setAngularFactor(irr::core::vector3df(x, y, z));
+ }
+}
+
+void rc_getActorAngularFactor(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ irr::core::vector3df af = rc_actor[actor].physics.rigid_body->getAngularFactor();
+ *x = af.X;
+ *y = af.Y;
+ *z = af.Z;
+ }
+}
+
+void rc_computeActorGyroImpulseLocal(int actor, double step, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->computeGyroscopicImpulseImplicit_Body(step);
+ *x = v.getX();
+ *y = v.getY();
+ *z = v.getZ();
+ }
+}
+
+void rc_computeActorGyroImpulseWorld(int actor, double dt, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->computeGyroscopicImpulseImplicit_World(dt);
+ *x = v.getX();
+ *y = v.getY();
+ *z = v.getZ();
+ }
+}
+
+void rc_getActorLocalInertia(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->getLocalInertia();
+ *x = v.getX();
+ *y = v.getY();
+ *z = v.getZ();
+ }
+}
+
+
+#endif // RC_ACTOR_PHYSICS_H_INCLUDED
diff --git a/rcbasic_runtime/rc_base_actor.h b/rcbasic_runtime/rc_base_actor.h
new file mode 100644
index 0000000..6312610
--- /dev/null
+++ b/rcbasic_runtime/rc_base_actor.h
@@ -0,0 +1,1509 @@
+#ifndef RC_BASE_ACTOR_H_INCLUDED
+#define RC_BASE_ACTOR_H_INCLUDED
+
+void setSolidProperties(int actor)
+{
+ if(!rc_actor[actor].physics.isSolid)
+ {
+ rc_actor[actor].physics.gravity = rc_actor[actor].physics.rigid_body->getGravity();
+ rc_actor[actor].physics.rigid_body->setGravity(irr::core::vector3df(0,0,0));
+ rc_actor[actor].physics.rigid_body->setCollisionFlags( ECollisionFlag::ECF_NO_CONTACT_RESPONSE );
+ }
+ else
+ {
+ //rc_actor[actor].physics.rigid_body->setGravity(rc_actor[actor].physics.gravity);
+ }
+}
+
+void rc_setActorCollisionShape(int actor_id, int shape_type, double mass)
+{
+ //std::cout << "Start ColShape" << std::endl;
+ if(rc_actor[actor_id].physics.rigid_body)
+ {
+ rc_physics3D.world->removeCollisionObject(rc_actor[actor_id].physics.rigid_body, false);
+ delete rc_actor[actor_id].physics.rigid_body;
+ }
+
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.mass = mass;
+
+ if(!rc_actor[actor_id].physics.isSolid)
+ mass = 1;
+
+ //std::cout << "NEXT" << std::endl;
+
+ switch(shape_type)
+ {
+ case RC_NODE_SHAPE_TYPE_NONE:
+ break;
+
+ case RC_NODE_SHAPE_TYPE_BOX:
+ {
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ IBoxShape* shape = new IBoxShape(rc_actor[actor_id].mesh_node, mass, false);
+
+ rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
+
+ setSolidProperties(actor_id);
+ }
+ break;
+
+ case RC_NODE_SHAPE_TYPE_SPHERE:
+ {
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_SPHERE;
+ ISphereShape* shape = new ISphereShape(rc_actor[actor_id].mesh_node, mass, false);
+
+ rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
+
+ setSolidProperties(actor_id);
+ }
+ break;
+
+ case RC_NODE_SHAPE_TYPE_CYLINDER:
+ {
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CYLINDER;
+ ICylinderShape* shape = new ICylinderShape(rc_actor[actor_id].mesh_node, mass, false);
+
+ rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
+
+ setSolidProperties(actor_id);
+ }
+ break;
+
+ case RC_NODE_SHAPE_TYPE_CAPSULE:
+ {
+ //std::cout << "CAPSULE" << std::endl;
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CAPSULE;
+ ICapsuleShape* shape;
+
+ if(rc_actor[actor_id].node_type == RC_NODE_TYPE_MESH)
+ {
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new ICapsuleShape(node, mass, false);
+ }
+ else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_OTMESH)
+ {
+ irr::scene::IOctreeSceneNode* node = (irr::scene::IOctreeSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new ICapsuleShape(node, mass, false);
+ }
+ else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_TERRAIN)
+ {
+ irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new ICapsuleShape(node, mass, false);
+ }
+
+ rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
+
+ setSolidProperties(actor_id);
+ }
+ break;
+
+ case RC_NODE_SHAPE_TYPE_CONE:
+ {
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CONE;
+ IConeShape* shape = new IConeShape(rc_actor[actor_id].mesh_node, mass, false);
+
+ rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
+
+ setSolidProperties(actor_id);
+ }
+ break;
+
+ case RC_NODE_SHAPE_TYPE_TRIMESH:
+ {
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_TRIMESH;
+ IBvhTriangleMeshShape* shape;
+
+ if(rc_actor[actor_id].node_type == RC_NODE_TYPE_MESH)
+ {
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new IBvhTriangleMeshShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
+ }
+ else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_OTMESH)
+ {
+ irr::scene::IOctreeSceneNode* node = (irr::scene::IOctreeSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new IBvhTriangleMeshShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
+ }
+ else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_TERRAIN)
+ {
+ irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new IBvhTriangleMeshShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
+ }
+ //else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_WATER)
+ //shape = new IBvhTriangleMeshShape(rc_actor[actor_id].mesh_node, (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node->getMesh(), mass);
+
+ rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
+
+ setSolidProperties(actor_id);
+ }
+ break;
+
+ case RC_NODE_SHAPE_TYPE_CONVEXHULL:
+ {
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CONVEXHULL;
+ IConvexHullShape* shape;
+
+ if(rc_actor[actor_id].node_type == RC_NODE_TYPE_MESH)
+ {
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new IConvexHullShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
+ }
+ else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_OTMESH)
+ {
+ irr::scene::IOctreeSceneNode* node = (irr::scene::IOctreeSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new IConvexHullShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
+ }
+ else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_TERRAIN)
+ {
+ irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor_id].mesh_node;
+ shape = new IConvexHullShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
+ }
+
+ rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
+
+ setSolidProperties(actor_id);
+ }
+ break;
+
+ default:
+ std::cout << "SetActorCollisionShape Error: Invalid shape_type parameter" << std::endl;
+ }
+
+ if(rc_actor[actor_id].physics.rigid_body)
+ {
+ rc_actor[actor_id].physics.rigid_body->getIdentification()->setId(actor_id);
+ rc_actor[actor_id].physics.rigid_body->getPointer()->setActivationState(ACTIVE_TAG);
+ rc_actor[actor_id].physics.rigid_body->getPointer()->setActivationState(DISABLE_DEACTIVATION);
+ rc_actor[actor_id].physics.rigid_body->getPointer()->updateInertiaTensor();
+ }
+}
+
+void rc_setActorSleepState(int actor, int state)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ rc_actor[actor].physics.rigid_body->getPointer()->forceActivationState(state);
+ }
+}
+
+int rc_getActorCollisionShape(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(!rc_actor[actor].mesh_node)
+ return 0;
+
+ return rc_actor[actor].physics.shape_type;
+}
+
+
+void rc_setActorSolid(int actor_id, bool flag)
+{
+ if(actor_id < 0 || actor_id >= rc_actor.size())
+ return;
+
+ if(!rc_actor[actor_id].mesh_node)
+ return;
+
+ if(flag != rc_actor[actor_id].physics.isSolid)
+ {
+ rc_actor[actor_id].physics.isSolid = flag;
+ rc_setActorCollisionShape(actor_id, rc_actor[actor_id].physics.shape_type, rc_actor[actor_id].physics.mass);
+ }
+}
+
+bool rc_actorIsSolid(int actor_id)
+{
+ if(actor_id < 0 || actor_id >= rc_actor.size())
+ return false;
+
+ if(!rc_actor[actor_id].mesh_node)
+ return false;
+
+ return rc_actor[actor_id].physics.isSolid;
+}
+
+bool rc_actorExists(int actor_id)
+{
+ if(actor_id < 0 || actor_id >= rc_actor.size())
+ return false;
+
+ return (rc_actor[actor_id].node_type > 0);
+}
+
+
+bool rc_getActorCollision(int actor1, int actor2)
+{
+ for(int i = 0; i < rc_actor[actor1].physics.collisions.size(); i++)
+ {
+ int c_index = rc_actor[actor1].physics.collisions[i];
+
+ int actorA = rc_collisions[c_index].actorA;
+ int actorB = rc_collisions[c_index].actorB;
+
+ if(actor2 == actorA || actor2 == actorB)
+ {
+ //std::cout << "Actor in Collide = " << (actor1 == actorA ? "A" : "B") << std::endl;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+
+//add mesh actor to scene
+int rc_createAnimatedActor(int mesh_id)
+{
+ if(mesh_id < 0 || mesh_id >= rc_mesh.size())
+ return -1;
+
+ irr::scene::IAnimatedMesh* mesh = rc_mesh[mesh_id].mesh;
+
+ if(!mesh)
+ return -1;
+
+ int actor_id = -1;
+ irr::scene::IAnimatedMeshSceneNode* node = SceneManager->addAnimatedMeshSceneNode(mesh);
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_MESH;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //animation
+ rc_actor_animation_obj animation;
+ animation.start_frame = 0;
+ animation.end_frame = 0;
+ animation.fps = 60.0;
+ animation.frame_start_time = SDL_GetTicks();
+ animation.frame_swap_time = 1000/60;
+ rc_actor[actor_id].animation.push_back(animation);
+ rc_animEndCallBack* anim_callback = new rc_animEndCallBack();
+ anim_callback->ref_actor = &rc_actor[actor_id];
+ anim_callback->OnAnimationEnd(node);
+ node->setAnimationEndCallback(anim_callback);
+ node->setLoopMode(false);
+ node->setFrameLoop(0, 0);
+ anim_callback->drop();
+
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
+
+ return actor_id;
+}
+
+
+//add mesh actor to scene
+int rc_createOctreeActor(int mesh_id)
+{
+ if(mesh_id < 0 || mesh_id >= rc_mesh.size())
+ return -1;
+
+ irr::scene::IAnimatedMesh* mesh = rc_mesh[mesh_id].mesh;
+
+ if(!mesh)
+ return -1;
+
+ int actor_id = -1;
+ //irr::scene::IAnimatedMeshSceneNode* node = SceneManager->addAnimatedMeshSceneNode(mesh);
+ irr::scene::IOctreeSceneNode *node = SceneManager->addOctreeSceneNode(mesh);
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_OTMESH;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
+
+
+ return actor_id;
+}
+
+//add mesh actor to scene
+int rc_createTerrainActor( std::string height_map )
+{
+
+ int actor_id = -1;
+ irr::scene::ITerrainSceneNode *node = SceneManager->addTerrainSceneNode(height_map.c_str());
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_TERRAIN;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 0);
+
+
+ return actor_id;
+}
+
+int rc_createParticleActor( int particle_type )
+{
+ int actor_id = -1;
+ irr::scene::IParticleSystemSceneNode *node = SceneManager->addParticleSystemSceneNode( false );
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_PARTICLE;
+ actor.particle_properties.particle_type = particle_type;
+ actor.particle_properties.mesh_id = -1;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 0);
+
+
+ return actor_id;
+}
+
+//add mesh actor to scene
+int rc_createCubeActor(double cube_size)
+{
+ int actor_id = -1;
+ irr::scene::IMeshSceneNode* node = SceneManager->addCubeSceneNode(cube_size);
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_MESH;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
+
+ return actor_id;
+}
+
+//add mesh actor to scene
+int rc_createSphereActor(double radius)
+{
+ int actor_id = -1;
+ irr::scene::IMeshSceneNode* node = SceneManager->addSphereSceneNode(radius);
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_MESH;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_SPHERE;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_SPHERE, 1);
+
+ return actor_id;
+}
+
+//add mesh actor to scene
+int rc_createWaterActor(int mesh_id, double waveHeight, double waveSpeed, double waveLength)
+{
+ int actor_id = -1;
+
+ if(mesh_id < 0 || mesh_id >= rc_mesh.size())
+ return -1;
+
+ if(!rc_mesh[mesh_id].mesh)
+ return -1;
+
+ irr::scene::ISceneNode* node = SceneManager->addWaterSurfaceSceneNode(rc_mesh[mesh_id].mesh, waveHeight, waveSpeed, waveLength);
+
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_WATER;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
+
+ return actor_id;
+}
+
+int rc_createBillboardActor()
+{
+ int actor_id = -1;
+ irr::scene::IBillboardSceneNode* node = SceneManager->addBillboardSceneNode();
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_BILLBOARD;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
+
+ return actor_id;
+}
+
+int rc_createLightActor()
+{
+ int actor_id = -1;
+ irr::scene::ILightSceneNode* node = SceneManager->addLightSceneNode();
+ rc_scene_node actor;
+ actor.node_type = RC_NODE_TYPE_LIGHT;
+ actor.mesh_node = node;
+ actor.shadow = NULL;
+ actor.transition = false;
+ actor.transition_time = 0;
+ actor.material_ref_index = -1;
+
+ if(!node)
+ return -1;
+
+ for(int i = 0; i < rc_actor.size(); i++)
+ {
+ if(!rc_actor[i].mesh_node)
+ {
+ actor_id = i;
+ break;
+ }
+ }
+
+ if(actor_id < 0)
+ {
+ actor_id = rc_actor.size();
+ rc_actor.push_back(actor);
+ }
+ else
+ {
+ rc_actor[actor_id] = actor;
+ }
+
+ //Actor RigidBody
+ rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
+ rc_actor[actor_id].physics.rigid_body = NULL;
+ rc_actor[actor_id].physics.isSolid = false;
+
+ rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
+
+ return actor_id;
+}
+
+//delete actor
+void rc_deleteActor(int actor_id)
+{
+ if(actor_id < 0 || actor_id >= rc_actor.size())
+ return;
+
+ if(!rc_actor[actor_id].mesh_node)
+ return;
+
+ rc_physics3D.world->removeCollisionObject(rc_actor[actor_id].physics.rigid_body, false);
+ rc_actor[actor_id].physics.collisions.clear();
+
+ rc_actor[actor_id].mesh_node->remove();
+ rc_actor[actor_id].mesh_node = NULL;
+ rc_actor[actor_id].shadow = NULL;
+ rc_actor[actor_id].node_type = 0;
+ rc_actor[actor_id].transition = false;
+ rc_actor[actor_id].transition_time = 0;
+ rc_actor[actor_id].material_ref_index = -1;
+}
+
+
+
+
+
+
+
+//-------------------Actor Transforms-------------------------------
+
+bool rc_getActorTransform(int actor, int t_mat)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return false;
+
+ if(t_mat < 0 || t_mat >= rc_matrix.size())
+ return false;
+
+ if(!rc_matrix[t_mat].active)
+ return false;
+
+ irr::core::matrix4 m = rc_actor[actor].mesh_node->getAbsoluteTransformation();
+ rc_convertFromIrrMatrix(m, t_mat);
+
+ return true;
+}
+
+//set actor position
+void rc_setActorPosition(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ rc_physics3D.world->removeCollisionObject(rc_actor[actor].physics.rigid_body, false);
+ actor_transform.setTranslation( irr::core::vector3df(x, y, z) );
+ rc_actor[actor].physics.rigid_body->clearForces();
+ //rc_actor[actor].physics.rigid_body->
+ rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
+
+ rc_actor[actor].physics.rigid_body->setMassProps(rc_actor[actor].physics.mass, irr::core::vector3df(0,0,0));
+ rc_physics3D.world->addRigidBody(rc_actor[actor].physics.rigid_body);
+
+ rc_actor[actor].mesh_node->setPosition(actor_transform.getTranslation());
+
+ }
+}
+
+//translate actor from local orientation
+void rc_translateActorLocal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ irr::core::matrix4 m;
+ m.setRotationDegrees(actor_transform.getRotationDegrees());
+ irr::core::vector3df v(x, y, z);
+ m.transformVect(v);
+
+ actor_transform.setTranslation( actor_transform.getTranslation() + v );
+ rc_actor[actor].physics.rigid_body->clearForces();
+ rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
+ rc_actor[actor].mesh_node->setPosition(actor_transform.getTranslation());
+ rc_actor[actor].mesh_node->updateAbsolutePosition();
+ }
+}
+
+//translate actor from world orientation
+void rc_translateActorWorld(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ actor_transform.setTranslation( actor_transform.getTranslation() + irr::core::vector3df(x, y, z) );
+ rc_actor[actor].physics.rigid_body->clearForces();
+ rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
+ rc_actor[actor].mesh_node->setPosition(actor_transform.getTranslation());
+ rc_actor[actor].mesh_node->updateAbsolutePosition();
+ }
+}
+
+//get actor position
+void rc_getActorPosition(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ *x = actor_transform.getTranslation().X;
+ *y = actor_transform.getTranslation().Y;
+ *z = actor_transform.getTranslation().Z;
+ }
+}
+
+//set actor scale
+void rc_setActorScale(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ actor_transform.setScale( irr::core::vector3df(x, y, z) );
+ rc_actor[actor].physics.rigid_body->clearForces();
+ rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
+ rc_actor[actor].mesh_node->setScale(actor_transform.getScale());
+ rc_actor[actor].mesh_node->updateAbsolutePosition();
+ }
+
+}
+
+//scale actor
+void rc_scaleActor(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ actor_transform.setScale( actor_transform.getScale() * irr::core::vector3df(x, y, z) );
+ rc_actor[actor].physics.rigid_body->clearForces();
+ rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
+ rc_actor[actor].mesh_node->setScale(actor_transform.getScale());
+ rc_actor[actor].mesh_node->updateAbsolutePosition();
+ }
+}
+
+//get actor scale
+void rc_getActorScale(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ *x = actor_transform.getScale().X;
+ *y = actor_transform.getScale().Y;
+ *z = actor_transform.getScale().Z;
+ }
+}
+
+
+//set actor rotation
+void rc_setActorRotation(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ actor_transform.setRotationDegrees( irr::core::vector3df(x, y, z) );
+ rc_actor[actor].physics.rigid_body->clearForces();
+ rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
+ rc_actor[actor].mesh_node->setRotation( actor_transform.getRotationDegrees() );
+ rc_actor[actor].mesh_node->updateAbsolutePosition();
+ }
+}
+
+//rotate actor
+void rc_rotateActor(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+
+ irr::core::matrix4 n;
+ irr::core::vector3df rot(x, y, z);
+ n.setRotationDegrees(rot);
+ actor_transform *= n;
+
+ rc_actor[actor].physics.rigid_body->clearForces();
+ rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
+ rc_actor[actor].mesh_node->setRotation( actor_transform.getRotationDegrees() );
+ rc_actor[actor].mesh_node->updateAbsolutePosition();
+ }
+}
+
+//get actor position
+void rc_getActorRotation(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_actor[actor].physics.rigid_body)
+ {
+ //std::cout << "Set POS" << std::endl;
+ irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
+ *x = actor_transform.getRotationDegrees().X;
+ *y = actor_transform.getRotationDegrees().Y;
+ *z = actor_transform.getRotationDegrees().Z;
+ }
+}
+
+//---------------PROPERTIES------------------------
+
+void rc_setActorAutoCulling(int actor, int cull_type)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ rc_actor[actor].mesh_node->setAutomaticCulling((irr::scene::E_CULLING_TYPE) cull_type);
+}
+
+int rc_getActorAutoCulling(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].mesh_node)
+ return rc_actor[actor].mesh_node->getAutomaticCulling();
+
+ return 0;
+}
+
+
+void rc_addActorShadow(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].shadow)
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ case RC_NODE_TYPE_OTMESH:
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ rc_actor[actor].shadow = node->addShadowVolumeSceneNode();
+ break;
+ }
+}
+
+void rc_removeActorShadow(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(!rc_actor[actor].shadow)
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ case RC_NODE_TYPE_OTMESH:
+ case RC_NODE_TYPE_MESH:
+ irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
+ node->removeChild(rc_actor[actor].shadow);
+ break;
+ }
+}
+
+
+
+bool rc_lightIsCastingShadow(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return false;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ return node->getCastShadow();
+ }
+
+ return false;
+}
+
+int rc_getLightType(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ return (int)node->getLightType();
+ }
+
+ return -1;
+}
+
+double rc_getLightRadius(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ return node->getRadius();
+ }
+
+ return 0;
+}
+
+void rc_setLightType(int actor, int light_type)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ node->setLightType((irr::video::E_LIGHT_TYPE)light_type);
+ }
+}
+
+void rc_setLightRadius(int actor, double radius)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ node->setRadius(radius);
+ }
+}
+
+
+void rc_setLightShadowCast(int actor, bool flag)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ node->enableCastShadow(flag);
+ }
+}
+
+void rc_setLightAmbientColor(int actor, Uint32 color)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SColor c;
+ c.set(color);
+ irr::video::SColorf cf(c);
+ irr::video::SLight light_data = node->getLightData();
+ light_data.AmbientColor = cf;
+ node->setLightData(light_data);
+ }
+}
+
+Uint32 rc_getLightAmbientColor(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ return light_data.AmbientColor.toSColor().color;
+ }
+
+ return 0;
+}
+
+void rc_setLightAttenuation(int actor, double l_constant, double l_linear, double l_quadratic)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ light_data.Attenuation.set(l_constant, l_linear, l_quadratic);
+ node->setLightData(light_data);
+ }
+}
+
+void rc_getLightAttenuation(int actor, double* l_constant, double* l_linear, double* l_quadratic)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *l_constant = 0;
+ *l_linear = 0;
+ *l_quadratic = 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ *l_constant = light_data.Attenuation.X;
+ *l_linear = light_data.Attenuation.Y;
+ *l_quadratic = light_data.Attenuation.Z;
+ }
+}
+
+void rc_setLightDiffuseColor(int actor, Uint32 color)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SColor c;
+ c.set(color);
+ irr::video::SColorf cf(c);
+ irr::video::SLight light_data = node->getLightData();
+ light_data.DiffuseColor = cf;
+ node->setLightData(light_data);
+ }
+}
+
+Uint32 rc_getLightDiffuseColor(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ return light_data.DiffuseColor.toSColor().color;
+ }
+
+ return 0;
+}
+
+void rc_setLightFalloff(int actor, double falloff)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ light_data.Falloff = falloff;
+ node->setLightData(light_data);
+ }
+}
+
+double rc_getLightFalloff(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ return light_data.Falloff;
+ }
+
+ return 0;
+}
+
+void rc_setLightInnerCone(int actor, double angle)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ light_data.InnerCone = angle;
+ node->setLightData(light_data);
+ }
+}
+
+double rc_getLightInnerCone(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ return light_data.InnerCone;
+ }
+
+ return 0;
+}
+
+void rc_setLightOuterCone(int actor, double angle)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ light_data.OuterCone = angle;
+ node->setLightData(light_data);
+ }
+}
+
+double rc_getLightOuterCone(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ return light_data.OuterCone;
+ }
+
+ return 0;
+}
+
+void rc_setLightSpecularColor(int actor, Uint32 color)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SColor c;
+ c.set(color);
+ irr::video::SColorf cf(c);
+ irr::video::SLight light_data = node->getLightData();
+ light_data.SpecularColor = cf;
+ node->setLightData(light_data);
+ }
+}
+
+Uint32 rc_getLightSpecularColor(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_LIGHT:
+ irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
+ irr::video::SLight light_data = node->getLightData();
+ return light_data.SpecularColor.toSColor().color;
+ }
+
+ return 0;
+}
+
+
+
+
+//set actor animation speed
+void rc_setActorVisible(int actor, bool flag)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ irr::scene::ISceneNode* node = rc_actor[actor].mesh_node;
+ node->setVisible(flag);
+}
+
+bool rc_actorIsVisible(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return false;
+
+ return rc_actor[actor].mesh_node->isVisible();
+}
+
+
+void rc_getTerrainPatchAABB(int actor, double patch_x, double patch_z, double* min_x, double* min_y, double* min_z, double* max_x, double* max_y, double* max_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *min_x = 0;
+ *min_y = 0;
+ *min_z = 0;
+
+ *max_x = 0;
+ *max_y = 0;
+ *max_z = 0;
+
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor].mesh_node;
+ irr::core::aabbox3d bbox = node->getBoundingBox(patch_x, patch_z);
+
+ *min_x = bbox.MinEdge.X;
+ *min_y = bbox.MinEdge.Y;
+ *min_z = bbox.MinEdge.Z;
+
+ *max_x = bbox.MaxEdge.X;
+ *max_y = bbox.MaxEdge.Y;
+ *max_z = bbox.MaxEdge.Z;
+ }
+}
+
+
+int rc_getTerrainPatchLOD(int actor, int patchX, int patchZ)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return -1;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
+
+ irr::core::array lod;
+ int lodp_size = terrain->getCurrentLODOfPatches(lod);
+ irr::s32 dim_size = irr::core::squareroot(lodp_size);
+ return lod[patchX * dim_size + patchZ];
+ }
+
+ return -1;
+}
+
+double rc_getTerrainHeight(int actor, int patchX, int patchZ )
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
+ return terrain->getHeight(patchX, patchZ);
+ }
+
+ return 0;
+}
+
+void rc_getTerrainCenter(int actor, double* x, double* y, double* z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
+ irr::core::vector3df v = terrain->getTerrainCenter();
+ *x = v.X;
+ *y = v.Y;
+ *z = v.Z;
+ }
+}
+
+void rc_setTerrainLODDistance(int actor, int lod, double distance)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
+ terrain->overrideLODDistance(lod, distance);
+ }
+}
+
+void rc_scaleTerrainTexture(int actor, double scale1, double scale2)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
+ terrain->scaleTexture(scale1, scale2);
+ }
+}
+
+void rc_setTerrainCameraMovementDelta(int actor, double delta)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
+ terrain->setCameraMovementDelta(delta);
+ }
+}
+
+void rc_setTerrainCameraRotationDelta(int actor, double delta)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
+ terrain->setCameraRotationDelta(delta);
+ }
+}
+
+void rc_setTerrainPatchLOD(int actor, int patchX, int patchZ, int lod)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ switch(rc_actor[actor].node_type)
+ {
+ case RC_NODE_TYPE_TERRAIN:
+ irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
+ terrain->setLODOfPatch(patchX, patchZ, lod);
+ }
+}
+
+#endif // RC_BASE_ACTOR_H_INCLUDED
diff --git a/rcbasic_runtime/rc_camera.h b/rcbasic_runtime/rc_camera.h
new file mode 100644
index 0000000..6bfda8d
--- /dev/null
+++ b/rcbasic_runtime/rc_camera.h
@@ -0,0 +1,166 @@
+#ifndef RC_CAMERA_H_INCLUDED
+#define RC_CAMERA_H_INCLUDED
+
+void rc_setCameraPosition(double x, double y, double z)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.setPosition(x, y, z);
+}
+
+void rc_getCameraPosition(double* x, double* y, double* z)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ irr::f32 fx, fy, fz;
+
+ rc_canvas[rc_active_canvas].camera.getPosition(fx, fy, fz);
+
+ *x = fx;
+ *y = fy;
+ *z = fz;
+}
+
+void rc_translateCamera(double x, double y, double z)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.translate(x, y, z);
+}
+
+void rc_translateCameraW(double x, double y, double z)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.translateW(x, y, z);
+}
+
+
+void rc_setCameraRotation(double x, double y, double z)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.setRotation(x, y, z);
+}
+
+void rc_getCameraRotation(double* x, double* y, double* z)
+{
+ if(rc_active_canvas <= 0 || rc_active_canvas >= rc_canvas.size())
+ return;
+
+ *x = rc_canvas[rc_active_canvas].camera.rx;
+ *y = rc_canvas[rc_active_canvas].camera.ry;
+ *z = rc_canvas[rc_active_canvas].camera.rz;
+
+ //std::cout << "Get Rotation: " << x[0] << ", " << y[0] << ", " << z[0] << std::endl;
+}
+
+void rc_rotateCamera(double x, double y, double z)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.rotate(x, y, z);
+}
+
+void rc_setCameraFOV(double fov)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.camera->setFOV(fov);
+}
+
+double rc_getCameraFOV()
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return 0;
+
+ return rc_canvas[rc_active_canvas].camera.camera->getFOV();
+}
+
+void rc_setCameraAspectRatio(double aspect)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.camera->setAspectRatio(aspect);
+}
+
+double rc_getCameraAspectRatio()
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return 0;
+
+ return rc_canvas[rc_active_canvas].camera.camera->getAspectRatio();
+}
+
+void rc_setCameraFarValue(double zf)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.camera->setFarValue(zf);
+}
+
+double rc_getCameraFarValue()
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return 0;
+
+ return rc_canvas[rc_active_canvas].camera.camera->getFarValue();
+}
+
+void rc_setCameraNearValue(double zn)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ rc_canvas[rc_active_canvas].camera.camera->setNearValue(zn);
+}
+
+double rc_getCameraNearValue()
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return 0;
+
+ return rc_canvas[rc_active_canvas].camera.camera->getNearValue();
+}
+
+void rc_setProjectionMatrix(int proj_matrix, int proj_type)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ if(proj_matrix < 0 || proj_matrix >= rc_matrix.size())
+ return;
+
+ if(!rc_matrix[proj_matrix].active)
+ return;
+
+ irr::core::matrix4 irr_mat = rc_convertToIrrMatrix(proj_matrix);
+ bool isOrtho = (proj_type == RC_PROJECTION_TYPE_ORTHOGRAPHIC);
+ rc_canvas[rc_active_canvas].camera.camera->setProjectionMatrix(irr_mat, isOrtho);
+}
+
+void rc_getProjectionMatrix(int proj_matrix)
+{
+ if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
+ return;
+
+ if(proj_matrix < 0 || proj_matrix >= rc_matrix.size())
+ return;
+
+ if(!rc_matrix[proj_matrix].active)
+ return;
+
+ irr::core::matrix4 pmat = rc_canvas[rc_active_canvas].camera.camera->getProjectionMatrix();
+ rc_convertFromIrrMatrix(pmat, proj_matrix);
+}
+
+#endif // RC_CAMERA_H_INCLUDED
diff --git a/rcbasic_runtime/rc_constraint.h b/rcbasic_runtime/rc_constraint.h
new file mode 100644
index 0000000..11e8e1d
--- /dev/null
+++ b/rcbasic_runtime/rc_constraint.h
@@ -0,0 +1,1976 @@
+#ifndef RC_CONSTRAINT_H_INCLUDED
+#define RC_CONSTRAINT_H_INCLUDED
+
+int getConstraintId()
+{
+ int cid = -1;
+ for(int i = 0; i < rc_physics3D.constraints.size(); i++)
+ {
+ if(rc_physics3D.constraints[i].type <= 0)
+ {
+ cid = i;
+ break;
+ }
+ }
+
+ if(cid >= 0)
+ return cid;
+
+ rc_constraint_obj constraint;
+ cid = rc_physics3D.constraints.size();
+ rc_physics3D.constraints.push_back(constraint);
+ return cid;
+}
+
+int rc_createPointConstraint(int actorA, double pxA, double pyA, double pzA)
+{
+ if(actorA < 0 || actorA >= rc_actor.size())
+ return -1;
+
+ if(rc_actor[actorA].physics.rigid_body)
+ {
+ rc_constraint_obj p2p;
+ p2p.type = RC_CONSTRAINT_TYPE_POINT;
+ btVector3 pvtA(pxA, pyA, pzA);
+ p2p.constraint = new btPoint2PointConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), pvtA);
+ rc_physics3D.world->getPointer()->addConstraint(p2p.constraint);
+ int constraint_id = getConstraintId();
+ rc_physics3D.constraints[constraint_id] = p2p;
+ return constraint_id;
+ }
+
+ return -1;
+}
+
+int rc_createPointConstraintEx(int actorA, int actorB, double pxA, double pyA, double pzA, double pxB, double pyB, double pzB)
+{
+ if(actorA < 0 || actorA >= rc_actor.size() || actorB < 0 || actorB >= rc_actor.size())
+ return -1;
+
+ if(rc_actor[actorA].physics.rigid_body && rc_actor[actorB].physics.rigid_body)
+ {
+ rc_constraint_obj p2p;
+ p2p.type = RC_CONSTRAINT_TYPE_POINT;
+ btVector3 pvtA(pxA, pyA, pzA);
+ btVector3 pvtB(pxB, pyB, pzB);
+ p2p.constraint = new btPoint2PointConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), *rc_actor[actorB].physics.rigid_body->getPointer(),
+ pvtA, pvtB);
+ rc_physics3D.world->getPointer()->addConstraint(p2p.constraint);
+ int constraint_id = getConstraintId();
+ rc_physics3D.constraints[constraint_id] = p2p;
+ return constraint_id;
+ }
+
+ return -1;
+}
+
+void rc_setPointPivotA(int constraint_id, double x, double y, double z)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* c = (btPoint2PointConstraint*)rc_physics3D.constraints[constraint_id].constraint;
+ c->setPivotA(btVector3(x, y, z));
+ }
+}
+
+void rc_setPointPivotB(int constraint_id, double x, double y, double z)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* c = (btPoint2PointConstraint*)rc_physics3D.constraints[constraint_id].constraint;
+ c->setPivotB(btVector3(x, y, z));
+ }
+}
+
+int rc_createHingeConstraint(int actorA, int frameInA_matrix, bool useReferenceFrameA)
+{
+ if(actorA < 0 || actorA >= rc_actor.size())
+ return -1;
+
+ if(rc_actor[actorA].physics.rigid_body)
+ {
+ rc_constraint_obj hinge;
+ hinge.type = RC_CONSTRAINT_TYPE_HINGE;
+
+ irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(frameInA_matrix);
+ btTransform frameInA;
+ btTransformFromIrrlichtMatrix(irr_matA, frameInA);
+
+ hinge.constraint = new btHingeConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), frameInA, useReferenceFrameA);
+ rc_physics3D.world->getPointer()->addConstraint(hinge.constraint);
+ int constraint_id = getConstraintId();
+ rc_physics3D.constraints[constraint_id] = hinge;
+ return constraint_id;
+ }
+
+ return -1;
+}
+
+
+int rc_createHingeConstraintEx(int actorA, int actorB, int frameInA_matrix, int frameInB_matrix, bool useReferenceFrameA)
+{
+ if(actorA < 0 || actorA >= rc_actor.size() || actorB < 0 || actorB >= rc_actor.size())
+ return -1;
+
+ if(rc_actor[actorA].physics.rigid_body && rc_actor[actorB].physics.rigid_body)
+ {
+ rc_constraint_obj hinge;
+ hinge.type = RC_CONSTRAINT_TYPE_HINGE;
+
+ irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(frameInA_matrix);
+ irr::core::matrix4 irr_matB = rc_convertToIrrMatrix(frameInB_matrix);
+
+ btTransform frameInA, frameInB;
+ btTransformFromIrrlichtMatrix(irr_matA, frameInA);
+ btTransformFromIrrlichtMatrix(irr_matB, frameInB);
+
+ hinge.constraint = new btHingeConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), *rc_actor[actorB].physics.rigid_body->getPointer(), frameInA, frameInB, useReferenceFrameA);
+ rc_physics3D.world->getPointer()->addConstraint(hinge.constraint);
+ int constraint_id = getConstraintId();
+ rc_physics3D.constraints[constraint_id] = hinge;
+ return constraint_id;
+ }
+
+ return -1;
+}
+
+int rc_createSlideConstraint(int actorA, int frameInB_matrix, bool useLinearReferenceFrameA)
+{
+ if(actorA < 0 || actorA >= rc_actor.size())
+ return -1;
+
+ if(rc_actor[actorA].physics.rigid_body)
+ {
+ rc_constraint_obj slide;
+ slide.type = RC_CONSTRAINT_TYPE_SLIDER;
+
+ irr::core::matrix4 irr_mat = rc_convertToIrrMatrix(frameInB_matrix);
+ btTransform frameInB;
+ btTransformFromIrrlichtMatrix(irr_mat, frameInB);
+
+ slide.constraint = new btSliderConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), frameInB, useLinearReferenceFrameA);
+ rc_physics3D.world->getPointer()->addConstraint(slide.constraint);
+ int constraint_id = getConstraintId();
+ rc_physics3D.constraints[constraint_id] = slide;
+ return constraint_id;
+ }
+
+ return -1;
+}
+
+int rc_createSlideConstraintEx(int actorA, int actorB, int frameInA_matrix, int frameInB_matrix, bool useLinearReferenceFrameA)
+{
+ if(actorA < 0 || actorA >= rc_actor.size() || actorB < 0 || actorB >= rc_actor.size())
+ return -1;
+
+ if(rc_actor[actorA].physics.rigid_body && rc_actor[actorB].physics.rigid_body)
+ {
+ rc_constraint_obj slide;
+ slide.type = RC_CONSTRAINT_TYPE_SLIDER;
+
+ irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(frameInA_matrix);
+ irr::core::matrix4 irr_matB = rc_convertToIrrMatrix(frameInB_matrix);
+
+ btTransform frameInA, frameInB;
+ btTransformFromIrrlichtMatrix(irr_matA, frameInA);
+ btTransformFromIrrlichtMatrix(irr_matB, frameInB);
+
+ slide.constraint = new btSliderConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), *rc_actor[actorB].physics.rigid_body->getPointer(), frameInA, frameInB, useLinearReferenceFrameA);
+ rc_physics3D.world->getPointer()->addConstraint(slide.constraint);
+ int constraint_id = getConstraintId();
+ rc_physics3D.constraints[constraint_id] = slide;
+ return constraint_id;
+ }
+
+ return -1;
+}
+
+
+int rc_createConeConstraint(int actorA, int rbAFrame_matrix)
+{
+ if(actorA < 0 || actorA >= rc_actor.size())
+ return -1;
+
+ if(rc_actor[actorA].physics.rigid_body)
+ {
+ rc_constraint_obj cone;
+ cone.type = RC_CONSTRAINT_TYPE_CONE;
+
+ irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(rbAFrame_matrix);
+
+ btTransform rba;
+ btTransformFromIrrlichtMatrix(irr_matA, rba);
+
+ cone.constraint = new btConeTwistConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), rba);
+ rc_physics3D.world->getPointer()->addConstraint(cone.constraint);
+ int constraint_id = getConstraintId();
+ rc_physics3D.constraints[constraint_id] = cone;
+ return constraint_id;
+ }
+
+ return -1;
+}
+
+int rc_createConeConstraintEx(int actorA, int actorB, int rbAFrame_matrix, int rbBFrame_matrix)
+{
+ if(actorA < 0 || actorA >= rc_actor.size() || actorB < 0 || actorB >= rc_actor.size())
+ return -1;
+
+ if(rc_actor[actorA].physics.rigid_body && rc_actor[actorB].physics.rigid_body)
+ {
+ rc_constraint_obj cone;
+ cone.type = RC_CONSTRAINT_TYPE_CONE;
+
+ irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(rbAFrame_matrix);
+ irr::core::matrix4 irr_matB = rc_convertToIrrMatrix(rbBFrame_matrix);
+
+ btTransform rba, rbb;
+ btTransformFromIrrlichtMatrix(irr_matA, rba);
+ btTransformFromIrrlichtMatrix(irr_matB, rbb);
+
+ cone.constraint = new btConeTwistConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), *rc_actor[actorB].physics.rigid_body->getPointer(), rba, rbb);
+ rc_physics3D.world->getPointer()->addConstraint(cone.constraint);
+ int constraint_id = getConstraintId();
+ rc_physics3D.constraints[constraint_id] = cone;
+ return constraint_id;
+ }
+
+ return -1;
+}
+
+void rc_deleteConstraint(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].constraint)
+ {
+ rc_physics3D.world->getPointer()->removeConstraint(rc_physics3D.constraints[constraint_id].constraint);
+ rc_physics3D.constraints[constraint_id].constraint = NULL;
+ rc_physics3D.constraints[constraint_id].type = 0;
+ }
+}
+
+bool rc_constraintExists(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return false;
+
+ if(rc_physics3D.constraints[constraint_id].constraint)
+ return true;
+
+ return false;
+}
+
+
+void rc_getConstraintFrameOffsetA(int constraint_id, double* x, double* y, double* z, double* rx, double* ry, double* rz)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ *rx = 0;
+ *ry = 0;
+ *rz = 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*)rc_physics3D.constraints[constraint_id].constraint;
+ //btTransform t = hinge->getFrameOffsetA();
+ //t.getBasis().getEulerZYX()
+ *x = hinge->getFrameOffsetA().getOrigin().getX();
+ *y = hinge->getFrameOffsetA().getOrigin().getY();
+ *z = hinge->getFrameOffsetA().getOrigin().getZ();
+
+ btScalar yaw, pitch, roll;
+ hinge->getFrameOffsetA().getBasis().getEulerZYX(yaw, pitch, roll);
+ *rx = rc_util_degrees(roll);
+ *ry = rc_util_degrees(pitch);
+ *rz = rc_util_degrees(yaw);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*)rc_physics3D.constraints[constraint_id].constraint;
+ *x = cone->getFrameOffsetA().getOrigin().getX();
+ *y = cone->getFrameOffsetA().getOrigin().getY();
+ *z = cone->getFrameOffsetA().getOrigin().getZ();
+
+ btScalar yaw, pitch, roll;
+ cone->getFrameOffsetA().getBasis().getEulerZYX(yaw, pitch, roll);
+ *rx = rc_util_degrees(roll);
+ *ry = rc_util_degrees(pitch);
+ *rz = rc_util_degrees(yaw);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*)rc_physics3D.constraints[constraint_id].constraint;
+ *x = slide->getFrameOffsetA().getOrigin().getX();
+ *y = slide->getFrameOffsetA().getOrigin().getY();
+ *z = slide->getFrameOffsetA().getOrigin().getZ();
+
+ btScalar yaw, pitch, roll;
+ slide->getFrameOffsetA().getBasis().getEulerZYX(yaw, pitch, roll);
+ *rx = rc_util_degrees(roll);
+ *ry = rc_util_degrees(pitch);
+ *rz = rc_util_degrees(yaw);
+ }
+}
+
+void rc_getConstraintFrameOffsetB(int constraint_id, double* x, double* y, double* z, double* rx, double* ry, double* rz)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ *rx = 0;
+ *ry = 0;
+ *rz = 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*)rc_physics3D.constraints[constraint_id].constraint;
+ *x = hinge->getFrameOffsetB().getOrigin().getX();
+ *y = hinge->getFrameOffsetB().getOrigin().getY(); btTransform:
+ *z = hinge->getFrameOffsetB().getOrigin().getZ();
+
+ btScalar yaw, pitch, roll;
+ hinge->getFrameOffsetB().getBasis().getEulerZYX(yaw, pitch, roll);
+ *rx = rc_util_degrees(roll);
+ *ry = rc_util_degrees(pitch);
+ *rz = rc_util_degrees(yaw);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*)rc_physics3D.constraints[constraint_id].constraint;
+ *x = cone->getFrameOffsetB().getOrigin().getX();
+ *y = cone->getFrameOffsetB().getOrigin().getY();
+ *z = cone->getFrameOffsetB().getOrigin().getZ();
+
+ btScalar yaw, pitch, roll;
+ cone->getFrameOffsetB().getBasis().getEulerZYX(yaw, pitch, roll);
+ *rx = rc_util_degrees(roll);
+ *ry = rc_util_degrees(pitch);
+ *rz = rc_util_degrees(yaw);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*)rc_physics3D.constraints[constraint_id].constraint;
+ *x = slide->getFrameOffsetB().getOrigin().getX();
+ *y = slide->getFrameOffsetB().getOrigin().getY();
+ *z = slide->getFrameOffsetB().getOrigin().getZ();
+
+ btScalar yaw, pitch, roll;
+ slide->getFrameOffsetB().getBasis().getEulerZYX(yaw, pitch, roll);
+ *rx = rc_util_degrees(roll);
+ *ry = rc_util_degrees(pitch);
+ *rz = rc_util_degrees(yaw);
+ }
+}
+
+
+void rc_useConstraintFrameOffset(int constraint_id, bool flag)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ hinge->setUseFrameOffset(flag);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setUseFrameOffset(flag);
+ }
+}
+
+//btHingeConstraint::getHingeAngle()
+double rc_getHingeAngle(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(hinge->getHingeAngle());
+ }
+
+ return 0;
+}
+
+double rc_getHingeAngleEx(int constraint_id, int t_matrixA, int t_matrixB)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btTransform transformA, transformB;
+ irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(t_matrixA);
+ irr::core::matrix4 irr_matB = rc_convertToIrrMatrix(t_matrixB);
+ btTransformFromIrrlichtMatrix(irr_matA, transformA);
+ btTransformFromIrrlichtMatrix(irr_matB, transformB);
+ return rc_util_degrees(hinge->getHingeAngle(transformA, transformB));
+ }
+
+ return 0;
+}
+
+//btHingeConstraint::getBreakingImpulseThreshold()
+double rc_getConstraintBreakingImpulseThreshold(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getBreakingImpulseThreshold();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return p2p->getBreakingImpulseThreshold();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getBreakingImpulseThreshold();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getBreakingImpulseThreshold();
+ }
+
+ return 0;
+}
+
+//btHingeConstraint::getAFrame()
+int rc_getConstraintAFrame(int constraint_id, int mA)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return -1;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btTransform aframe = hinge->getAFrame();
+ irr::core::matrix4 irr_mat;
+ btTransformToIrrlichtMatrix(aframe, irr_mat);
+ mA = rc_convertFromIrrMatrix(irr_mat, mA);
+ return mA;
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btTransform aframe = cone->getAFrame();
+ irr::core::matrix4 irr_mat;
+ btTransformToIrrlichtMatrix(aframe, irr_mat);
+ mA = rc_convertFromIrrMatrix(irr_mat, mA);
+ return mA;
+ }
+
+ return -1;
+}
+
+//btHingeConstraint::getBFrame()
+int rc_getConstraintBFrame(int constraint_id, int mA)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return -1;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btTransform bframe = hinge->getBFrame();
+ irr::core::matrix4 irr_mat;
+ btTransformToIrrlichtMatrix(bframe, irr_mat);
+ mA = rc_convertFromIrrMatrix(irr_mat, mA);
+ return mA;
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btTransform bframe = cone->getBFrame();
+ irr::core::matrix4 irr_mat;
+ btTransformToIrrlichtMatrix(bframe, irr_mat);
+ mA = rc_convertFromIrrMatrix(irr_mat, mA);
+ return mA;
+ }
+
+ return -1;
+}
+
+//btHingeConstraint::setAxis()
+void rc_setHingeAxis(int constraint_id, double x, double y, double z)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btVector3 axis(x,y,z);
+ hinge->setAxis(axis);
+ }
+}
+
+//btHingeConstraint::setBreakingImpulseThreshold()
+void rc_setConstraintBreakingImpulseThreshold(int constraint_id, double threshold)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ hinge->setBreakingImpulseThreshold(threshold);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ p2p->setBreakingImpulseThreshold(threshold);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ cone->setBreakingImpulseThreshold(threshold);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setBreakingImpulseThreshold(threshold);
+ }
+}
+
+//btHingeConstraint::setFrames()
+void rc_setConstraintFrames(int constraint_id, int frameA_matrix, int frameB_matrix)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btTransform frameA, frameB;
+ irr::core::matrix4 irr_matA, irr_matB;
+ irr_matA = rc_convertToIrrMatrix(frameA_matrix);
+ irr_matB = rc_convertToIrrMatrix(frameB_matrix);
+ btTransformFromIrrlichtMatrix(irr_matA, frameA);
+ btTransformFromIrrlichtMatrix(irr_matB, frameB);
+ hinge->setFrames(frameA, frameB);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btTransform frameA, frameB;
+ irr::core::matrix4 irr_matA, irr_matB;
+ irr_matA = rc_convertToIrrMatrix(frameA_matrix);
+ irr_matB = rc_convertToIrrMatrix(frameB_matrix);
+ btTransformFromIrrlichtMatrix(irr_matA, frameA);
+ btTransformFromIrrlichtMatrix(irr_matB, frameB);
+ cone->setFrames(frameA, frameB);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btTransform frameA, frameB;
+ irr::core::matrix4 irr_matA, irr_matB;
+ irr_matA = rc_convertToIrrMatrix(frameA_matrix);
+ irr_matB = rc_convertToIrrMatrix(frameB_matrix);
+ btTransformFromIrrlichtMatrix(irr_matA, frameA);
+ btTransformFromIrrlichtMatrix(irr_matB, frameB);
+ slide->setFrames(frameA, frameB);
+ }
+}
+
+//btHingeConstraint::setLimit();
+void rc_setHingeLimit(int constraint_id, double low, double high, double softness, double bias_factor, double relaxation_factor)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ hinge->setLimit(rc_util_radians(low), rc_util_radians(high), softness, bias_factor, relaxation_factor);
+ }
+}
+
+void rc_setConeLimit(int constraint_id, double swingSpan1, double swingSpan2, double twistSpan, double softness, double bias_factor, double relaxation_factor)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ cone->setLimit(rc_util_radians(swingSpan1), rc_util_radians(swingSpan2), rc_util_radians(twistSpan), softness, bias_factor, relaxation_factor);
+ }
+}
+
+//btHingeConstraint::getLimitBiasFactor()
+double rc_getHingeLimitBiasFactor(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getLimitBiasFactor();
+ }
+
+ return 0;
+}
+
+//btHingeConstraint::getLimitRelaxationFactor()
+double rc_getHingeLimitRelaxationFactor(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getLimitRelaxationFactor();
+ }
+
+ return 0;
+}
+
+//btHingeConstraint::getLimitSign()
+double rc_getHingeLimitSign(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getLimitSign();
+ }
+
+ return 0;
+}
+
+//btHingeConstraint::getSolveLimit()
+int rc_getHingeSolveLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getSolveLimit();
+ }
+
+ return 0;
+}
+
+//btHingeConstraint::setUseReferenceFrameA()
+void rc_useHingeReferenceFrameA(int constraint_id, bool flag)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ hinge->setUseReferenceFrameA(flag);
+ }
+}
+
+
+//
+//btPoint2PointConstraint::getAppliedImpulse()
+double rc_getConstraintAppliedImpulse(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getAppliedImpulse();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return p2p->getAppliedImpulse();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getAppliedImpulse();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getAppliedImpulse();
+ }
+
+ return 0;
+}
+
+
+//btPoint2PointConstraint::getFixedBody()
+int rc_getConstraintFixedActor(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return -1;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = hinge->getFixedBody();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = p2p->getFixedBody();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = cone->getFixedBody();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = slide->getFixedBody();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+
+ return -1;
+}
+
+//btPoint2PointConstraint::getPivotInA()
+void rc_getPointPivotA(int constraint_id, double* x, double* y, double* z)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btVector3 pivot = p2p->getPivotInA();
+ *x = pivot.getX();
+ *y = pivot.getY();
+ *z = pivot.getZ();
+ }
+}
+
+//btPoint2PointConstraint::getPivotInB()
+void rc_getPointPivotB(int constraint_id, double* x, double* y, double* z)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btVector3 pivot = p2p->getPivotInB();
+ *x = pivot.getX();
+ *y = pivot.getY();
+ *z = pivot.getZ();
+ }
+}
+
+//btPoint2PointConstraint::getRigidBodyA()
+int rc_getConstraintActorA(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return -1;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = hinge->getRigidBodyA();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = p2p->getRigidBodyA();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = cone->getRigidBodyA();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = slide->getRigidBodyA();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+
+ return -1;
+}
+
+//btPoint2PointConstraint::getRigidBodyB()
+int rc_getConstraintActorB(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return -1;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = hinge->getRigidBodyB();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = p2p->getRigidBodyB();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = cone->getRigidBodyB();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btRigidBody body = slide->getRigidBodyB();
+ SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
+ return identification->getId();
+ }
+
+ return -1;
+}
+
+//btPoint2PointConstraint::setOverrideNumSolverIterations()
+void rc_setConstraintSolverIterations(int constraint_id, int num)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ hinge->setOverrideNumSolverIterations(num);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ p2p->setOverrideNumSolverIterations(num);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ cone->setOverrideNumSolverIterations(num);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setOverrideNumSolverIterations(num);
+ }
+}
+
+//
+//btConeTwistConstraint::getBiasFactor()
+double rc_getConeBiasFactor(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getBiasFactor();
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getDamping()
+double rc_getConeDamping(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getDamping();
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getFixThresh()
+double rc_getConeFixThresh(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getFixThresh();
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getLimit()
+double rc_getConeLimit(int constraint_id, int limit_index)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(cone->getLimit(limit_index));
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getLimitSoftness()
+double rc_getConstraintLimitSoftness(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getLimitSoftness();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getLimitSoftness();
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getOverrideNumSolverIterations()
+double rc_getConstraintSolverIterations(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getOverrideNumSolverIterations();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
+ {
+ btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return p2p->getOverrideNumSolverIterations();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getOverrideNumSolverIterations();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getOverrideNumSolverIterations();
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::GetPointForAngle()
+void rc_getConeAnglePoint(int constraint_id, double angle, double len, double* x, double* y, double* z)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btVector3 v = cone->GetPointForAngle( radians(angle), len);
+ *x = v.getX();
+ *y = v.getY();
+ *z = v.getZ();
+ }
+}
+
+//btConeTwistConstraint::getAngularOnly()
+bool rc_getConstraintAngularOnly(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return false;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return hinge->getAngularOnly();
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getAngularOnly();
+ }
+
+ return false;
+}
+
+//btConeTwistConstraint::getSolveSwingLimit()
+int rc_getConeSolveSwingLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getSolveSwingLimit();
+ }
+
+ return 0;
+}
+
+int rc_getConeSolveTwistLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getSolveTwistLimit();
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getSwingSpan1()
+double rc_getConeSwingSpan1(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(cone->getSwingSpan1());
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getSwingSpan2()
+int rc_getConeSwingSpan2(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(cone->getSwingSpan2());
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getTwistAngle()
+double rc_getConeTwistAngle(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(cone->getTwistAngle());
+ }
+
+ return 0;
+}
+
+
+//btConeTwistConstraint::getTwistLimitSign()
+double rc_getConeTwistLimitSign(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return cone->getTwistLimitSign();
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::getTwistSpan()
+int rc_getConeTwistSpan(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(cone->getTwistSpan());
+ }
+
+ return 0;
+}
+
+//btConeTwistConstraint::setAngularOnly()
+void rc_setConstraintAngularOnly(int constraint_id, bool flag)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
+ {
+ btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ hinge->setAngularOnly(flag);
+ }
+ else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ cone->setAngularOnly(flag);
+ }
+}
+
+//btConeTwistConstraint::setDamping()
+void rc_setConeDamping(int constraint_id, double damping)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ cone->setDamping(damping);
+ }
+}
+
+//btConeTwistConstraint::setFixThresh()
+void rc_setConeFixThresh(int constraint_id, double fixThresh)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
+ {
+ btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ cone->setFixThresh(fixThresh);
+ }
+}
+
+
+//btSliderConstraint::getAncorInA()
+void rc_getSlideAnchorA(int constraint_id, double* x, double* y, double* z)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btVector3 v = slide->getAncorInA();
+ *x = v.getX();
+ *y = v.getY();
+ *z = v.getZ();
+ }
+}
+
+//btSliderConstraint::getAncorInB()
+void rc_getSlideAnchorB(int constraint_id, double* x, double* y, double* z)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ btVector3 v = slide->getAncorInB();
+ *x = v.getX();
+ *y = v.getY();
+ *z = v.getZ();
+ }
+}
+
+//btSliderConstraint::getAngDepth()
+double rc_getSlideAngDepth(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(slide->getAngDepth());
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getAngularPos()
+double rc_getSlideAngularPos(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(slide->getAngularPos());
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getDampingDirAng()
+double rc_getSlideDampingDirAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(slide->getDampingDirAng());
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getDampingDirLin()
+double rc_getSlideDampingDirLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getDampingDirLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getDampingLimAng()
+double rc_getSlideDampingLimAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(slide->getDampingLimAng());
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getDampingLimLin()
+double rc_getSlideDampingLimLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getDampingLimLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getDampingOrthoAng()
+double rc_getSlideDampingOrthoAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(slide->getDampingOrthoAng());
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getDampingOrthoLin()
+double rc_getSlideDampingOrthoLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getDampingOrthoLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getLinearPos()
+double rc_getSlideLinearPos(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getLinearPos();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getLinDepth()
+double rc_getSlideLinDepth(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getLinDepth();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getLowerAngLimit()
+double rc_getSlideLowerAngLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(slide->getLowerAngLimit());
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getLowerLinLimit()
+double rc_getSlideLowerLinLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getLowerLinLimit();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getRestitutionDirAng()
+double rc_getSlideRestitutionDirAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getRestitutionDirAng();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getRestitutionDirLin()
+double rc_getSlideRestitutionDirLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getRestitutionDirLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getRestitutionLimAng()
+double rc_getSlideRestitutionLimAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getRestitutionLimAng();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getRestitutionLimLin()
+double rc_getSlideRestitutionLimLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getRestitutionLimLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getRestitutionOrthoAng()
+double rc_getSlideRestitutionOrthoAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getRestitutionOrthoAng();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getRestitutionOrthoLin()
+double rc_getSlideRestitutionOrthoLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getRestitutionOrthoLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getSoftnessDirAng()
+double rc_getSlideSoftnessDirAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getSoftnessDirAng();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getSoftnessDirLin()
+double rc_getSlideSoftnessDirLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getSoftnessDirLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getSoftnessLimAng()
+double rc_getSlideSoftnessLimAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getSoftnessLimAng();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getSoftnessLimLin()
+double rc_getSlideSoftnessLimLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getSoftnessLimLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getSoftnessOrthoAng()
+double rc_getSlideSoftnessOrthoAng(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getSoftnessOrthoAng();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getSoftnessOrthoLin()
+double rc_getSlideSoftnessOrthoLin(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getSoftnessOrthoLin();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getSolveAngLimit()
+bool rc_getSlideSolveAngLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(slide->getSolveAngLimit());
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getSolveLinLimit()
+bool rc_getSlideSolveLinLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getSolveLinLimit();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getUpperAngLimit()
+double rc_getSlideUpperAngLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return rc_util_degrees(slide->getUpperAngLimit());
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getUpperLinLimit()
+double rc_getSlideUpperLinLimit(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getUpperLinLimit();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::getUseFrameOffset()
+bool rc_getSlideUseFrameOffset(int constraint_id)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return 0;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ return slide->getUseFrameOffset();
+ }
+
+ return 0;
+}
+
+//btSliderConstraint::setDampingDirAng()
+void rc_setSlideDampingDirAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setDampingDirAng(rc_util_radians(n));
+ }
+}
+
+//btSliderConstraint::setDampingDirLin()
+void rc_setSlideDampingDirLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setDampingDirLin(n);
+ }
+}
+
+//btSliderConstraint::setDampingLimAng()
+void rc_setSlideDampingLimAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setDampingLimAng(rc_util_radians(n));
+ }
+}
+
+//btSliderConstraint::setDampingLimLin()
+void rc_setSlideDampingLimLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setDampingLimLin(n);
+ }
+}
+
+//btSliderConstraint::setDampingOrthoAng()
+void rc_setSlideDampingOrthoAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setDampingOrthoAng(rc_util_radians(n));
+ }
+}
+
+//btSliderConstraint::setDampingOrthoLin()
+void rc_setSlideDampingOrthoLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setDampingOrthoLin(n);
+ }
+}
+
+//btSliderConstraint::setLowerAngLimit()
+void rc_setSlideLowerAngLimit(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setLowerAngLimit(rc_util_radians(n));
+ }
+}
+
+//btSliderConstraint::setLowerLinLimit()
+void rc_setSlideLowerLinLimit(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setLowerLinLimit(n);
+ }
+}
+
+//btSliderConstraint::setRestitutionDirAng()
+void rc_setSlideRestitutionDirAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setRestitutionDirAng(n);
+ }
+}
+
+//btSliderConstraint::setRestitutionDirLin()
+void rc_setSlideRestitutionDirLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setRestitutionDirLin(n);
+ }
+}
+
+//btSliderConstraint::setRestitutionLimAng()
+void rc_setSlideRestitutionLimAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setRestitutionLimAng(n);
+ }
+}
+
+//btSliderConstraint::setRestitutionLimLin()
+void rc_setSlideRestitutionLimLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setRestitutionLimLin(n);
+ }
+}
+
+//btSliderConstraint::setRestitutionOrthoAng()
+void rc_setSlideRestitutionOrthoAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setRestitutionOrthoAng(n);
+ }
+}
+
+//btSliderConstraint::setRestitutionOrthoLin()
+void rc_setSlideRestitutionOrthoLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setRestitutionOrthoLin(n);
+ }
+}
+
+//btSliderConstraint::setSoftnessDirAng()
+void rc_setSlideSoftnessDirAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setSoftnessDirAng(n);
+ }
+}
+
+//btSliderConstraint::setSoftnessDirLin()
+void rc_setSlideSoftnessDirLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setSoftnessDirLin(n);
+ }
+}
+
+//btSliderConstraint::setSoftnessLimAng()
+void rc_setSlideSoftnessLimAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setSoftnessLimAng(n);
+ }
+}
+
+//btSliderConstraint::setSoftnessLimLin()
+void rc_setSlideSoftnessLimLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setSoftnessLimLin(n);
+ }
+}
+
+//btSliderConstraint::setSoftnessOrthoAng()
+void rc_setSlideSoftnessOrthoAng(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setSoftnessOrthoAng(n);
+ }
+}
+
+//btSliderConstraint::setSoftnessOrthoLin()
+void rc_setSlideSoftnessOrthoLin(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setSoftnessOrthoLin(n);
+ }
+}
+
+//btSliderConstraint::setUpperAngLimit()
+void rc_setSlideUpperAngLimit(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setUpperAngLimit(rc_util_radians(n));
+ }
+}
+
+//btSliderConstraint::setUpperLinLimit()
+void rc_setSlideUpperLinLimit(int constraint_id, double n)
+{
+ if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
+ return;
+
+ if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
+ {
+ btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
+ slide->setUpperLinLimit(n);
+ }
+}
+
+
+
+#endif // RC_CONSTRAINT_H_INCLUDED
diff --git a/rcbasic_runtime/rc_defines.h b/rcbasic_runtime/rc_defines.h
index d583133..71f95f4 100755
--- a/rcbasic_runtime/rc_defines.h
+++ b/rcbasic_runtime/rc_defines.h
@@ -516,12 +516,10 @@
#define SETCANVASPHYSICS2D_C_NUM num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCANVASPHYSICS2D_STATE num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define FN_OpenCanvasSpriteLayer 197
-#define OPENCANVASSPRITELAYER_W num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define OPENCANVASSPRITELAYER_H num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define OPENCANVASSPRITELAYER_VIEWPORT_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define OPENCANVASSPRITELAYER_VIEWPORT_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define OPENCANVASSPRITELAYER_VIEWPORT_W num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define OPENCANVASSPRITELAYER_VIEWPORT_H num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define OPENCANVASSPRITELAYER_VIEWPORT_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define OPENCANVASSPRITELAYER_VIEWPORT_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define OPENCANVASSPRITELAYER_VIEWPORT_W num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define OPENCANVASSPRITELAYER_VIEWPORT_H num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define FN_Circle 198
#define CIRCLE_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CIRCLE_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
@@ -1401,12 +1399,414 @@
#define FN_DeleteSpriteAnimation 489
#define DELETESPRITEANIMATION_SPRITE num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define DELETESPRITEANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_LoadMesh 490
+#define FN_getSpriteCenter 490
+#define GETSPRITECENTER_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITECENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITECENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_setSpriteLinearVelocity 491
+#define SETSPRITELINEARVELOCITY_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITELINEARVELOCITY_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETSPRITELINEARVELOCITY_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getSpriteLinearVelocity 492
+#define GETSPRITELINEARVELOCITY_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELINEARVELOCITY_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELINEARVELOCITY_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_setSpriteAngularVelocity 493
+#define SETSPRITEANGULARVELOCITY_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEANGULARVELOCITY_AV num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getSpriteAngularVelocity 494
+#define GETSPRITEANGULARVELOCITY_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_applySpriteForce 495
+#define APPLYSPRITEFORCE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITEFORCE_FX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define APPLYSPRITEFORCE_FY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define APPLYSPRITEFORCE_PX num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define APPLYSPRITEFORCE_PY num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_applySpriteCentralForce 496
+#define APPLYSPRITECENTRALFORCE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITECENTRALFORCE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define APPLYSPRITECENTRALFORCE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_applySpriteTorque 497
+#define APPLYSPRITETORQUE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITETORQUE_TORQUE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_applySpriteLinearImpulse 498
+#define APPLYSPRITELINEARIMPULSE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITELINEARIMPULSE_IX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define APPLYSPRITELINEARIMPULSE_IY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define APPLYSPRITELINEARIMPULSE_PX num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define APPLYSPRITELINEARIMPULSE_PY num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_applySpriteAngularImpulse 499
+#define APPLYSPRITEANGULARIMPULSE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define APPLYSPRITEANGULARIMPULSE_IMPULSE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getSpriteMass 500
+#define GETSPRITEMASS_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getSpriteInertia 501
+#define GETSPRITEINERTIA_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getSpriteWorldPoint 502
+#define GETSPRITEWORLDPOINT_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITEWORLDPOINT_LX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITEWORLDPOINT_LY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITEWORLDPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITEWORLDPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteWorldVector 503
+#define GETSPRITEWORLDVECTOR_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITEWORLDVECTOR_LX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITEWORLDVECTOR_LY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITEWORLDVECTOR_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITEWORLDVECTOR_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLocalPoint 504
+#define GETSPRITELOCALPOINT_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELOCALPOINT_WX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELOCALPOINT_WY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITELOCALPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITELOCALPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLocalVector 505
+#define GETSPRITELOCALVECTOR_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELOCALVECTOR_WX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELOCALVECTOR_WY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITELOCALVECTOR_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITELOCALVECTOR_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLinearVelocityFromLocalPoint 506
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_PX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_PY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMLOCALPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLinearVelocityFromWorldPoint 507
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_WX num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_WY num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETSPRITELINEARVELOCITYFROMWORLDPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_getSpriteLinearDamping 508
+#define GETSPRITELINEARDAMPING_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteLinearDamping 509
+#define SETSPRITELINEARDAMPING_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITELINEARDAMPING_LINEARDAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getSpriteAngularDamping 510
+#define GETSPRITEANGULARDAMPING_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteAngularDamping 511
+#define SETSPRITEANGULARDAMPING_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEANGULARDAMPING_ANGULARDAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getSpriteGravityScale 512
+#define GETSPRITEGRAVITYSCALE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteGravityScale 513
+#define SETSPRITEGRAVITYSCALE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEGRAVITYSCALE_G_SCALE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_setSpriteBullet 514
+#define SETSPRITEBULLET_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEBULLET_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_spriteIsBullet 515
+#define SPRITEISBULLET_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteSleepAllowed 516
+#define SETSPRITESLEEPALLOWED_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITESLEEPALLOWED_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_spriteSleepAllowed 517
+#define SPRITESLEEPALLOWED_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteAwake 518
+#define SETSPRITEAWAKE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEAWAKE_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_spriteIsAwake 519
+#define SPRITEISAWAKE_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setSpriteFixedRotation 520
+#define SETSPRITEFIXEDROTATION_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETSPRITEFIXEDROTATION_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_spriteIsFixedRotation 521
+#define SPRITEISFIXEDROTATION_SPR_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_createDistanceJoint 522
+#define CREATEDISTANCEJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEDISTANCEJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEDISTANCEJOINT_AX num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEDISTANCEJOINT_AY num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEDISTANCEJOINT_BX num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define CREATEDISTANCEJOINT_BY num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define CREATEDISTANCEJOINT_COLLIDE_CONNECT num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_createFrictionJoint 523
+#define CREATEFRICTIONJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEFRICTIONJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEFRICTIONJOINT_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEFRICTIONJOINT_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEFRICTIONJOINT_COLLIDE_CONNECT num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_createGearJoint 524
+#define CREATEGEARJOINT_JOINTA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEGEARJOINT_JOINTB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEGEARJOINT_G_RATIO num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEGEARJOINT_COLLIDE_CONNECT num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_createMotorJoint 525
+#define CREATEMOTORJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEMOTORJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEMOTORJOINT_COLLIDE_CONNECT num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_createPrismaticJoint 526
+#define CREATEPRISMATICJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEPRISMATICJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEPRISMATICJOINT_AX num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEPRISMATICJOINT_AY num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEPRISMATICJOINT_AXISX num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define CREATEPRISMATICJOINT_AXISY num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define CREATEPRISMATICJOINT_COLLIDE_CONNECT num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_createPulleyJoint 527
+#define CREATEPULLEYJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEPULLEYJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEPULLEYJOINT_GAX num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEPULLEYJOINT_GAY num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEPULLEYJOINT_GBX num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define CREATEPULLEYJOINT_GBY num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define CREATEPULLEYJOINT_AX num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define CREATEPULLEYJOINT_AY num_var[7].nref[0].value[ num_var[7].byref_offset ]
+#define CREATEPULLEYJOINT_BX num_var[8].nref[0].value[ num_var[8].byref_offset ]
+#define CREATEPULLEYJOINT_BY num_var[9].nref[0].value[ num_var[9].byref_offset ]
+#define CREATEPULLEYJOINT_J_RATIO num_var[10].nref[0].value[ num_var[10].byref_offset ]
+#define CREATEPULLEYJOINT_COLLIDE_CONNECT num_var[11].nref[0].value[ num_var[11].byref_offset ]
+#define FN_createRevoluteJoint 528
+#define CREATEREVOLUTEJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEREVOLUTEJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEREVOLUTEJOINT_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEREVOLUTEJOINT_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEREVOLUTEJOINT_COLLIDE_CONNECT num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_createWeldJoint 529
+#define CREATEWELDJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEWELDJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEWELDJOINT_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEWELDJOINT_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEWELDJOINT_COLLIDE_CONNECT num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FN_createWheelJoint 530
+#define CREATEWHEELJOINT_SPRITEA num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEWHEELJOINT_SPRITEB num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEWHEELJOINT_AX num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEWHEELJOINT_AY num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define CREATEWHEELJOINT_AXISX num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define CREATEWHEELJOINT_AXISY num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define CREATEWHEELJOINT_COLLIDE_CONNECT num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_getJointWorldAnchorA 531
+#define GETJOINTWORLDANCHORA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTWORLDANCHORA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTWORLDANCHORA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointWorldAnchorB 532
+#define GETJOINTWORLDANCHORB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTWORLDANCHORB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTWORLDANCHORB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointReactionForce 533
+#define GETJOINTREACTIONFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTREACTIONFORCE_INV_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTREACTIONFORCE_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETJOINTREACTIONFORCE_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_getJointReactionTorque 534
+#define GETJOINTREACTIONTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTREACTIONTORQUE_INV_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointLocalAnchorA 535
+#define GETJOINTLOCALANCHORA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTLOCALANCHORA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTLOCALANCHORA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointLocalAnchorB 536
+#define GETJOINTLOCALANCHORB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTLOCALANCHORB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTLOCALANCHORB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_setJointLength 537
+#define SETJOINTLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTLENGTH_JLEN num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointLength 538
+#define GETJOINTLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMinLength 539
+#define SETJOINTMINLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMINLENGTH_JLEN num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMinLength 540
+#define GETJOINTMINLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMaxLength 541
+#define SETJOINTMAXLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXLENGTH_JLEN num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxLength 542
+#define GETJOINTMAXLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointCurrentLength 543
+#define GETJOINTCURRENTLENGTH_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointStiffness 544
+#define SETJOINTSTIFFNESS_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTSTIFFNESS_STIFFNESS num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointStiffness 545
+#define GETJOINTSTIFFNESS_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointDamping 546
+#define SETJOINTDAMPING_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTDAMPING_DAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointDamping 547
+#define GETJOINTDAMPING_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMaxForce 548
+#define SETJOINTMAXFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXFORCE_FORCE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxForce 549
+#define GETJOINTMAXFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMaxTorque 550
+#define SETJOINTMAXTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXTORQUE_TORQUE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxTorque 551
+#define GETJOINTMAXTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointCorrectionFactor 552
+#define SETJOINTCORRECTIONFACTOR_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTCORRECTIONFACTOR_FACTOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointCorrectionFactor 553
+#define GETJOINTCORRECTIONFACTOR_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointRatio 554
+#define SETJOINTRATIO_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTRATIO_J_RATIO num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointRatio 555
+#define GETJOINTRATIO_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointLinearOffset 556
+#define SETJOINTLINEAROFFSET_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTLINEAROFFSET_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETJOINTLINEAROFFSET_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointLinearOffset 557
+#define GETJOINTLINEAROFFSET_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTLINEAROFFSET_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTLINEAROFFSET_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_setJointAngularOffset 558
+#define SETJOINTANGULAROFFSET_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTANGULAROFFSET_ANGLEOFFSET num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointAngularOffset 559
+#define GETJOINTANGULAROFFSET_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointLocalAxisA 560
+#define GETJOINTLOCALAXISA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTLOCALAXISA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTLOCALAXISA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointReferenceAngle 561
+#define GETJOINTREFERENCEANGLE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointTranslation 562
+#define GETJOINTTRANSLATION_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointSpeed 563
+#define GETJOINTSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_jointIsLimitEnabled 564
+#define JOINTISLIMITENABLED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_enableJointLimit 565
+#define ENABLEJOINTLIMIT_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define ENABLEJOINTLIMIT_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointLowerLimit 566
+#define GETJOINTLOWERLIMIT_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointUpperLimit 567
+#define GETJOINTUPPERLIMIT_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointLimits 568
+#define SETJOINTLIMITS_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTLIMITS_LOWER_LIMIT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETJOINTLIMITS_UPPER_LIMIT num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_jointMotorIsEnabled 569
+#define JOINTMOTORISENABLED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_enableJointMotor 570
+#define ENABLEJOINTMOTOR_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define ENABLEJOINTMOTOR_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_setJointMotorSpeed 571
+#define SETJOINTMOTORSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMOTORSPEED_SPEED num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMotorSpeed 572
+#define GETJOINTMOTORSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointMaxMotorForce 573
+#define SETJOINTMAXMOTORFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXMOTORFORCE_FORCE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxMotorForce 574
+#define GETJOINTMAXMOTORFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointMotorForce 575
+#define GETJOINTMOTORFORCE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTMOTORFORCE_INV_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_setJointMaxMotorTorque 576
+#define SETJOINTMAXMOTORTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTMAXMOTORTORQUE_TORQUE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointMaxMotorTorque 577
+#define GETJOINTMAXMOTORTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointMotorTorque 578
+#define GETJOINTMOTORTORQUE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTMOTORTORQUE_INV_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_getJointGroundAnchorA 579
+#define GETJOINTGROUNDANCHORA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTGROUNDANCHORA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTGROUNDANCHORA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointGroundAnchorB 580
+#define GETJOINTGROUNDANCHORB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETJOINTGROUNDANCHORB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETJOINTGROUNDANCHORB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointLengthA 581
+#define GETJOINTLENGTHA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointLengthB 582
+#define GETJOINTLENGTHB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointCurrentLengthA 583
+#define GETJOINTCURRENTLENGTHA_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointCurrentLengthB 584
+#define GETJOINTCURRENTLENGTHB_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_setJointOrigin 585
+#define SETJOINTORIGIN_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETJOINTORIGIN_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETJOINTORIGIN_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_getJointAngle 586
+#define GETJOINTANGLE_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointLinearSpeed 587
+#define GETJOINTLINEARSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_getJointAngularSpeed 588
+#define GETJOINTANGULARSPEED_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_DeleteJoint 589
+#define DELETEJOINT_JOINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_CreateTileSet 590
+#define CREATETILESET_IMG_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATETILESET_TILE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATETILESET_TILE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetTileAnimationLength 591
+#define SETTILEANIMATIONLENGTH_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILEANIMATIONLENGTH_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILEANIMATIONLENGTH_NUM_FRAMES num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_GetTileAnimationLength 592
+#define GETTILEANIMATIONLENGTH_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILEANIMATIONLENGTH_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_SetTileAnimationFrame 593
+#define SETTILEANIMATIONFRAME_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILEANIMATIONFRAME_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILEANIMATIONFRAME_ANIM_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define SETTILEANIMATIONFRAME_TILE_FRAME num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_GetTileAnimationFrame 594
+#define GETTILEANIMATIONFRAME_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILEANIMATIONFRAME_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETTILEANIMATIONFRAME_ANIM_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetTileAnimationSpeed 595
+#define SETTILEANIMATIONSPEED_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILEANIMATIONSPEED_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILEANIMATIONSPEED_SPEED num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_GetTileAnimationSpeed 596
+#define GETTILEANIMATIONSPEED_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILEANIMATIONSPEED_BASE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_CreateTileMap 597
+#define CREATETILEMAP_TILESET num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATETILEMAP_WIDTHINTILES num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATETILEMAP_HEIGHTINTILES num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetTileMapSize 598
+#define SETTILEMAPSIZE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILEMAPSIZE_WIDTHINTILES num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILEMAPSIZE_HEIGHTINTILES num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_GetTileMapSize 599
+#define GETTILEMAPSIZE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILEMAPSIZE_WIDTHINTILES num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETTILEMAPSIZE_HEIGHTINTILES num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetTile 600
+#define SETTILE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETTILE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETTILE_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define SETTILE_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_GetTile 601
+#define GETTILE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETTILE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETTILE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_FillTile 602
+#define FILLTILE_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FILLTILE_TILE num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FILLTILE_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FILLTILE_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FILLTILE_WIDTHINTILES num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define FILLTILE_HEIGHTINTILES num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define FN_DrawTileMap 603
+#define DRAWTILEMAP_TILEMAP num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define DRAWTILEMAP_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define DRAWTILEMAP_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define DRAWTILEMAP_W num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define DRAWTILEMAP_H num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define DRAWTILEMAP_OFFSET_X num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define DRAWTILEMAP_OFFSET_Y num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_LoadMesh 604
#define LOADMESH_MESH_FILE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define FN_DeleteMesh 491
+#define FN_DeleteMesh 605
#define DELETEMESH_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateMesh 492
-#define FN_AddMeshBuffer 493
+#define FN_CreateMesh 606
+#define FN_AddMeshBuffer 607
#define ADDMESHBUFFER_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ADDMESHBUFFER_VERTEX_COUNT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ADDMESHBUFFER_VERTEX_DATA num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1414,227 +1814,276 @@
#define ADDMESHBUFFER_UV_DATA num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define ADDMESHBUFFER_INDEX_COUNT num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define ADDMESHBUFFER_INDEX_DATA num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_LoadMeshFromArchive 494
+#define FN_LoadMeshFromArchive 608
#define LOADMESHFROMARCHIVE_ARCHIVE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
#define LOADMESHFROMARCHIVE_MESH_FILE$ str_var[1].sref[0].value[ str_var[1].byref_offset ]
-#define FN_CreatePlaneMesh 495
+#define FN_CreatePlaneMesh 609
#define CREATEPLANEMESH_W num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEPLANEMESH_H num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEPLANEMESH_TILECOUNT_W num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATEPLANEMESH_TILECOUNT_H num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_LoadAN8 496
+#define FN_LoadAN8 610
#define LOADAN8_AN8_FILE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define FN_LoadMeshFromAN8 497
+#define FN_LoadMeshFromAN8 611
#define LOADMESHFROMAN8_AN8_PROJECT num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define LOADMESHFROMAN8_AN8_SCENE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define FN_GetNumAN8Scenes 498
+#define FN_GetNumAN8Scenes 612
#define GETNUMAN8SCENES_AN8_PROJECT num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetAN8SceneName$ 499
+#define FN_GetAN8SceneName$ 613
#define GETAN8SCENENAME$_AN8_PROJECT num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETAN8SCENENAME$_SCENE_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_CreateAnimatedActor 500
+#define FN_CreateAnimatedActor 614
#define CREATEANIMATEDACTOR_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateOctreeActor 501
+#define FN_CreateOctreeActor 615
#define CREATEOCTREEACTOR_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateCubeActor 502
+#define FN_CreateCubeActor 616
#define CREATECUBEACTOR_CUBE_SIZE num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateSphereActor 503
+#define FN_CreateSphereActor 617
#define CREATESPHEREACTOR_RADIUS num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_CreateWaterActor 504
+#define FN_CreateWaterActor 618
#define CREATEWATERACTOR_MESH num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEWATERACTOR_WAVEHEIGHT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEWATERACTOR_WAVESPEED num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATEWATERACTOR_WAVELENGTH num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_CreateLightActor 505
-#define FN_CreateBillboardActor 506
-#define FN_CreateTerrainActor 507
+#define FN_CreateLightActor 619
+#define FN_CreateBillboardActor 620
+#define FN_CreateTerrainActor 621
#define CREATETERRAINACTOR_HMAP_FILE$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define FN_CreateParticleActor 508
+#define FN_CreateParticleActor 622
#define CREATEPARTICLEACTOR_PARTICLE_TYPE num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_DeleteActor 509
+#define FN_DeleteActor 623
#define DELETEACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetActorTransform 510
+#define FN_GetActorTransform 624
#define GETACTORTRANSFORM_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORTRANSFORM_MATRIX num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetActorPosition 511
+#define FN_SetActorPosition 625
#define SETACTORPOSITION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORPOSITION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORPOSITION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORPOSITION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_TranslateActorLocal 512
+#define FN_TranslateActorLocal 626
#define TRANSLATEACTORLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define TRANSLATEACTORLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define TRANSLATEACTORLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define TRANSLATEACTORLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_TranslateActorWorld 513
+#define FN_TranslateActorWorld 627
#define TRANSLATEACTORWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define TRANSLATEACTORWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define TRANSLATEACTORWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define TRANSLATEACTORWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorPosition 514
+#define FN_GetActorPosition 628
#define GETACTORPOSITION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORPOSITION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORPOSITION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORPOSITION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorScale 515
+#define FN_SetActorScale 629
#define SETACTORSCALE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORSCALE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORSCALE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORSCALE_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_ScaleActor 516
+#define FN_ScaleActor 630
#define SCALEACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SCALEACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SCALEACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SCALEACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorScale 517
+#define FN_GetActorScale 631
#define GETACTORSCALE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORSCALE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORSCALE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORSCALE_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorRotation 518
+#define FN_SetActorRotation 632
#define SETACTORROTATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORROTATION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORROTATION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORROTATION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_RotateActor 519
+#define FN_RotateActor 633
#define ROTATEACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ROTATEACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ROTATEACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define ROTATEACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorRotation 520
+#define FN_GetActorRotation 634
#define GETACTORROTATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORROTATION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORROTATION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORROTATION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorVisible 521
+#define FN_SetActorVisible 635
#define SETACTORVISIBLE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORVISIBLE_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_ActorIsVisible 522
+#define FN_ActorIsVisible 636
#define ACTORISVISIBLE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetActorAutoCulling 523
+#define FN_SetActorAutoCulling 637
#define SETACTORAUTOCULLING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORAUTOCULLING_CULL_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetActorAutoCulling 524
+#define FN_GetActorAutoCulling 638
#define GETACTORAUTOCULLING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_AddActorShadow 525
+#define FN_AddActorShadow 639
#define ADDACTORSHADOW_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_RemoveActorShadow 526
+#define FN_RemoveActorShadow 640
#define REMOVEACTORSHADOW_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_ActorExists 527
+#define FN_ActorExists 641
#define ACTOREXISTS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetGravity3D 528
+#define FN_CreateActorAnimation 642
+#define CREATEACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define CREATEACTORANIMATION_START_FRAME num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define CREATEACTORANIMATION_END_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define CREATEACTORANIMATION_SPEED num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_SetActorAnimation 643
+#define SETACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETACTORANIMATION_NUM_LOOPS num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetActorAnimationSpeed 644
+#define SETACTORANIMATIONSPEED_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORANIMATIONSPEED_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETACTORANIMATIONSPEED_SPEED num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetActorAnimationFrames 645
+#define SETACTORANIMATIONFRAMES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORANIMATIONFRAMES_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETACTORANIMATIONFRAMES_START_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define SETACTORANIMATIONFRAMES_END_FRAME num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_GetActorCurrentAnimation 646
+#define GETACTORCURRENTANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_GetActorAnimationSpeed 647
+#define GETACTORANIMATIONSPEED_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORANIMATIONSPEED_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_GetActorAnimationStartFrame 648
+#define GETACTORANIMATIONSTARTFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORANIMATIONSTARTFRAME_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_GetActorAnimationEndFrame 649
+#define GETACTORANIMATIONENDFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORANIMATIONENDFRAME_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_SetActorFrame 650
+#define SETACTORFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORFRAME_FRAME num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_GetActorFrame 651
+#define GETACTORFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_ActorAnimationIsPlaying 652
+#define ACTORANIMATIONISPLAYING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_NumActorAnimationLoops 653
+#define NUMACTORANIMATIONLOOPS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define FN_SetActorMD2Animation 654
+#define SETACTORMD2ANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORMD2ANIMATION_ANIM num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define SETACTORMD2ANIMATION_NUM_LOOPS num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define FN_SetActorMD2AnimationByName 655
+#define SETACTORMD2ANIMATIONBYNAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
+#define SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_DeleteActorAnimation 656
+#define DELETEACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define DELETEACTORANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define FN_SetGravity3D 657
#define SETGRAVITY3D_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETGRAVITY3D_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETGRAVITY3D_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetGravity3D 529
+#define FN_GetGravity3D 658
#define GETGRAVITY3D_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETGRAVITY3D_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETGRAVITY3D_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetActorCollisionShape 530
+#define FN_SetActorCollisionShape 659
#define SETACTORCOLLISIONSHAPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORCOLLISIONSHAPE_SHAPE_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORCOLLISIONSHAPE_MASS num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetActorCollisionShape 531
+#define FN_GetActorCollisionShape 660
#define GETACTORCOLLISIONSHAPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetActorSolid 532
+#define FN_SetActorSolid 661
#define SETACTORSOLID_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORSOLID_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_ActorIsSolid 533
+#define FN_ActorIsSolid 662
#define ACTORISSOLID_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetActorCollision 534
+#define FN_GetActorCollision 663
#define GETACTORCOLLISION_ACTOR1 num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORCOLLISION_ACTOR2 num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetActorGravity 535
+#define FN_SetActorGravity 664
#define SETACTORGRAVITY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORGRAVITY_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORGRAVITY_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORGRAVITY_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorGravity 536
+#define FN_GetActorGravity 665
#define GETACTORGRAVITY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORGRAVITY_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORGRAVITY_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORGRAVITY_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorDamping 537
+#define FN_setActorDamping 666
#define SETACTORDAMPING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORDAMPING_LIN_DAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORDAMPING_ANG_DAMPING num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getActorLinearDamping 538
+#define FN_getActorLinearDamping 667
#define GETACTORLINEARDAMPING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getActorAngularDamping 539
+#define FN_getActorAngularDamping 668
#define GETACTORANGULARDAMPING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getActorLinearSleepThreshold 540
+#define FN_getActorLinearSleepThreshold 669
#define GETACTORLINEARSLEEPTHRESHOLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getActorAngularSleepThreshold 541
+#define FN_getActorAngularSleepThreshold 670
#define GETACTORANGULARSLEEPTHRESHOLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_applyActorDamping 542
+#define FN_applyActorDamping 671
#define APPLYACTORDAMPING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORDAMPING_TIMESTEP num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setActorMassProperties 543
+#define FN_setActorMassProperties 672
#define SETACTORMASSPROPERTIES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORMASSPROPERTIES_MASS num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORMASSPROPERTIES_INERTIA_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORMASSPROPERTIES_INERTIA_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define SETACTORMASSPROPERTIES_INERTIA_Z num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_getActorLinearFactor 544
+#define FN_getActorLinearFactor 673
#define GETACTORLINEARFACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORLINEARFACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORLINEARFACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORLINEARFACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorLinearFactor 545
+#define FN_setActorLinearFactor 674
#define SETACTORLINEARFACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORLINEARFACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORLINEARFACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORLINEARFACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorInverseMass 546
+#define FN_getActorInverseMass 675
#define GETACTORINVERSEMASS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_integrateActorVelocities 547
+#define FN_integrateActorVelocities 676
#define INTEGRATEACTORVELOCITIES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define INTEGRATEACTORVELOCITIES_V_STEP num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_applyActorCentralForceLocal 548
+#define FN_applyActorCentralForceLocal 677
#define APPLYACTORCENTRALFORCELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORCENTRALFORCELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORCENTRALFORCELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORCENTRALFORCELOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorCentralForceWorld 549
+#define FN_applyActorCentralForceWorld 678
#define APPLYACTORCENTRALFORCEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORCENTRALFORCEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORCENTRALFORCEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORCENTRALFORCEWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorTotalForce 550
+#define FN_getActorTotalForce 679
#define GETACTORTOTALFORCE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORTOTALFORCE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORTOTALFORCE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORTOTALFORCE_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorTotalTorque 551
+#define FN_getActorTotalTorque 680
#define GETACTORTOTALTORQUE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORTOTALTORQUE_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORTOTALTORQUE_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORTOTALTORQUE_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorInverseInertiaDiagLocal 552
+#define FN_getActorInverseInertiaDiagLocal 681
#define GETACTORINVERSEINERTIADIAGLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORINVERSEINERTIADIAGLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORINVERSEINERTIADIAGLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORINVERSEINERTIADIAGLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorInverseInertiaDiagLocal 553
+#define FN_setActorInverseInertiaDiagLocal 682
#define SETACTORINVERSEINERTIADIAGLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORINVERSEINERTIADIAGLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORINVERSEINERTIADIAGLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORINVERSEINERTIADIAGLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorSleepThresholds 554
+#define FN_setActorSleepThresholds 683
#define SETACTORSLEEPTHRESHOLDS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORSLEEPTHRESHOLDS_LINEAR num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORSLEEPTHRESHOLDS_ANGULAR num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_applyActorTorqueLocal 555
+#define FN_applyActorTorqueLocal 684
#define APPLYACTORTORQUELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORTORQUELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORTORQUELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORTORQUELOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorTorqueWorld 556
+#define FN_applyActorTorqueWorld 685
#define APPLYACTORTORQUEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORTORQUEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORTORQUEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORTORQUEWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorForceLocal 557
+#define FN_applyActorForceLocal 686
#define APPLYACTORFORCELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORFORCELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORFORCELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1642,7 +2091,7 @@
#define APPLYACTORFORCELOCAL_REL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define APPLYACTORFORCELOCAL_REL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define APPLYACTORFORCELOCAL_REL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_applyActorForceWorld 558
+#define FN_applyActorForceWorld 687
#define APPLYACTORFORCEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORFORCEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORFORCEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1650,27 +2099,27 @@
#define APPLYACTORFORCEWORLD_REL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define APPLYACTORFORCEWORLD_REL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define APPLYACTORFORCEWORLD_REL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_applyActorCentralImpulseLocal 559
+#define FN_applyActorCentralImpulseLocal 688
#define APPLYACTORCENTRALIMPULSELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORCENTRALIMPULSELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORCENTRALIMPULSELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORCENTRALIMPULSELOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorCentralImpulseWorld 560
+#define FN_applyActorCentralImpulseWorld 689
#define APPLYACTORCENTRALIMPULSEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORCENTRALIMPULSEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORCENTRALIMPULSEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORCENTRALIMPULSEWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorTorqueImpulseLocal 561
+#define FN_applyActorTorqueImpulseLocal 690
#define APPLYACTORTORQUEIMPULSELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORTORQUEIMPULSELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORTORQUEIMPULSELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORTORQUEIMPULSELOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorTorqueImpulseWorld 562
+#define FN_applyActorTorqueImpulseWorld 691
#define APPLYACTORTORQUEIMPULSEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORTORQUEIMPULSEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORTORQUEIMPULSEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define APPLYACTORTORQUEIMPULSEWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_applyActorImpulseLocal 563
+#define FN_applyActorImpulseLocal 692
#define APPLYACTORIMPULSELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORIMPULSELOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORIMPULSELOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1678,7 +2127,7 @@
#define APPLYACTORIMPULSELOCAL_REL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define APPLYACTORIMPULSELOCAL_REL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define APPLYACTORIMPULSELOCAL_REL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_applyActorImpulseWorld 564
+#define FN_applyActorImpulseWorld 693
#define APPLYACTORIMPULSEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define APPLYACTORIMPULSEWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define APPLYACTORIMPULSEWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1686,70 +2135,70 @@
#define APPLYACTORIMPULSEWORLD_REL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define APPLYACTORIMPULSEWORLD_REL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define APPLYACTORIMPULSEWORLD_REL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_clearActorForces 565
+#define FN_clearActorForces 694
#define CLEARACTORFORCES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_updateActorInertiaTensor 566
+#define FN_updateActorInertiaTensor 695
#define UPDATEACTORINERTIATENSOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getActorCOMPosition 567
-#define GETACTORCOMPOSITION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORCOMPOSITION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define GETACTORCOMPOSITION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define GETACTORCOMPOSITION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorRotationQ 568
+#define FN_getActorCenter 696
+#define GETACTORCENTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORCENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETACTORCENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETACTORCENTER_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define FN_getActorRotationQ 697
#define GETACTORROTATIONQ_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORROTATIONQ_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORROTATIONQ_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORROTATIONQ_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define GETACTORROTATIONQ_W num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_getActorLinearVelocityWorld 569
+#define FN_getActorLinearVelocityWorld 698
#define GETACTORLINEARVELOCITYWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORLINEARVELOCITYWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORLINEARVELOCITYWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORLINEARVELOCITYWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorAngularVelocityWorld 570
+#define FN_getActorAngularVelocityWorld 699
#define GETACTORANGULARVELOCITYWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORANGULARVELOCITYWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORANGULARVELOCITYWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORANGULARVELOCITYWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorLinearVelocityLocal 571
+#define FN_setActorLinearVelocityLocal 700
#define SETACTORLINEARVELOCITYLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORLINEARVELOCITYLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORLINEARVELOCITYLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORLINEARVELOCITYLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorLinearVelocityWorld 572
+#define FN_setActorLinearVelocityWorld 701
#define SETACTORLINEARVELOCITYWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORLINEARVELOCITYWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORLINEARVELOCITYWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORLINEARVELOCITYWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorAngularVelocityLocal 573
+#define FN_setActorAngularVelocityLocal 702
#define SETACTORANGULARVELOCITYLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORANGULARVELOCITYLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORANGULARVELOCITYLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORANGULARVELOCITYLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorAngularVelocityWorld 574
+#define FN_setActorAngularVelocityWorld 703
#define SETACTORANGULARVELOCITYWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORANGULARVELOCITYWORLD_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORANGULARVELOCITYWORLD_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORANGULARVELOCITYWORLD_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorLocalPointVelocity 575
-#define GETACTORLOCALPOINTVELOCITY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_REL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_REL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_REL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define GETACTORLOCALPOINTVELOCITY_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_getActorLinearVelocityLocal 576
+#define FN_getActorVelocityInLocalPoint 704
+#define GETACTORVELOCITYINLOCALPOINT_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_REL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_REL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_REL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
+#define GETACTORVELOCITYINLOCALPOINT_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
+#define FN_getActorLinearVelocityLocal 705
#define GETACTORLINEARVELOCITYLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORLINEARVELOCITYLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORLINEARVELOCITYLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORLINEARVELOCITYLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorAngularVelocityLocal 577
+#define FN_getActorAngularVelocityLocal 706
#define GETACTORANGULARVELOCITYLOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORANGULARVELOCITYLOCAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORANGULARVELOCITYLOCAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORANGULARVELOCITYLOCAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorAABB 578
+#define FN_getActorAABB 707
#define GETACTORAABB_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORAABB_MIN_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORAABB_MIN_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1757,7 +2206,7 @@
#define GETACTORAABB_MAX_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETACTORAABB_MAX_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define GETACTORAABB_MAX_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_computeActorImpulseDenominator 579
+#define FN_computeActorImpulseDenominator 708
#define COMPUTEACTORIMPULSEDENOMINATOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COMPUTEACTORIMPULSEDENOMINATOR_POS_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define COMPUTEACTORIMPULSEDENOMINATOR_POS_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1765,47 +2214,47 @@
#define COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_computeActorAngularImpulseDenominator 580
+#define FN_computeActorAngularImpulseDenominator 709
#define COMPUTEACTORANGULARIMPULSEDENOMINATOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COMPUTEACTORANGULARIMPULSEDENOMINATOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define COMPUTEACTORANGULARIMPULSEDENOMINATOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define COMPUTEACTORANGULARIMPULSEDENOMINATOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setActorAngularFactor 581
+#define FN_setActorAngularFactor 710
#define SETACTORANGULARFACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORANGULARFACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORANGULARFACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETACTORANGULARFACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getActorAngularFactor 582
+#define FN_getActorAngularFactor 711
#define GETACTORANGULARFACTOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORANGULARFACTOR_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORANGULARFACTOR_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORANGULARFACTOR_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_computeActorGyroImpulseLocal 583
+#define FN_computeActorGyroImpulseLocal 712
#define COMPUTEACTORGYROIMPULSELOCAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COMPUTEACTORGYROIMPULSELOCAL_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define COMPUTEACTORGYROIMPULSELOCAL_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define COMPUTEACTORGYROIMPULSELOCAL_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define COMPUTEACTORGYROIMPULSELOCAL_Z num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_computeActorGyroImpulseWorld 584
+#define FN_computeActorGyroImpulseWorld 713
#define COMPUTEACTORGYROIMPULSEWORLD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COMPUTEACTORGYROIMPULSEWORLD_DT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define COMPUTEACTORGYROIMPULSEWORLD_X num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define COMPUTEACTORGYROIMPULSEWORLD_Y num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define COMPUTEACTORGYROIMPULSEWORLD_Z num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_getActorLocalInertia 585
+#define FN_getActorLocalInertia 714
#define GETACTORLOCALINERTIA_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORLOCALINERTIA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORLOCALINERTIA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETACTORLOCALINERTIA_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorSleepState 586
+#define FN_SetActorSleepState 715
#define SETACTORSLEEPSTATE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORSLEEPSTATE_STATE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_createPointConstraint 587
+#define FN_createPointConstraint 716
#define CREATEPOINTCONSTRAINT_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEPOINTCONSTRAINT_PXA num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEPOINTCONSTRAINT_PYA num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATEPOINTCONSTRAINT_PZA num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_createPointConstraintEx 588
+#define FN_createPointConstraintEx 717
#define CREATEPOINTCONSTRAINTEX_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEPOINTCONSTRAINTEX_ACTORB num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEPOINTCONSTRAINTEX_PXA num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1814,47 +2263,47 @@
#define CREATEPOINTCONSTRAINTEX_PXB num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define CREATEPOINTCONSTRAINTEX_PYB num_var[6].nref[0].value[ num_var[6].byref_offset ]
#define CREATEPOINTCONSTRAINTEX_PZB num_var[7].nref[0].value[ num_var[7].byref_offset ]
-#define FN_setPointPivotA 589
+#define FN_setPointPivotA 718
#define SETPOINTPIVOTA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPOINTPIVOTA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPOINTPIVOTA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPOINTPIVOTA_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setPointPivotB 590
+#define FN_setPointPivotB 719
#define SETPOINTPIVOTB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPOINTPIVOTB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPOINTPIVOTB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPOINTPIVOTB_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_createHingeConstraint 591
+#define FN_createHingeConstraint 720
#define CREATEHINGECONSTRAINT_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEHINGECONSTRAINT_FRAMEA num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEHINGECONSTRAINT_USEREFERENCEFRAMEA num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_createHingeConstraintEx 592
+#define FN_createHingeConstraintEx 721
#define CREATEHINGECONSTRAINTEX_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATEHINGECONSTRAINTEX_ACTORB num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATEHINGECONSTRAINTEX_FRAMEA num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATEHINGECONSTRAINTEX_FRAMEB num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define CREATEHINGECONSTRAINTEX_USEREFERENCEFRAMEA num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_createSlideConstraint 593
+#define FN_createSlideConstraint 722
#define CREATESLIDECONSTRAINT_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATESLIDECONSTRAINT_FRAMEINB_MATRIX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATESLIDECONSTRAINT_USELINEARREFERENCEFRAMEA num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_createSlideConstraintEx 594
+#define FN_createSlideConstraintEx 723
#define CREATESLIDECONSTRAINTEX_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATESLIDECONSTRAINTEX_ACTORB num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATESLIDECONSTRAINTEX_FRAMEINA_MATRIX num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATESLIDECONSTRAINTEX_FRAMEINB_MATRIX num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define CREATESLIDECONSTRAINTEX_USELINEARREFERENCEFRAMEA num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_createConeConstraint 595
+#define FN_createConeConstraint 724
#define CREATECONECONSTRAINT_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATECONECONSTRAINT_RBAFRAME_MATRIX num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_createConeConstraintEx 596
+#define FN_createConeConstraintEx 725
#define CREATECONECONSTRAINTEX_ACTORA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define CREATECONECONSTRAINTEX_ACTORB num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define CREATECONECONSTRAINTEX_RBAFRAME_MATRIX num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define CREATECONECONSTRAINTEX_RBBFRAME_MATRIX num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_deleteConstraint 597
+#define FN_deleteConstraint 726
#define DELETECONSTRAINT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintFrameOffsetA 598
+#define FN_getConstraintFrameOffsetA 727
#define GETCONSTRAINTFRAMEOFFSETA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1862,7 +2311,7 @@
#define GETCONSTRAINTFRAMEOFFSETA_RX num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETA_RY num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETA_RZ num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_getConstraintFrameOffsetB 599
+#define FN_getConstraintFrameOffsetB 728
#define GETCONSTRAINTFRAMEOFFSETB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1870,43 +2319,43 @@
#define GETCONSTRAINTFRAMEOFFSETB_RX num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETB_RY num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define GETCONSTRAINTFRAMEOFFSETB_RZ num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_useConstraintFrameOffset 600
+#define FN_useConstraintFrameOffset 729
#define USECONSTRAINTFRAMEOFFSET_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USECONSTRAINTFRAMEOFFSET_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getHingeAngle 601
+#define FN_getHingeAngle 730
#define GETHINGEANGLE_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getHingeAngleEx 602
+#define FN_getHingeAngleEx 731
#define GETHINGEANGLEEX_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETHINGEANGLEEX_T_MATRIXA num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETHINGEANGLEEX_T_MATRIXB num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getConstraintBreakingImpulseThreshold 603
+#define FN_getConstraintBreakingImpulseThreshold 732
#define GETCONSTRAINTBREAKINGIMPULSETHRESHOLD_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintAFrame 604
+#define FN_getConstraintAFrame 733
#define GETCONSTRAINTAFRAME_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONSTRAINTAFRAME_MA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getConstraintBFrame 605
+#define FN_getConstraintBFrame 734
#define GETCONSTRAINTBFRAME_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONSTRAINTBFRAME_MA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setHingeAxis 606
+#define FN_setHingeAxis 735
#define SETHINGEAXIS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETHINGEAXIS_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETHINGEAXIS_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETHINGEAXIS_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setConstraintBreakingImpulseThreshold 607
+#define FN_setConstraintBreakingImpulseThreshold 736
#define SETCONSTRAINTBREAKINGIMPULSETHRESHOLD_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONSTRAINTBREAKINGIMPULSETHRESHOLD_THRESHOLD num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setConstraintFrames 608
+#define FN_setConstraintFrames 737
#define SETCONSTRAINTFRAMES_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONSTRAINTFRAMES_FRAMEA_MATRIX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETCONSTRAINTFRAMES_FRAMEB_MATRIX num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setHingeLimit 609
+#define FN_setHingeLimit 738
#define SETHINGELIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETHINGELIMIT_LOW num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETHINGELIMIT_HIGH num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETHINGELIMIT_SOFTNESS num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define SETHINGELIMIT_BIAS_FACTOR num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define SETHINGELIMIT_RELAXATION_FACTOR num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define FN_setConeLimit 610
+#define FN_setConeLimit 739
#define SETCONELIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONELIMIT_SWINGSPAN1 num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETCONELIMIT_SWINGSPAN2 num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -1914,391 +2363,391 @@
#define SETCONELIMIT_SOFTNESS num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define SETCONELIMIT_BIAS_FACTOR num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define SETCONELIMIT_RELAXATION_FACTOR num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_getHingeLimitBiasFactor 611
+#define FN_getHingeLimitBiasFactor 740
#define GETHINGELIMITBIASFACTOR_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getHingeLimitRelaxationFactor 612
+#define FN_getHingeLimitRelaxationFactor 741
#define GETHINGELIMITRELAXATIONFACTOR_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getHingeLimitSign 613
+#define FN_getHingeLimitSign 742
#define GETHINGELIMITSIGN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getHingeSolveLimit 614
+#define FN_getHingeSolveLimit 743
#define GETHINGESOLVELIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_useHingeReferenceFrameA 615
+#define FN_useHingeReferenceFrameA 744
#define USEHINGEREFERENCEFRAMEA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USEHINGEREFERENCEFRAMEA_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getConstraintAppliedImpulse 616
+#define FN_getConstraintAppliedImpulse 745
#define GETCONSTRAINTAPPLIEDIMPULSE_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintFixedActor 617
+#define FN_getConstraintFixedActor 746
#define GETCONSTRAINTFIXEDACTOR_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getPointPivotA 618
+#define FN_getPointPivotA 747
#define GETPOINTPIVOTA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPOINTPIVOTA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPOINTPIVOTA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPOINTPIVOTA_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getPointPivotB 619
+#define FN_getPointPivotB 748
#define GETPOINTPIVOTB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPOINTPIVOTB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPOINTPIVOTB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPOINTPIVOTB_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getConstraintActorA 620
+#define FN_getConstraintActorA 749
#define GETCONSTRAINTACTORA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintActorB 621
+#define FN_getConstraintActorB 750
#define GETCONSTRAINTACTORB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setConstraintSolverIterations 622
+#define FN_setConstraintSolverIterations 751
#define SETCONSTRAINTSOLVERITERATIONS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONSTRAINTSOLVERITERATIONS_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getConeBiasFactor 623
+#define FN_getConeBiasFactor 752
#define GETCONEBIASFACTOR_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeDamping 624
+#define FN_getConeDamping 753
#define GETCONEDAMPING_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeFixThresh 625
+#define FN_getConeFixThresh 754
#define GETCONEFIXTHRESH_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeLimit 626
+#define FN_getConeLimit 755
#define GETCONELIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONELIMIT_LIMIT_INDEX num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getConstraintLimitSoftness 627
+#define FN_getConstraintLimitSoftness 756
#define GETCONSTRAINTLIMITSOFTNESS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConstraintSolverIterations 628
+#define FN_getConstraintSolverIterations 757
#define GETCONSTRAINTSOLVERITERATIONS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeAnglePoint 629
+#define FN_getConeAnglePoint 758
#define GETCONEANGLEPOINT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCONEANGLEPOINT_ANGLE num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCONEANGLEPOINT_C_LEN num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETCONEANGLEPOINT_X num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define GETCONEANGLEPOINT_Y num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETCONEANGLEPOINT_Z num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define FN_getConstraintAngularOnly 630
+#define FN_getConstraintAngularOnly 759
#define GETCONSTRAINTANGULARONLY_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeSolveSwingLimit 631
+#define FN_getConeSolveSwingLimit 760
#define GETCONESOLVESWINGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeSolveTwistLimit 632
+#define FN_getConeSolveTwistLimit 761
#define GETCONESOLVETWISTLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeSwingSpan1 633
+#define FN_getConeSwingSpan1 762
#define GETCONESWINGSPAN1_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeSwingSpan2 634
+#define FN_getConeSwingSpan2 763
#define GETCONESWINGSPAN2_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeTwistAngle 635
+#define FN_getConeTwistAngle 764
#define GETCONETWISTANGLE_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeTwistLimitSign 636
+#define FN_getConeTwistLimitSign 765
#define GETCONETWISTLIMITSIGN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getConeTwistSpan 637
+#define FN_getConeTwistSpan 766
#define GETCONETWISTSPAN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setConstraintAngularOnly 638
+#define FN_setConstraintAngularOnly 767
#define SETCONSTRAINTANGULARONLY_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONSTRAINTANGULARONLY_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setConeDamping 639
+#define FN_setConeDamping 768
#define SETCONEDAMPING_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONEDAMPING_DAMPING num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setConeFixThresh 640
+#define FN_setConeFixThresh 769
#define SETCONEFIXTHRESH_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCONEFIXTHRESH_FIXTHRESH num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getSlideAnchorA 641
+#define FN_getSlideAnchorA 770
#define GETSLIDEANCHORA_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETSLIDEANCHORA_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETSLIDEANCHORA_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETSLIDEANCHORA_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getSlideAnchorB 642
+#define FN_getSlideAnchorB 771
#define GETSLIDEANCHORB_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETSLIDEANCHORB_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETSLIDEANCHORB_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETSLIDEANCHORB_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getSlideAngDepth 643
+#define FN_getSlideAngDepth 772
#define GETSLIDEANGDEPTH_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideAngularPos 644
+#define FN_getSlideAngularPos 773
#define GETSLIDEANGULARPOS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingDirAng 645
+#define FN_getSlideDampingDirAng 774
#define GETSLIDEDAMPINGDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingDirLin 646
+#define FN_getSlideDampingDirLin 775
#define GETSLIDEDAMPINGDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingLimAng 647
+#define FN_getSlideDampingLimAng 776
#define GETSLIDEDAMPINGLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingLimLin 648
+#define FN_getSlideDampingLimLin 777
#define GETSLIDEDAMPINGLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingOrthoAng 649
+#define FN_getSlideDampingOrthoAng 778
#define GETSLIDEDAMPINGORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideDampingOrthoLin 650
+#define FN_getSlideDampingOrthoLin 779
#define GETSLIDEDAMPINGORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideLinearPos 651
+#define FN_getSlideLinearPos 780
#define GETSLIDELINEARPOS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideLinDepth 652
+#define FN_getSlideLinDepth 781
#define GETSLIDELINDEPTH_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideLowerAngLimit 653
+#define FN_getSlideLowerAngLimit 782
#define GETSLIDELOWERANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideLowerLinLimit 654
+#define FN_getSlideLowerLinLimit 783
#define GETSLIDELOWERLINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionDirAng 655
+#define FN_getSlideRestitutionDirAng 784
#define GETSLIDERESTITUTIONDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionDirLin 656
+#define FN_getSlideRestitutionDirLin 785
#define GETSLIDERESTITUTIONDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionLimAng 657
+#define FN_getSlideRestitutionLimAng 786
#define GETSLIDERESTITUTIONLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionLimLin 658
+#define FN_getSlideRestitutionLimLin 787
#define GETSLIDERESTITUTIONLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionOrthoAng 659
+#define FN_getSlideRestitutionOrthoAng 788
#define GETSLIDERESTITUTIONORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideRestitutionOrthoLin 660
+#define FN_getSlideRestitutionOrthoLin 789
#define GETSLIDERESTITUTIONORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessDirAng 661
+#define FN_getSlideSoftnessDirAng 790
#define GETSLIDESOFTNESSDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessDirLin 662
+#define FN_getSlideSoftnessDirLin 791
#define GETSLIDESOFTNESSDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessLimAng 663
+#define FN_getSlideSoftnessLimAng 792
#define GETSLIDESOFTNESSLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessLimLin 664
+#define FN_getSlideSoftnessLimLin 793
#define GETSLIDESOFTNESSLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessOrthoAng 665
+#define FN_getSlideSoftnessOrthoAng 794
#define GETSLIDESOFTNESSORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSoftnessOrthoLin 666
+#define FN_getSlideSoftnessOrthoLin 795
#define GETSLIDESOFTNESSORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSolveAngLimit 667
+#define FN_getSlideSolveAngLimit 796
#define GETSLIDESOLVEANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideSolveLinLimit 668
+#define FN_getSlideSolveLinLimit 797
#define GETSLIDESOLVELINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideUpperAngLimit 669
+#define FN_getSlideUpperAngLimit 798
#define GETSLIDEUPPERANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideUpperLinLimit 670
+#define FN_getSlideUpperLinLimit 799
#define GETSLIDEUPPERLINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getSlideUseFrameOffset 671
+#define FN_getSlideUseFrameOffset 800
#define GETSLIDEUSEFRAMEOFFSET_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setSlideDampingDirAng 672
+#define FN_setSlideDampingDirAng 801
#define SETSLIDEDAMPINGDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGDIRANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingDirLin 673
+#define FN_setSlideDampingDirLin 802
#define SETSLIDEDAMPINGDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGDIRLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingLimAng 674
+#define FN_setSlideDampingLimAng 803
#define SETSLIDEDAMPINGLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGLIMANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingLimLin 675
+#define FN_setSlideDampingLimLin 804
#define SETSLIDEDAMPINGLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGLIMLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingOrthoAng 676
+#define FN_setSlideDampingOrthoAng 805
#define SETSLIDEDAMPINGORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGORTHOANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideDampingOrthoLin 677
+#define FN_setSlideDampingOrthoLin 806
#define SETSLIDEDAMPINGORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEDAMPINGORTHOLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideLowerAngLimit 678
+#define FN_setSlideLowerAngLimit 807
#define SETSLIDELOWERANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDELOWERANGLIMIT_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideLowerLinLimit 679
+#define FN_setSlideLowerLinLimit 808
#define SETSLIDELOWERLINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDELOWERLINLIMIT_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionDirAng 680
+#define FN_setSlideRestitutionDirAng 809
#define SETSLIDERESTITUTIONDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONDIRANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionDirLin 681
+#define FN_setSlideRestitutionDirLin 810
#define SETSLIDERESTITUTIONDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONDIRLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionLimAng 682
+#define FN_setSlideRestitutionLimAng 811
#define SETSLIDERESTITUTIONLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONLIMANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionLimLin 683
+#define FN_setSlideRestitutionLimLin 812
#define SETSLIDERESTITUTIONLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONLIMLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionOrthoAng 684
+#define FN_setSlideRestitutionOrthoAng 813
#define SETSLIDERESTITUTIONORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONORTHOANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideRestitutionOrthoLin 685
+#define FN_setSlideRestitutionOrthoLin 814
#define SETSLIDERESTITUTIONORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDERESTITUTIONORTHOLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessDirAng 686
+#define FN_setSlideSoftnessDirAng 815
#define SETSLIDESOFTNESSDIRANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSDIRANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessDirLin 687
+#define FN_setSlideSoftnessDirLin 816
#define SETSLIDESOFTNESSDIRLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSDIRLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessLimAng 688
+#define FN_setSlideSoftnessLimAng 817
#define SETSLIDESOFTNESSLIMANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSLIMANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessLimLin 689
+#define FN_setSlideSoftnessLimLin 818
#define SETSLIDESOFTNESSLIMLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSLIMLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessOrthoAng 690
+#define FN_setSlideSoftnessOrthoAng 819
#define SETSLIDESOFTNESSORTHOANG_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSORTHOANG_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideSoftnessOrthoLin 691
+#define FN_setSlideSoftnessOrthoLin 820
#define SETSLIDESOFTNESSORTHOLIN_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDESOFTNESSORTHOLIN_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideUpperAngLimit 692
+#define FN_setSlideUpperAngLimit 821
#define SETSLIDEUPPERANGLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEUPPERANGLIMIT_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setSlideUpperLinLimit 693
+#define FN_setSlideUpperLinLimit 822
#define SETSLIDEUPPERLINLIMIT_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETSLIDEUPPERLINLIMIT_N num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_ConstraintExists 694
+#define FN_ConstraintExists 823
#define CONSTRAINTEXISTS_CONSTRAINT_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetCameraPosition 695
+#define FN_SetCameraPosition 824
#define SETCAMERAPOSITION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCAMERAPOSITION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETCAMERAPOSITION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetCameraPosition 696
+#define FN_GetCameraPosition 825
#define GETCAMERAPOSITION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCAMERAPOSITION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCAMERAPOSITION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_TranslateCamera 697
+#define FN_TranslateCamera 826
#define TRANSLATECAMERA_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define TRANSLATECAMERA_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define TRANSLATECAMERA_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetCameraRotation 698
+#define FN_SetCameraRotation 827
#define SETCAMERAROTATION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETCAMERAROTATION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETCAMERAROTATION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetCameraRotation 699
+#define FN_GetCameraRotation 828
#define GETCAMERAROTATION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETCAMERAROTATION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETCAMERAROTATION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_RotateCamera 700
+#define FN_RotateCamera 829
#define ROTATECAMERA_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ROTATECAMERA_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ROTATECAMERA_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetCameraFOV 701
+#define FN_SetCameraFOV 830
#define SETCAMERAFOV_FOV num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetCameraFOV 702
-#define FN_SetCameraAspectRatio 703
+#define FN_GetCameraFOV 831
+#define FN_SetCameraAspectRatio 832
#define SETCAMERAASPECTRATIO_ASPECT num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetCameraAspectRatio 704
-#define FN_SetCameraFarValue 705
+#define FN_GetCameraAspectRatio 833
+#define FN_SetCameraFarValue 834
#define SETCAMERAFARVALUE_ZF num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetCameraFarValue 706
-#define FN_SetCameraNearValue 707
+#define FN_GetCameraFarValue 835
+#define FN_SetCameraNearValue 836
#define SETCAMERANEARVALUE_ZN num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetCameraNearValue 708
-#define FN_SetProjectionMatrix 709
+#define FN_GetCameraNearValue 837
+#define FN_SetProjectionMatrix 838
#define SETPROJECTIONMATRIX_MATA num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPROJECTIONMATRIX_PROJECTION_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetProjectionMatrix 710
+#define FN_GetProjectionMatrix 839
#define GETPROJECTIONMATRIX_MATA num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetWorldToViewportPosition 711
+#define FN_GetWorldToViewportPosition 840
#define GETWORLDTOVIEWPORTPOSITION_X num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETWORLDTOVIEWPORTPOSITION_Y num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETWORLDTOVIEWPORTPOSITION_Z num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETWORLDTOVIEWPORTPOSITION_VX num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define GETWORLDTOVIEWPORTPOSITION_VY num_var[4].nref[0].value[ num_var[4].byref_offset ]
-#define FN_AddSceneSkyBox 712
+#define FN_AddSceneSkyBox 841
#define ADDSCENESKYBOX_IMG_TOP num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ADDSCENESKYBOX_IMG_BOTTOM num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ADDSCENESKYBOX_IMG_LEFT num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define ADDSCENESKYBOX_IMG_RIGHT num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define ADDSCENESKYBOX_IMG_FRONT num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define ADDSCENESKYBOX_IMG_BACK num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define FN_AddSceneSkyDome 713
+#define FN_AddSceneSkyDome 842
#define ADDSCENESKYDOME_IMG num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_AddSceneSkyDomeEx 714
+#define FN_AddSceneSkyDomeEx 843
#define ADDSCENESKYDOMEEX_IMG num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define ADDSCENESKYDOMEEX_HORIRES num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define ADDSCENESKYDOMEEX_VERTRES num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define ADDSCENESKYDOMEEX_TXPERCENTAGE num_var[3].nref[0].value[ num_var[3].byref_offset ]
#define ADDSCENESKYDOMEEX_SPHEREPERCENTAGE num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define ADDSCENESKYDOMEEX_RADIUS num_var[5].nref[0].value[ num_var[5].byref_offset ]
-#define FN_RemoveSceneSky 715
-#define FN_SetWorld3DMaxSubSteps 716
+#define FN_RemoveSceneSky 844
+#define FN_SetWorld3DMaxSubSteps 845
#define SETWORLD3DMAXSUBSTEPS_STEPS num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetWorld3DTimeStep 717
+#define FN_SetWorld3DTimeStep 846
#define SETWORLD3DTIMESTEP_TS num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_startParticleEmitter 718
+#define FN_startParticleEmitter 847
#define STARTPARTICLEEMITTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_stopParticleEmitter 719
+#define FN_stopParticleEmitter 848
#define STOPPARTICLEEMITTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleDirection 720
+#define FN_setParticleDirection 849
#define SETPARTICLEDIRECTION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEDIRECTION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLEDIRECTION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPARTICLEDIRECTION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getParticleDirection 721
+#define FN_getParticleDirection 850
#define GETPARTICLEDIRECTION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLEDIRECTION_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLEDIRECTION_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPARTICLEDIRECTION_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_useParticleEveryMeshVertex 722
+#define FN_useParticleEveryMeshVertex 851
#define USEPARTICLEEVERYMESHVERTEX_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USEPARTICLEEVERYMESHVERTEX_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_particleIsUsingEveryMeshVertex 723
+#define FN_particleIsUsingEveryMeshVertex 852
#define PARTICLEISUSINGEVERYMESHVERTEX_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleNormalDirectionMod 724
+#define FN_setParticleNormalDirectionMod 853
#define SETPARTICLENORMALDIRECTIONMOD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLENORMALDIRECTIONMOD_ND_MOD num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleNormalDirectionMod 725
+#define FN_getParticleNormalDirectionMod 854
#define GETPARTICLENORMALDIRECTIONMOD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_useParticleNormalDirection 726
+#define FN_useParticleNormalDirection 855
#define USEPARTICLENORMALDIRECTION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USEPARTICLENORMALDIRECTION_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_particleIsUsingNormalDirection 727
+#define FN_particleIsUsingNormalDirection 856
#define PARTICLEISUSINGNORMALDIRECTION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMesh 728
+#define FN_setParticleMesh 857
#define SETPARTICLEMESH_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMESH_MESH num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setMinParticlesPerSecond 729
+#define FN_setMinParticlesPerSecond 858
#define SETMINPARTICLESPERSECOND_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMINPARTICLESPERSECOND_MINPARTICLESPERSECOND num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMinParticlesPerSecond 730
+#define FN_getMinParticlesPerSecond 859
#define GETMINPARTICLESPERSECOND_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaxParticlesPerSecond 731
+#define FN_setMaxParticlesPerSecond 860
#define SETMAXPARTICLESPERSECOND_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMAXPARTICLESPERSECOND_MAXPARTICLESPERSECOND num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaxParticlesPerSecond 732
+#define FN_getMaxParticlesPerSecond 861
#define GETMAXPARTICLESPERSECOND_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMinStartColor 733
+#define FN_setParticleMinStartColor 862
#define SETPARTICLEMINSTARTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMINSTARTCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMinStartColor 734
+#define FN_getParticleMinStartColor 863
#define GETPARTICLEMINSTARTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMaxStartColor 735
+#define FN_setParticleMaxStartColor 864
#define SETPARTICLEMAXSTARTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMAXSTARTCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMaxStartColor 736
+#define FN_getParticleMaxStartColor 865
#define GETPARTICLEMAXSTARTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMinLife 737
+#define FN_setParticleMinLife 866
#define SETPARTICLEMINLIFE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMINLIFE_MINLIFE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMinLife 738
+#define FN_getParticleMinLife 867
#define GETPARTICLEMINLIFE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMaxLife 739
+#define FN_setParticleMaxLife 868
#define SETPARTICLEMAXLIFE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMAXLIFE_MAXLIFE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMaxLife 740
+#define FN_getParticleMaxLife 869
#define GETPARTICLEMAXLIFE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMaxAngle 741
+#define FN_setParticleMaxAngle 870
#define SETPARTICLEMAXANGLE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMAXANGLE_MAXANGLE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleMaxAngle 742
+#define FN_getParticleMaxAngle 871
#define GETPARTICLEMAXANGLE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleMinStartSize 743
+#define FN_setParticleMinStartSize 872
#define SETPARTICLEMINSTARTSIZE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMINSTARTSIZE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLEMINSTARTSIZE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getParticleMinStartSize 744
+#define FN_getParticleMinStartSize 873
#define GETPARTICLEMINSTARTSIZE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLEMINSTARTSIZE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLEMINSTARTSIZE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setParticleMaxStartSize 745
+#define FN_setParticleMaxStartSize 874
#define SETPARTICLEMAXSTARTSIZE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEMAXSTARTSIZE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLEMAXSTARTSIZE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getParticleMaxStartSize 746
+#define FN_getParticleMaxStartSize 875
#define GETPARTICLEMAXSTARTSIZE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLEMAXSTARTSIZE_W num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLEMAXSTARTSIZE_H num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setParticleCenter 747
+#define FN_setParticleCenter 876
#define SETPARTICLECENTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLECENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLECENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPARTICLECENTER_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getParticleCenter 748
+#define FN_getParticleCenter 877
#define GETPARTICLECENTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLECENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLECENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPARTICLECENTER_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setParticleRadius 749
+#define FN_setParticleRadius 878
#define SETPARTICLERADIUS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLERADIUS_RADIUS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleRadius 750
+#define FN_getParticleRadius 879
#define GETPARTICLERADIUS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleRingThickness 751
+#define FN_setParticleRingThickness 880
#define SETPARTICLERINGTHICKNESS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLERINGTHICKNESS_RINGTHICKNESS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleRingThickness 752
+#define FN_getParticleRingThickness 881
#define GETPARTICLERINGTHICKNESS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setParticleBox 753
+#define FN_setParticleBox 882
#define SETPARTICLEBOX_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLEBOX_MIN_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLEBOX_MIN_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -2306,7 +2755,7 @@
#define SETPARTICLEBOX_MAX_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define SETPARTICLEBOX_MAX_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define SETPARTICLEBOX_MAX_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_getParticleBox 754
+#define FN_getParticleBox 883
#define GETPARTICLEBOX_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLEBOX_MIN_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLEBOX_MIN_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -2314,84 +2763,84 @@
#define GETPARTICLEBOX_MAX_X num_var[4].nref[0].value[ num_var[4].byref_offset ]
#define GETPARTICLEBOX_MAX_Y num_var[5].nref[0].value[ num_var[5].byref_offset ]
#define GETPARTICLEBOX_MAX_Z num_var[6].nref[0].value[ num_var[6].byref_offset ]
-#define FN_setParticleNormal 755
+#define FN_setParticleNormal 884
#define SETPARTICLENORMAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLENORMAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETPARTICLENORMAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETPARTICLENORMAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_getParticleNormal 756
+#define FN_getParticleNormal 885
#define GETPARTICLENORMAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETPARTICLENORMAL_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETPARTICLENORMAL_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETPARTICLENORMAL_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_setParticleLength 757
+#define FN_setParticleLength 886
#define SETPARTICLELENGTH_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETPARTICLELENGTH_P_LEN num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getParticleLength 758
+#define FN_getParticleLength 887
#define GETPARTICLELENGTH_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_useParticleOutlineOnly 759
+#define FN_useParticleOutlineOnly 888
#define USEPARTICLEOUTLINEONLY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define USEPARTICLEOUTLINEONLY_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_particleIsUsingOutlineOnly 760
+#define FN_particleIsUsingOutlineOnly 889
#define PARTICLEISUSINGOUTLINEONLY_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getParticleType 761
+#define FN_getParticleType 890
#define GETPARTICLETYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_lightIsCastingShadow 762
+#define FN_lightIsCastingShadow 891
#define LIGHTISCASTINGSHADOW_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getLightType 763
+#define FN_getLightType 892
#define GETLIGHTTYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_getLightRadius 764
+#define FN_getLightRadius 893
#define GETLIGHTRADIUS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setLightType 765
+#define FN_setLightType 894
#define SETLIGHTTYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTTYPE_LIGHT_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setLightRadius 766
+#define FN_setLightRadius 895
#define SETLIGHTRADIUS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTRADIUS_RADIUS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setLightShadowCast 767
+#define FN_setLightShadowCast 896
#define SETLIGHTSHADOWCAST_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTSHADOWCAST_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetLightAmbientColor 768
+#define FN_SetLightAmbientColor 897
#define SETLIGHTAMBIENTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTAMBIENTCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightAmbientColor 769
+#define FN_GetLightAmbientColor 898
#define GETLIGHTAMBIENTCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightAttenuation 770
+#define FN_SetLightAttenuation 899
#define SETLIGHTATTENUATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTATTENUATION_L_CONSTANT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETLIGHTATTENUATION_L_LINEAR num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETLIGHTATTENUATION_L_QUADRATIC num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetLightAttenuation 771
+#define FN_GetLightAttenuation 900
#define GETLIGHTATTENUATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETLIGHTATTENUATION_CONSTANT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETLIGHTATTENUATION_LINEAR num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETLIGHTATTENUATION_QUADRATIC num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetLightDiffuseColor 772
+#define FN_SetLightDiffuseColor 901
#define SETLIGHTDIFFUSECOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTDIFFUSECOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightDiffuseColor 773
+#define FN_GetLightDiffuseColor 902
#define GETLIGHTDIFFUSECOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightFalloff 774
+#define FN_SetLightFalloff 903
#define SETLIGHTFALLOFF_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTFALLOFF_FALLOFF num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightFalloff 775
+#define FN_GetLightFalloff 904
#define GETLIGHTFALLOFF_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightInnerCone 776
+#define FN_SetLightInnerCone 905
#define SETLIGHTINNERCONE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTINNERCONE_ANGLE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightInnerCone 777
+#define FN_GetLightInnerCone 906
#define GETLIGHTINNERCONE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightOuterCone 778
+#define FN_SetLightOuterCone 907
#define SETLIGHTOUTERCONE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTOUTERCONE_ANGLE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightOuterCone 779
+#define FN_GetLightOuterCone 908
#define GETLIGHTOUTERCONE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetLightSpecularColor 780
+#define FN_SetLightSpecularColor 909
#define SETLIGHTSPECULARCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETLIGHTSPECULARCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetLightSpecularColor 781
+#define FN_GetLightSpecularColor 910
#define GETLIGHTSPECULARCOLOR_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetTerrainPatchAABB 782
+#define FN_GetTerrainPatchAABB 911
#define GETTERRAINPATCHAABB_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETTERRAINPATCHAABB_PATCHX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETTERRAINPATCHAABB_PATCHZ num_var[2].nref[0].value[ num_var[2].byref_offset ]
@@ -2401,242 +2850,193 @@
#define GETTERRAINPATCHAABB_MAXX num_var[6].nref[0].value[ num_var[6].byref_offset ]
#define GETTERRAINPATCHAABB_MAXY num_var[7].nref[0].value[ num_var[7].byref_offset ]
#define GETTERRAINPATCHAABB_MAXZ num_var[8].nref[0].value[ num_var[8].byref_offset ]
-#define FN_GetTerrainPatchLOD 783
+#define FN_GetTerrainPatchLOD 912
#define GETTERRAINPATCHLOD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETTERRAINPATCHLOD_PATCHX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETTERRAINPATCHLOD_PATCHZ num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetTerrainHeight 784
+#define FN_GetTerrainHeight 913
#define GETTERRAINHEIGHT_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETTERRAINHEIGHT_PATCHX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETTERRAINHEIGHT_PATCHZ num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_GetTerrainCenter 785
+#define FN_GetTerrainCenter 914
#define GETTERRAINCENTER_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETTERRAINCENTER_X num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETTERRAINCENTER_Y num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define GETTERRAINCENTER_Z num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetTerrainLODDistance 786
+#define FN_SetTerrainLODDistance 915
#define SETTERRAINLODDISTANCE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETTERRAINLODDISTANCE_LOD num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETTERRAINLODDISTANCE_DISTANCE num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_ScaleTerrainTexture 787
+#define FN_ScaleTerrainTexture 916
#define SCALETERRAINTEXTURE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SCALETERRAINTEXTURE_SCALE num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SCALETERRAINTEXTURE_SCALE2 num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetTerrainCameraMovementDelta 788
+#define FN_SetTerrainCameraMovementDelta 917
#define SETTERRAINCAMERAMOVEMENTDELTA_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETTERRAINCAMERAMOVEMENTDELTA_DELTA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetTerrainCameraRotationDelta 789
+#define FN_SetTerrainCameraRotationDelta 918
#define SETTERRAINCAMERAROTATIONDELTA_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETTERRAINCAMERAROTATIONDELTA_DELTA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetTerrainPatchLOD 790
+#define FN_SetTerrainPatchLOD 919
#define SETTERRAINPATCHLOD_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETTERRAINPATCHLOD_PATCHX num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETTERRAINPATCHLOD_PATCHZ num_var[2].nref[0].value[ num_var[2].byref_offset ]
#define SETTERRAINPATCHLOD_LOD num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_CreateActorAnimation 791
-#define CREATEACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define CREATEACTORANIMATION_START_FRAME num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define CREATEACTORANIMATION_END_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define CREATEACTORANIMATION_SPEED num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_SetActorAnimation 792
-#define SETACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define SETACTORANIMATION_NUM_LOOPS num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetActorAnimationSpeed 793
-#define SETACTORANIMATIONSPEED_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORANIMATIONSPEED_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define SETACTORANIMATIONSPEED_SPEED num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetActorAnimationFrames 794
-#define SETACTORANIMATIONFRAMES_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORANIMATIONFRAMES_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define SETACTORANIMATIONFRAMES_START_FRAME num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define SETACTORANIMATIONFRAMES_END_FRAME num_var[3].nref[0].value[ num_var[3].byref_offset ]
-#define FN_GetActorCurrentAnimation 795
-#define GETACTORCURRENTANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_GetActorAnimationSpeed 796
-#define GETACTORANIMATIONSPEED_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORANIMATIONSPEED_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetActorAnimationStartFrame 797
-#define GETACTORANIMATIONSTARTFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORANIMATIONSTARTFRAME_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetActorAnimationEndFrame 798
-#define GETACTORANIMATIONENDFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define GETACTORANIMATIONENDFRAME_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_SetActorFrame 799
-#define SETACTORFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORFRAME_FRAME num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_GetActorFrame 800
-#define GETACTORFRAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_ActorAnimationIsPlaying 801
-#define ACTORANIMATIONISPLAYING_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_NumActorAnimationLoops 802
-#define NUMACTORANIMATIONLOOPS_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_SetActorMD2Animation 803
-#define SETACTORMD2ANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORMD2ANIMATION_ANIM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define SETACTORMD2ANIMATION_NUM_LOOPS num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_SetActorMD2AnimationByName 804
-#define SETACTORMD2ANIMATIONBYNAME_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
-#define SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_DeleteActorAnimation 805
-#define DELETEACTORANIMATION_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define DELETEACTORANIMATION_ANIMATION num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_createMaterial 806
-#define FN_deleteMaterial 807
+#define FN_createMaterial 920
+#define FN_deleteMaterial 921
#define DELETEMATERIAL_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setActorMaterial 808
+#define FN_setActorMaterial 922
#define SETACTORMATERIAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORMATERIAL_MATERIAL_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORMATERIAL_MATERIAL_ID num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getActorMaterial 809
+#define FN_getActorMaterial 923
#define GETACTORMATERIAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORMATERIAL_MATERIAL_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_copyActorMaterial 810
+#define FN_copyActorMaterial 924
#define COPYACTORMATERIAL_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define COPYACTORMATERIAL_MATERIAL_NUM num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_copyMaterial 811
+#define FN_copyMaterial 925
#define COPYMATERIAL_SMATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialTextureCanvas 812
+#define FN_setMaterialTextureCanvas 926
#define SETMATERIALTEXTURECANVAS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALTEXTURECANVAS_LEVEL num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETMATERIALTEXTURECANVAS_CANVAS_ID num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setMaterialAmbientColor 813
+#define FN_setMaterialAmbientColor 927
#define SETMATERIALAMBIENTCOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALAMBIENTCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialAmbientColor 814
+#define FN_getMaterialAmbientColor 928
#define GETMATERIALAMBIENTCOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialAntiAliasing 815
+#define FN_setMaterialAntiAliasing 929
#define SETMATERIALANTIALIASING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALANTIALIASING_AA num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialAntiAliasing 816
+#define FN_getMaterialAntiAliasing 930
#define GETMATERIALANTIALIASING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialBackfaceCulling 817
+#define FN_setMaterialBackfaceCulling 931
#define SETMATERIALBACKFACECULLING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALBACKFACECULLING_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialBackfaceCulling 818
+#define FN_getMaterialBackfaceCulling 932
#define GETMATERIALBACKFACECULLING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialBlendFactor 819
+#define FN_setMaterialBlendFactor 933
#define SETMATERIALBLENDFACTOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALBLENDFACTOR_BF num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialBlendFactor 820
+#define FN_getMaterialBlendFactor 934
#define GETMATERIALBLENDFACTOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialBlendMode 821
+#define FN_setMaterialBlendMode 935
#define SETMATERIALBLENDMODE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALBLENDMODE_BLEND_MODE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialBlendMode 822
+#define FN_getMaterialBlendMode 936
#define GETMATERIALBLENDMODE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialColorMask 823
+#define FN_setMaterialColorMask 937
#define SETMATERIALCOLORMASK_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALCOLORMASK_COLOR_MASK num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialColorMask 824
+#define FN_getMaterialColorMask 938
#define GETMATERIALCOLORMASK_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialColorMode 825
+#define FN_setMaterialColorMode 939
#define SETMATERIALCOLORMODE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALCOLORMODE_COLOR_MODE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialColorMode 826
+#define FN_getMaterialColorMode 940
#define GETMATERIALCOLORMODE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialDiffuseColor 827
+#define FN_setMaterialDiffuseColor 941
#define SETMATERIALDIFFUSECOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALDIFFUSECOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialDiffuseColor 828
+#define FN_getMaterialDiffuseColor 942
#define GETMATERIALDIFFUSECOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialEmissiveColor 829
+#define FN_setMaterialEmissiveColor 943
#define SETMATERIALEMISSIVECOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALEMISSIVECOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialEmissiveColor 830
+#define FN_getMaterialEmissiveColor 944
#define GETMATERIALEMISSIVECOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialFog 831
+#define FN_setMaterialFog 945
#define SETMATERIALFOG_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALFOG_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialFog 832
+#define FN_getMaterialFog 946
#define GETMATERIALFOG_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialFrontfaceCulling 833
+#define FN_setMaterialFrontfaceCulling 947
#define SETMATERIALFRONTFACECULLING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALFRONTFACECULLING_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialFrontfaceCulling 834
+#define FN_getMaterialFrontfaceCulling 948
#define GETMATERIALFRONTFACECULLING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialGouraudShading 835
+#define FN_setMaterialGouraudShading 949
#define SETMATERIALGOURAUDSHADING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALGOURAUDSHADING_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsGouraudShaded 836
+#define FN_materialIsGouraudShaded 950
#define MATERIALISGOURAUDSHADED_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_materialIsAplhaBlend 837
+#define FN_materialIsAplhaBlend 951
#define MATERIALISAPLHABLEND_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_materialIsTransparent 838
+#define FN_materialIsTransparent 952
#define MATERIALISTRANSPARENT_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialLighting 839
+#define FN_setMaterialLighting 953
#define SETMATERIALLIGHTING_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALLIGHTING_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsLit 840
+#define FN_materialIsLit 954
#define MATERIALISLIT_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialType 841
+#define FN_setMaterialType 955
#define SETMATERIALTYPE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALTYPE_MAT_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialType 842
+#define FN_getMaterialType 956
#define GETMATERIALTYPE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialNormalize 843
+#define FN_setMaterialNormalize 957
#define SETMATERIALNORMALIZE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALNORMALIZE_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsNormalized 844
+#define FN_materialIsNormalized 958
#define MATERIALISNORMALIZED_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialPointCloud 845
+#define FN_setMaterialPointCloud 959
#define SETMATERIALPOINTCLOUD_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALPOINTCLOUD_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsPointCloud 846
+#define FN_materialIsPointCloud 960
#define MATERIALISPOINTCLOUD_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialFlag 847
+#define FN_setMaterialFlag 961
#define SETMATERIALFLAG_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALFLAG_MATERIAL_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETMATERIALFLAG_F_VALUE num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getMaterialFlag 848
+#define FN_getMaterialFlag 962
#define GETMATERIALFLAG_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETMATERIALFLAG_MATERIAL_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_setMaterialTexture 849
+#define FN_setMaterialTexture 963
#define SETMATERIALTEXTURE_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALTEXTURE_LEVEL num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETMATERIALTEXTURE_IMG_ID num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setMaterialShininess 850
+#define FN_setMaterialShininess 964
#define SETMATERIALSHININESS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALSHININESS_SHININESS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialShininess 851
+#define FN_getMaterialShininess 965
#define GETMATERIALSHININESS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialSpecularColor 852
+#define FN_setMaterialSpecularColor 966
#define SETMATERIALSPECULARCOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALSPECULARCOLOR_COLOR num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialSpecularColor 853
+#define FN_getMaterialSpecularColor 967
#define GETMATERIALSPECULARCOLOR_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialThickness 854
+#define FN_setMaterialThickness 968
#define SETMATERIALTHICKNESS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALTHICKNESS_THICKNESS num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getMaterialThickness 855
+#define FN_getMaterialThickness 969
#define GETMATERIALTHICKNESS_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setMaterialWireframe 856
+#define FN_setMaterialWireframe 970
#define SETMATERIALWIREFRAME_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETMATERIALWIREFRAME_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_materialIsWireframe 857
+#define FN_materialIsWireframe 971
#define MATERIALISWIREFRAME_MATERIAL_ID num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setActorTexture 858
+#define FN_setActorTexture 972
#define SETACTORTEXTURE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORTEXTURE_LAYER num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORTEXTURE_IMAGE_ID num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getActorMaterialCount 859
+#define FN_getActorMaterialCount 973
#define GETACTORMATERIALCOUNT_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
-#define FN_setActorMaterialFlag 860
+#define FN_setActorMaterialFlag 974
#define SETACTORMATERIALFLAG_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORMATERIALFLAG_FLAG num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define SETACTORMATERIALFLAG_FLAG_VALUE num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_getActorMaterialFlag 861
+#define FN_getActorMaterialFlag 975
#define GETACTORMATERIALFLAG_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORMATERIALFLAG_MATERIAL num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define GETACTORMATERIALFLAG_FLAG num_var[2].nref[0].value[ num_var[2].byref_offset ]
-#define FN_setActorMaterialType 862
+#define FN_setActorMaterialType 976
#define SETACTORMATERIALTYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define SETACTORMATERIALTYPE_MATERIAL_TYPE num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_getActorMaterialType 863
+#define FN_getActorMaterialType 977
#define GETACTORMATERIALTYPE_ACTOR num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define GETACTORMATERIALTYPE_MATERIAL num_var[1].nref[0].value[ num_var[1].byref_offset ]
-#define FN_MaterialExists 864
+#define FN_MaterialExists 978
#define MATERIALEXISTS_MATERIAL num_var[0].nref[0].value[ num_var[0].byref_offset ]
diff --git a/rcbasic_runtime/rc_func130_cases.h b/rcbasic_runtime/rc_func130_cases.h
index 8b13789..c66203c 100644
--- a/rcbasic_runtime/rc_func130_cases.h
+++ b/rcbasic_runtime/rc_func130_cases.h
@@ -1 +1,2966 @@
+case FN_Fprint: //Sub Procedure
+ rc_fprint( FPRINT_TXT$ );
+ break;
+case FN_Input$: //String Function
+ rc_push_str(rc_input( INPUT$_PROMPT$ ));
+ break;
+case FN_tst: //Sub Procedure
+ rc_tst( );
+ break;
+case FN_ArrayDim: //Number Function
+ //DUMMY CASE
+
+ break;
+case FN_StringArrayDim: //Number Function
+ rc_push_num( rc_string_array_dim( (rc_strId*) str_var[0].sid_value.ref_parent ) );
+ arr_ref_id.clear();
+
+ break;
+case FN_NumberArrayDim: //Number Function
+ rc_push_num( rc_number_array_dim( (rc_numId*)num_var[0].nid_value.ref_parent ) );
+ arr_ref_id.clear();
+
+ break;
+case FN_ArraySize: //Number Function
+ //DUMMY CASE
+
+ break;
+case FN_StringArraySize: //Number Function
+ rc_push_num( rc_string_array_size( (rc_strId*) str_var[0].sid_value.ref_parent, STRINGARRAYSIZE_ARRAY_DIM));
+ arr_ref_id.clear();
+
+ break;
+case FN_NumberArraySize: //Number Function
+ rc_push_num( rc_number_array_size( (rc_numId*)num_var[0].nid_value.ref_parent, NUMBERARRAYSIZE_ARRAY_DIM));
+ arr_ref_id.clear();
+
+ break;
+case FN_NumberArrayCopy: //Sub Procedure
+ rc_number_array_copy( &num_var[0], &num_var[1]);
+ arr_ref_id.clear();
+
+ break;
+case FN_StringArrayCopy: //Sub Procedure
+ rc_string_array_copy( &str_var[0], &str_var[1]);
+ arr_ref_id.clear();
+
+ break;
+case FN_ArrayCopy: //Sub Procedure
+ //DUMMY CASE
+
+ break;
+case FN_NumberArrayFill: //Sub Procedure
+ rc_number_array_fill( &num_var[0], NUMBERARRAYFILL_FDATA);
+ arr_ref_id.clear();
+
+ break;
+case FN_StringArrayFill: //Sub Procedure
+ rc_string_array_fill( &str_var[0], STRINGARRAYFILL_FDATA$);
+ arr_ref_id.clear();
+
+ break;
+case FN_ArrayFill: //Sub Procedure
+ //DUMMY CASE
+
+ break;
+case FN_TypeArrayDim: //Number Function
+ rc_push_num( rc_type_array_dim( TYPEARRAYDIM_ID ) );
+ arr_ref_id.clear();
+
+ break;
+case FN_TypeArraySize: //Number Function
+ rc_push_num( rc_type_array_size( TYPEARRAYSIZE_ID, TYPEARRAYSIZE_ARRAY_DIM ) );
+ arr_ref_id.clear();
+
+ break;
+case FN_TypeArrayCopy: //Sub Procedure
+ rc_free_type(TYPEARRAYCOPY_DST);
+ rc_type_array_copy( TYPEARRAYCOPY_SRC, TYPEARRAYCOPY_DST );
+
+ break;
+case FN_TypeArrayFill: //Sub Procedure
+ rc_type_array_fill( TYPEARRAYFILL_SRC, &TYPEARRAYFILL_FDATA );
+
+ break;
+case FN_Abs: //Number Function
+ rc_push_num(rc_intern_abs( ABS_N ));
+ break;
+case FN_Acos: //Number Function
+ rc_push_num(rc_intern_aCos( ACOS_N ));
+ break;
+case FN_AndBit: //Number Function
+ rc_push_num(rc_intern_andBit( ANDBIT_A, ANDBIT_B ));
+ break;
+case FN_Asin: //Number Function
+ rc_push_num(rc_intern_aSin( ASIN_N ));
+ break;
+case FN_Atan: //Number Function
+ rc_push_num(rc_intern_aTan( ATAN_N ));
+ break;
+case FN_Bin$: //String Function
+ rc_push_str(rc_intern_bin( BIN$_N ));
+ break;
+case FN_CInt32: //Number Function
+ rc_push_num(rc_intern_cint32( CINT32_I ));
+ break;
+case FN_CInt64: //Number Function
+ rc_push_num(rc_intern_cint64( CINT64_I ));
+ break;
+case FN_Cos: //Number Function
+ rc_push_num(rc_intern_cos( COS_N ));
+ break;
+case FN_Degrees: //Number Function
+ rc_push_num(rc_intern_degrees( DEGREES_R ));
+ break;
+case FN_Exp: //Number Function
+ rc_push_num(rc_intern_exp( EXP_N ));
+ break;
+case FN_Frac: //Number Function
+ rc_push_num(rc_intern_frac( FRAC_N ));
+ break;
+case FN_Hex$: //String Function
+ rc_push_str(rc_intern_hex( HEX$_N ));
+ break;
+case FN_HexVal: //Number Function
+ rc_push_num(rc_intern_hexInt( HEXVAL_N$ ));
+ break;
+case FN_Int: //Number Function
+ rc_push_num(rc_intern_int( INT_N ));
+ break;
+case FN_Log: //Number Function
+ rc_push_num(rc_intern_log( LOG_N ));
+ break;
+case FN_Max: //Number Function
+ rc_push_num(rc_intern_max( MAX_A, MAX_B ));
+ break;
+case FN_Min: //Number Function
+ rc_push_num(rc_intern_min( MIN_A, MIN_B ));
+ break;
+case FN_OrBit: //Number Function
+ rc_push_num(rc_intern_orBit( ORBIT_A, ORBIT_B ));
+ break;
+case FN_Radians: //Number Function
+ rc_push_num(rc_intern_radians( RADIANS_D ));
+ break;
+case FN_Randomize: //Number Function
+ rc_push_num(rc_intern_randomize( RANDOMIZE_N ));
+ break;
+case FN_Rand: //Number Function
+ rc_push_num(rc_intern_rand( RAND_N ));
+ break;
+case FN_Round: //Number Function
+ rc_push_num(rc_intern_round( ROUND_N ));
+ break;
+case FN_Sign: //Number Function
+ rc_push_num(rc_intern_sign( SIGN_N ));
+ break;
+case FN_Sin: //Number Function
+ rc_push_num(rc_intern_sin( SIN_N ));
+ break;
+case FN_Sqrt: //Number Function
+ rc_push_num(rc_intern_sqrt( SQRT_N ));
+ break;
+case FN_Tan: //Number Function
+ rc_push_num(rc_intern_tan( TAN_N ));
+ break;
+case FN_XOrBit: //Number Function
+ rc_push_num(rc_intern_xorbit( XORBIT_A, XORBIT_B ));
+ break;
+case FN_GetLineIntersection: //Number Function
+ rc_push_num(GetLineIntersect( GETLINEINTERSECTION_P0_X, GETLINEINTERSECTION_P0_Y, GETLINEINTERSECTION_P1_X, GETLINEINTERSECTION_P1_Y, GETLINEINTERSECTION_P2_X, GETLINEINTERSECTION_P2_Y, GETLINEINTERSECTION_P3_X, GETLINEINTERSECTION_P3_Y, &GETLINEINTERSECTION_I_X, &GETLINEINTERSECTION_I_Y ));
+ break;
+case FN_Interpolate: //Number Function
+ rc_push_num(Interpolate( INTERPOLATE_MIN_A, INTERPOLATE_MAX_A, INTERPOLATE_MID_A, INTERPOLATE_MIN_B, INTERPOLATE_MAX_B ));
+ break;
+case FN_ATan2: //Number Function
+ rc_push_num(atan2( ATAN2_Y, ATAN2_X ));
+ break;
+case FN_PointInQuad: //Number Function
+ rc_push_num(PointInQuad( POINTINQUAD_X, POINTINQUAD_Y, POINTINQUAD_X1, POINTINQUAD_Y1, POINTINQUAD_X2, POINTINQUAD_Y2, POINTINQUAD_X3, POINTINQUAD_Y3, POINTINQUAD_X4, POINTINQUAD_Y4 ));
+ break;
+case FN_PointInTri: //Number Function
+ rc_push_num(PointInTri( POINTINTRI_X, POINTINTRI_Y, POINTINTRI_X1, POINTINTRI_Y1, POINTINTRI_X2, POINTINTRI_Y2, POINTINTRI_X3, POINTINTRI_Y3 ));
+ break;
+case FN_Distance2D: //Number Function
+ rc_push_num(Distance2D( DISTANCE2D_X1, DISTANCE2D_Y1, DISTANCE2D_X2, DISTANCE2D_Y2 ));
+ break;
+case FN_Distance3D: //Number Function
+ rc_push_num(Distance3D( DISTANCE3D_X1, DISTANCE3D_Y1, DISTANCE3D_Z1, DISTANCE3D_X2, DISTANCE3D_Y2, DISTANCE3D_Z2 ));
+ break;
+case FN_GetCircleLineIntersection: //Number Function
+ rc_push_num(GetCircleLineIntersection( GETCIRCLELINEINTERSECTION_CIRCLE_X, GETCIRCLELINEINTERSECTION_CIRCLE_Y, GETCIRCLELINEINTERSECTION_RADIUS, GETCIRCLELINEINTERSECTION_X1, GETCIRCLELINEINTERSECTION_Y1, GETCIRCLELINEINTERSECTION_X2, GETCIRCLELINEINTERSECTION_Y2, &GETCIRCLELINEINTERSECTION_IX1, &GETCIRCLELINEINTERSECTION_IY1, &GETCIRCLELINEINTERSECTION_IX2, &GETCIRCLELINEINTERSECTION_IY2 ));
+ break;
+case FN_GetLinePlaneIntersection: //Number Function
+ rc_push_num(GetLinePlaneIntersection( &GETLINEPLANEINTERSECTION_LINE_POINT, &GETLINEPLANEINTERSECTION_LINE_DIRECTION, &GETLINEPLANEINTERSECTION_PLANE_POINT_1, &GETLINEPLANEINTERSECTION_PLANE_POINT_2, &GETLINEPLANEINTERSECTION_PLANE_POINT_3, &GETLINEPLANEINTERSECTION_INTERSECTION ));
+ break;
+case FN_Asc: //Number Function
+ rc_push_num(rc_intern_asc( ASC_C$ ));
+ break;
+case FN_Chr$: //String Function
+ rc_push_str(rc_intern_chr( CHR$_N ));
+ break;
+case FN_Insert$: //String Function
+ rc_push_str(rc_intern_insert( INSERT$_SRC$, INSERT$_TGT$, INSERT$_POS ));
+ break;
+case FN_InStr: //Number Function
+ rc_push_num(rc_intern_instr( INSTR_SRC$, INSTR_SUBSTR$ ));
+ break;
+case FN_Lcase$: //String Function
+ rc_push_str(rc_intern_lcase( LCASE$_SRC$ ));
+ break;
+case FN_Left$: //String Function
+ rc_push_str(rc_intern_left( LEFT$_SRC$, LEFT$_N ));
+ break;
+case FN_Length: //Number Function
+ rc_push_num(rc_intern_length( LENGTH_SRC$ ));
+ break;
+case FN_Len: //Number Function
+ rc_push_num(rc_intern_length( LEN_SRC$ ));
+ break;
+case FN_Ltrim$: //String Function
+ rc_push_str(rc_intern_ltrim( LTRIM$_SRC$ ));
+ break;
+case FN_Mid$: //String Function
+ rc_push_str(rc_intern_mid( MID$_SRC$, MID$_START, MID$_N ));
+ break;
+case FN_ReplaceSubstr$: //String Function
+ rc_push_str(rc_intern_replaceSubstr( REPLACESUBSTR$_SRC$, REPLACESUBSTR$_RPC$, REPLACESUBSTR$_POS ));
+ break;
+case FN_Replace$: //String Function
+ rc_push_str(rc_intern_replace( REPLACE$_SRC$, REPLACE$_TGT$, REPLACE$_RPC$ ));
+ break;
+case FN_Reverse$: //String Function
+ rc_push_str(rc_intern_reverse( REVERSE$_SRC$ ));
+ break;
+case FN_Right$: //String Function
+ rc_push_str(rc_intern_right( RIGHT$_SRC$, RIGHT$_N ));
+ break;
+case FN_Rtrim$: //String Function
+ rc_push_str(rc_intern_rtrim( RTRIM$_SRC$ ));
+ break;
+case FN_StringFill$: //String Function
+ rc_push_str(rc_intern_stringfill( STRINGFILL$_SRC$, STRINGFILL$_N ));
+ break;
+case FN_Str$: //String Function
+ rc_push_str(rc_intern_str( STR$_N ));
+ break;
+case FN_Str_F$: //String Function
+ rc_push_str(rc_intern_str_f( STR_F$_N ));
+ break;
+case FN_Str_S$: //String Function
+ rc_push_str(rc_intern_str_s( STR_S$_N ));
+ break;
+case FN_Tally: //Number Function
+ rc_push_num(rc_intern_tally( TALLY_SRC$, TALLY_SUBSTR$ ));
+ break;
+case FN_Trim$: //String Function
+ rc_push_str(rc_intern_trim( TRIM$_SRC$ ));
+ break;
+case FN_Ucase$: //String Function
+ rc_push_str(rc_intern_ucase( UCASE$_SRC$ ));
+ break;
+case FN_Val: //Number Function
+ rc_push_num(rc_intern_val( VAL_N$ ));
+ break;
+case FN_Size: //Number Function
+ rc_push_num(rc_intern_size( SIZE_S$ ));
+ break;
+case FN_BufferFromString: //Number Function
+ rc_push_num(rc_intern_bufferFromString( BUFFERFROMSTRING_S$, &BUFFERFROMSTRING_BUFFER ));
+ break;
+case FN_StringFromBuffer$: //String Function
+ rc_push_str(rc_intern_stringFromBuffer( &STRINGFROMBUFFER$_BUFFER, STRINGFROMBUFFER$_BUFFER_SIZE ));
+ break;
+case FN_CreateStack_N: //Number Function
+ rc_push_num(rc_intern_createStack_N( ));
+ break;
+case FN_CreateStack_S: //Number Function
+ rc_push_num(rc_intern_createStack_S( ));
+ break;
+case FN_ClearStack_N: //Sub Procedure
+ rc_intern_clearStack_N( CLEARSTACK_N_NUM_STACK );
+ break;
+case FN_ClearStack_S: //Sub Procedure
+ rc_intern_clearStack_S( CLEARSTACK_S_STR_STACK );
+ break;
+case FN_DeleteStack_N: //Sub Procedure
+ rc_intern_deleteStack_N( DELETESTACK_N_NUM_STACK );
+ break;
+case FN_DeleteStack_S: //Sub Procedure
+ rc_intern_deleteStack_S( DELETESTACK_S_STR_STACK );
+ break;
+case FN_Push_N: //Sub Procedure
+ rc_intern_push_n( PUSH_N_NUM_STACK, PUSH_N_N );
+ break;
+case FN_Pop_N: //Number Function
+ rc_push_num(rc_intern_pop_n( POP_N_NUM_STACK ));
+ break;
+case FN_Push_S: //Sub Procedure
+ rc_intern_push_s( PUSH_S_STR_STACK, PUSH_S_S$ );
+ break;
+case FN_Pop_S$: //String Function
+ rc_push_str(rc_intern_pop_s( POP_S$_STR_STACK ));
+ break;
+case FN_Stack_Size_N: //Number Function
+ rc_push_num(rc_intern_n_stack_size( STACK_SIZE_N_NUM_STACK ));
+ break;
+case FN_Stack_Size_S: //Number Function
+ rc_push_num(rc_intern_s_stack_size( STACK_SIZE_S_STR_STACK ));
+ break;
+case FN_OpenFile: //Number Function
+ rc_push_num(rc_intern_fileOpen( OPENFILE_FILENAME$, OPENFILE_MODE ));
+ break;
+case FN_CloseFile: //Sub Procedure
+ rc_intern_fileClose( CLOSEFILE_STREAM );
+ break;
+case FN_ReadByte: //Number Function
+ rc_push_num(rc_intern_fileReadByte( READBYTE_STREAM ));
+ break;
+case FN_WriteByte: //Sub Procedure
+ rc_intern_fileWriteByte( WRITEBYTE_STREAM, WRITEBYTE_BYTE );
+ break;
+case FN_ReadLine$: //String Function
+ rc_push_str(rc_intern_fileReadLine( READLINE$_STREAM ));
+ break;
+case FN_Write: //Sub Procedure
+ rc_intern_fileWrite( WRITE_STREAM, WRITE_TXT$ );
+ break;
+case FN_WriteLine: //Sub Procedure
+ rc_intern_fileWriteLine( WRITELINE_STREAM, WRITELINE_TXT$ );
+ break;
+case FN_CopyFile: //Sub Procedure
+ rc_intern_fileCopy( COPYFILE_SRC$, COPYFILE_DST$ );
+ break;
+case FN_RemoveFile: //Number Function
+ rc_push_num(rc_intern_fileDelete( REMOVEFILE_FILENAME$ ));
+ break;
+case FN_FileExists: //Number Function
+ rc_push_num(rc_intern_fileExist( FILEEXISTS_FILENAME$ ));
+ break;
+case FN_MoveFile: //Number Function
+ rc_push_num(rc_intern_fileMove( MOVEFILE_SRC$, MOVEFILE_DST$ ));
+ break;
+case FN_RenameFile: //Number Function
+ rc_push_num(rc_intern_fileRename( RENAMEFILE_SRC$, RENAMEFILE_DST$ ));
+ break;
+case FN_FileLength: //Number Function
+ rc_push_num(rc_intern_fileLength( FILELENGTH_FILENAME$ ));
+ break;
+case FN_Tell: //Number Function
+ rc_push_num(rc_intern_fileTell( TELL_STREAM ));
+ break;
+case FN_Seek: //Number Function
+ rc_push_num(rc_intern_fileSeek( SEEK_STREAM, SEEK_POS ));
+ break;
+case FN_EOF: //Number Function
+ rc_push_num(rc_intern_eof( EOF_STREAM ));
+ break;
+case FN_WriteByteBuffer: //Number Function
+ rc_push_num(rc_intern_fileWriteByteBuffer( WRITEBYTEBUFFER_STREAM, &WRITEBYTEBUFFER_BUF, WRITEBYTEBUFFER_BUF_SIZE ));
+ break;
+case FN_ReadByteBuffer: //Number Function
+ rc_push_num(rc_intern_fileReadByteBuffer( READBYTEBUFFER_STREAM, &READBYTEBUFFER_BUF, READBYTEBUFFER_BUF_SIZE ));
+ break;
+case FN_ChangeDir: //Sub Procedure
+ rc_intern_dirChange( CHANGEDIR_P$ );
+ break;
+case FN_DirExists: //Number Function
+ rc_push_num(rc_intern_dirExist( DIREXISTS_P$ ));
+ break;
+case FN_DirFirst$: //String Function
+ rc_push_str(rc_intern_dirFirst( ));
+ break;
+case FN_Dir$: //String Function
+ rc_push_str(rc_intern_dir( ));
+ break;
+case FN_DirNext$: //String Function
+ rc_push_str(rc_intern_dirNext( ));
+ break;
+case FN_MakeDir: //Number Function
+ rc_push_num(rc_intern_dirCreate( MAKEDIR_P$ ));
+ break;
+case FN_RemoveDir: //Number Function
+ rc_push_num(rc_intern_dirDelete( REMOVEDIR_P$ ));
+ break;
+case FN_Date$: //String Function
+ rc_push_str(rc_intern_date( ));
+ break;
+case FN_Easter$: //String Function
+ rc_push_str(rc_intern_easter( EASTER$_YEAR ));
+ break;
+case FN_Ticks: //Number Function
+ rc_push_num(rc_intern_ticks( ));
+ break;
+case FN_Time$: //String Function
+ rc_push_str(rc_intern_time( ));
+ break;
+case FN_Timer: //Number Function
+ rc_push_num(rc_intern_timer( ));
+ break;
+case FN_Wait: //Sub Procedure
+ rc_intern_wait( WAIT_M_SEC );
+ break;
+case FN_OpenWindow: //Number Function
+ rc_push_num(rc_windowOpen( OPENWINDOW_TITLE$, OPENWINDOW_W, OPENWINDOW_H, OPENWINDOW_FULLSCREEN, OPENWINDOW_VSYNC ));
+ break;
+case FN_OpenWindowEx: //Number Function
+ rc_push_num(rc_windowOpenEx( OPENWINDOWEX_TITLE$, OPENWINDOWEX_X, OPENWINDOWEX_Y, OPENWINDOWEX_W, OPENWINDOWEX_H, OPENWINDOWEX_MODE, OPENWINDOWEX_AA, OPENWINDOWEX_STENCIL_BUFFER, OPENWINDOWEX_VSYNC ));
+ break;
+case FN_CloseWindow: //Sub Procedure
+ rc_closeWindow_hw( );
+ break;
+case FN_RaiseWindow: //Sub Procedure
+ rc_raiseWindow( );
+ break;
+case FN_Update: //Sub Procedure
+ rc_update( );
+ break;
+case FN_Cls: //Sub Procedure
+ rc_cls( );
+ break;
+case FN_SetClearColor: //Sub Procedure
+ rc_setClearColor( SETCLEARCOLOR_C );
+ break;
+case FN_ShowWindow: //Sub Procedure
+ rc_showWindow( );
+ break;
+case FN_HideWindow: //Sub Procedure
+ rc_hideWindow( );
+ break;
+case FN_SetWindowTitle: //Sub Procedure
+ rc_setWindowTitle( SETWINDOWTITLE_TITLE$ );
+ break;
+case FN_WindowTitle$: //String Function
+ rc_push_str(rc_getWindowTitle( ));
+ break;
+case FN_SetWindowPosition: //Sub Procedure
+ rc_setWindowPosition( SETWINDOWPOSITION_X, SETWINDOWPOSITION_Y );
+ break;
+case FN_GetWindowPosition: //Sub Procedure
+ rc_getWindowPosition( &GETWINDOWPOSITION_X, &GETWINDOWPOSITION_Y );
+ break;
+case FN_SetWindowSize: //Sub Procedure
+ rc_setWindowSize( SETWINDOWSIZE_W, SETWINDOWSIZE_H );
+ break;
+case FN_GetWindowSize: //Sub Procedure
+ rc_getWindowSize( &GETWINDOWSIZE_W, &GETWINDOWSIZE_H );
+ break;
+case FN_SetWindowMinSize: //Sub Procedure
+ rc_setWindowMinSize( SETWINDOWMINSIZE_W, SETWINDOWMINSIZE_H );
+ break;
+case FN_GetWindowMinSize: //Sub Procedure
+ rc_getWindowMinSize( &GETWINDOWMINSIZE_W, &GETWINDOWMINSIZE_H );
+ break;
+case FN_SetWindowMaxSize: //Sub Procedure
+ rc_setWindowMaxSize( SETWINDOWMAXSIZE_W, SETWINDOWMAXSIZE_H );
+ break;
+case FN_GetWindowMaxSize: //Sub Procedure
+ rc_getWindowMaxSize( &GETWINDOWMAXSIZE_W, &GETWINDOWMAXSIZE_H );
+ break;
+case FN_WindowIsFullscreen: //Number Function
+ rc_push_num(rc_windowIsFullscreen( ));
+ break;
+case FN_WindowIsVisible: //Number Function
+ rc_push_num(rc_windowIsVisible( ));
+ break;
+case FN_WindowIsBordered: //Number Function
+ rc_push_num(rc_windowIsBordered( ));
+ break;
+case FN_WindowIsResizable: //Number Function
+ rc_push_num(rc_windowIsResizable( ));
+ break;
+case FN_WindowIsMinimized: //Number Function
+ rc_push_num(rc_windowIsMinimized( ));
+ break;
+case FN_WindowIsMaximized: //Number Function
+ rc_push_num(rc_windowIsMaximized( ));
+ break;
+case FN_WindowHasInputFocus: //Number Function
+ rc_push_num(rc_windowHasInputFocus( ));
+ break;
+case FN_WindowHasMouseFocus: //Number Function
+ rc_push_num(rc_windowHasMouseFocus( ));
+ break;
+case FN_SetWindowFullscreen: //Sub Procedure
+ rc_setWindowFullscreen( SETWINDOWFULLSCREEN_FLAG );
+ break;
+case FN_MaximizeWindow: //Sub Procedure
+ rc_maximizeWindow( );
+ break;
+case FN_MinimizeWindow: //Sub Procedure
+ rc_minimizeWindow( );
+ break;
+case FN_SetWindowBordered: //Sub Procedure
+ rc_setWindowBordered( SETWINDOWBORDERED_FLAG );
+ break;
+case FN_WindowClip: //Number Function
+ rc_push_num(rc_windowClip( WINDOWCLIP_X, WINDOWCLIP_Y, WINDOWCLIP_W, WINDOWCLIP_H ));
+ break;
+case FN_WindowExists: //Number Function
+ rc_push_num(rc_windowExists( ));
+ break;
+case FN_WindowEvent_Close: //Number Function
+ rc_push_num(rc_windowEvent_Close( ));
+ break;
+case FN_WindowEvent_Maximize: //Number Function
+ rc_push_num(rc_windowEvent_Maximize( ));
+ break;
+case FN_WindowEvent_Minimize: //Number Function
+ rc_push_num(rc_windowEvent_Minimize( ));
+ break;
+case FN_FPS: //Number Function
+ rc_push_num(rc_FPS( ));
+ break;
+case FN_SetWindowIcon: //Sub Procedure
+ rc_setWindowIcon( SETWINDOWICON_SLOT );
+ break;
+case FN_WindowEvent_Resize: //Number Function
+ rc_push_num(rc_windowEvent_Resize( ));
+ break;
+case FN_SetWindowAutoClose: //Sub Procedure
+ rc_setWindowAutoClose( SETWINDOWAUTOCLOSE_EXIT_ON_CLOSE );
+ break;
+case FN_SetWindowResizable: //Sub Procedure
+ rc_setWindowResizable( SETWINDOWRESIZABLE_FLAG );
+ break;
+case FN_WindowMode: //Number Function
+ rc_push_num(rc_windowMode( WINDOWMODE_VISIBLE, WINDOWMODE_FULLSCREEN, WINDOWMODE_RESIZABLE, WINDOWMODE_BORDERLESS, WINDOWMODE_HIGHDPI ));
+ break;
+case FN_getWindowMode: //Number Function
+ rc_push_num(rc_getWindowMode( ));
+ break;
+case FN_RestoreWindow: //Sub Procedure
+ rc_restoreWindow( );
+ break;
+case FN_GrabInput: //Sub Procedure
+ rc_grabInput( GRABINPUT_FLAG );
+ break;
+case FN_SetWindowAlwaysOnTop: //Sub Procedure
+ rc_setWindowAlwaysOnTop( SETWINDOWALWAYSONTOP_FLAG );
+ break;
+case FN_SetMouseRelative: //Sub Procedure
+ rc_setMouseRelative( SETMOUSERELATIVE_FLAG );
+ break;
+case FN_FlashWindow: //Number Function
+ rc_push_num(rc_flashWindow( FLASHWINDOW_FLAG ));
+ break;
+case FN_WindowIsGrabbed: //Number Function
+ rc_push_num(rc_windowIsGrabbed( ));
+ break;
+case FN_PreUpdate: //Sub Procedure
+ rc_preUpdate( );
+ break;
+case FN_OpenCanvas: //Number Function
+ rc_push_num(rc_canvasOpen( OPENCANVAS_W, OPENCANVAS_H, OPENCANVAS_VIEWPORT_X, OPENCANVAS_VIEWPORT_Y, OPENCANVAS_VIEWPORT_W, OPENCANVAS_VIEWPORT_H, OPENCANVAS_MODE ));
+ break;
+case FN_CloseCanvas: //Sub Procedure
+ rc_canvasClose( CLOSECANVAS_C_NUM );
+ break;
+case FN_OpenCanvas3D: //Number Function
+ rc_push_num(rc_canvasOpen3D( OPENCANVAS3D_VIEWPORT_X, OPENCANVAS3D_VIEWPORT_Y, OPENCANVAS3D_VIEWPORT_W, OPENCANVAS3D_VIEWPORT_H, OPENCANVAS3D_MODE ));
+ break;
+case FN_SetCanvasVisible: //Sub Procedure
+ rc_setCanvasVisible( SETCANVASVISIBLE_C_NUM, SETCANVASVISIBLE_FLAG );
+ break;
+case FN_CanvasIsVisible: //Number Function
+ rc_push_num(rc_canvasIsVisible( CANVASISVISIBLE_C_NUM ));
+ break;
+case FN_SetCanvasViewport: //Sub Procedure
+ rc_setCanvasViewport( SETCANVASVIEWPORT_CNUM, SETCANVASVIEWPORT_X, SETCANVASVIEWPORT_Y, SETCANVASVIEWPORT_W, SETCANVASVIEWPORT_H );
+ break;
+case FN_GetCanvasViewport: //Sub Procedure
+ rc_getCanvasViewport( GETCANVASVIEWPORT_C_NUM, &GETCANVASVIEWPORT_X, &GETCANVASVIEWPORT_Y, &GETCANVASVIEWPORT_W, &GETCANVASVIEWPORT_H );
+ break;
+case FN_Canvas: //Sub Procedure
+ rc_setActiveCanvas( CANVAS_C_NUM );
+ break;
+case FN_SetCanvasOffset: //Sub Procedure
+ rc_setCanvasOffset( SETCANVASOFFSET_C_NUM, SETCANVASOFFSET_X, SETCANVASOFFSET_Y );
+ break;
+case FN_GetCanvasOffset: //Sub Procedure
+ rc_getCanvasOffset( GETCANVASOFFSET_C_NUM, &GETCANVASOFFSET_X, &GETCANVASOFFSET_Y );
+ break;
+case FN_GetCanvasSize: //Sub Procedure
+ rc_getCanvasSize( GETCANVASSIZE_C_NUM, &GETCANVASSIZE_W, &GETCANVASSIZE_H );
+ break;
+case FN_ClearCanvas: //Sub Procedure
+ rc_clearCanvas( );
+ break;
+case FN_SetCanvasAlpha: //Sub Procedure
+ rc_setCanvasAlpha( SETCANVASALPHA_C_NUM, SETCANVASALPHA_A );
+ break;
+case FN_GetCanvasAlpha: //Number Function
+ rc_push_num(rc_canvasAlpha( GETCANVASALPHA_C_NUM ));
+ break;
+case FN_SetCanvasColorMod: //Sub Procedure
+ rc_setCanvasColorMod( SETCANVASCOLORMOD_C_NUM, SETCANVASCOLORMOD_C );
+ break;
+case FN_GetCanvasColorMod: //Number Function
+ rc_push_num(rc_getCanvasColorMod( GETCANVASCOLORMOD_C_NUM ));
+ break;
+case FN_CloneCanvas: //Number Function
+ rc_push_num(rc_cloneCanvas( CLONECANVAS_C_NUM, CLONECANVAS_MODE ));
+ break;
+case FN_SetCanvasZ: //Sub Procedure
+ rc_setCanvasZ( SETCANVASZ_C_NUM, SETCANVASZ_Z );
+ break;
+case FN_CanvasZ: //Number Function
+ rc_push_num(rc_getCanvasZ( CANVASZ_C_NUM ));
+ break;
+case FN_CanvasClip: //Number Function
+ rc_push_num(rc_canvasClip( CANVASCLIP_X, CANVASCLIP_Y, CANVASCLIP_W, CANVASCLIP_H ));
+ break;
+case FN_ActiveCanvas: //Number Function
+ rc_push_num(rc_activeCanvas( ));
+ break;
+case FN_SetCanvasPhysics2D: //Sub Procedure
+ rc_setCanvasPhysics2D( SETCANVASPHYSICS2D_C_NUM, SETCANVASPHYSICS2D_STATE );
+ break;
+case FN_OpenCanvasSpriteLayer: //Number Function
+ rc_push_num(rc_canvasOpenSpriteLayer( OPENCANVASSPRITELAYER_VIEWPORT_X, OPENCANVASSPRITELAYER_VIEWPORT_Y, OPENCANVASSPRITELAYER_VIEWPORT_W, OPENCANVASSPRITELAYER_VIEWPORT_H ));
+ break;
+case FN_Circle: //Sub Procedure
+ rc_drawCircle( CIRCLE_X, CIRCLE_Y, CIRCLE_RADIUS );
+ break;
+case FN_CircleFill: //Sub Procedure
+ rc_drawCircleFill( CIRCLEFILL_X, CIRCLEFILL_Y, CIRCLEFILL_RADIUS );
+ break;
+case FN_Ellipse: //Sub Procedure
+ rc_drawEllipse( ELLIPSE_X, ELLIPSE_Y, ELLIPSE_RX, ELLIPSE_RY );
+ break;
+case FN_EllipseFill: //Sub Procedure
+ rc_drawEllipseFill( ELLIPSEFILL_X, ELLIPSEFILL_Y, ELLIPSEFILL_RX, ELLIPSEFILL_RY );
+ break;
+case FN_FloodFill: //Sub Procedure
+ rc_floodFill( FLOODFILL_X, FLOODFILL_Y );
+ break;
+case FN_GetPixel: //Number Function
+ rc_push_num(rc_getPixel( GETPIXEL_X, GETPIXEL_Y ));
+ break;
+case FN_SetColor: //Sub Procedure
+ rc_setColor( SETCOLOR_C );
+ break;
+case FN_Line: //Sub Procedure
+ rc_drawLine( LINE_X1, LINE_Y1, LINE_X2, LINE_Y2 );
+ break;
+case FN_Poly: //Sub Procedure
+ rc_poly( POLY_N, &POLY_X, &POLY_Y );
+ break;
+case FN_Rect: //Sub Procedure
+ rc_drawRect( RECT_X, RECT_Y, RECT_W, RECT_H );
+ break;
+case FN_RectFill: //Sub Procedure
+ rc_drawRectFill( RECTFILL_X, RECTFILL_Y, RECTFILL_W, RECTFILL_H );
+ break;
+case FN_RGB: //Number Function
+ rc_push_num(rc_rgb( RGB_R, RGB_G, RGB_B ));
+ break;
+case FN_RGBA: //Number Function
+ rc_push_num(rc_rgba( RGBA_R, RGBA_G, RGBA_B, RGBA_A ));
+ break;
+case FN_Pset: //Sub Procedure
+ rc_drawPixel( PSET_X, PSET_Y );
+ break;
+case FN_LoadImage: //Number Function
+ rc_push_num(rc_loadImage( LOADIMAGE_IMG$ ));
+ break;
+case FN_LoadImageEx: //Number Function
+ rc_push_num(rc_loadImageEx( LOADIMAGEEX_IMG$, LOADIMAGEEX_COLKEY ));
+ break;
+case FN_createImage: //Number Function
+ rc_push_num(rc_createImage( CREATEIMAGE_W, CREATEIMAGE_H, &CREATEIMAGE_BUFFER ));
+ break;
+case FN_createImageEx: //Number Function
+ rc_push_num(rc_createImageEx( CREATEIMAGEEX_W, CREATEIMAGEEX_H, &CREATEIMAGEEX_BUFFER, CREATEIMAGEEX_COLOR ));
+ break;
+case FN_BufferFromImage: //Sub Procedure
+ rc_getImageBuffer( BUFFERFROMIMAGE_SLOT, &BUFFERFROMIMAGE_BUFFER );
+ break;
+case FN_ImageExists: //Number Function
+ rc_push_num(rc_imageExists( IMAGEEXISTS_SLOT ));
+ break;
+case FN_ColorKey: //Sub Procedure
+ rc_setColorKey( COLORKEY_SLOT, COLORKEY_C );
+ break;
+case FN_setBilinearFilter: //Sub Procedure
+ rc_setBilinearFilter( SETBILINEARFILTER_FLAG );
+ break;
+case FN_getBilinearFilter: //Number Function
+ rc_push_num(rc_getBilinearFilter( ));
+ break;
+case FN_CopyImage: //Number Function
+ rc_push_num(rc_copyImage( COPYIMAGE_IMG_ID ));
+ break;
+case FN_DeleteImage: //Sub Procedure
+ rc_deleteImage( DELETEIMAGE_SLOT );
+ break;
+case FN_SetImageAlpha: //Sub Procedure
+ rc_setImageAlpha( SETIMAGEALPHA_SLOT, SETIMAGEALPHA_A );
+ break;
+case FN_GetImageAlpha: //Number Function
+ rc_push_num(rc_getImageAlpha( GETIMAGEALPHA_IMG_ID ));
+ break;
+case FN_GetImageSize: //Sub Procedure
+ rc_getImageSize( GETIMAGESIZE_SLOT, &GETIMAGESIZE_W, &GETIMAGESIZE_H );
+ break;
+case FN_SetBlendMode: //Sub Procedure
+ rc_setBlendMode( SETBLENDMODE_BLEND_MODE );
+ break;
+case FN_GetBlendMode: //Number Function
+ rc_push_num(rc_getBlendMode( ));
+ break;
+case FN_SetImageColorMod: //Sub Procedure
+ rc_setImageColorMod( SETIMAGECOLORMOD_SLOT, SETIMAGECOLORMOD_C );
+ break;
+case FN_GetImageColorMod: //Number Function
+ rc_push_num(rc_getImageColorMod( GETIMAGECOLORMOD_SLOT ));
+ break;
+case FN_DrawImage: //Sub Procedure
+ rc_drawImage( DRAWIMAGE_SLOT, DRAWIMAGE_X, DRAWIMAGE_Y );
+ break;
+case FN_DrawImage_Blit: //Sub Procedure
+ rc_drawImage_Blit( DRAWIMAGE_BLIT_SLOT, DRAWIMAGE_BLIT_X, DRAWIMAGE_BLIT_Y, DRAWIMAGE_BLIT_SRC_X, DRAWIMAGE_BLIT_SRC_Y, DRAWIMAGE_BLIT_SRC_W, DRAWIMAGE_BLIT_SRC_H );
+ break;
+case FN_DrawImage_BlitEx: //Sub Procedure
+ rc_drawImage_BlitEx( DRAWIMAGE_BLITEX_SLOT, DRAWIMAGE_BLITEX_X, DRAWIMAGE_BLITEX_Y, DRAWIMAGE_BLITEX_W, DRAWIMAGE_BLITEX_H, DRAWIMAGE_BLITEX_SRC_X, DRAWIMAGE_BLITEX_SRC_Y, DRAWIMAGE_BLITEX_SRC_W, DRAWIMAGE_BLITEX_SRC_H );
+ break;
+case FN_DrawImage_Rotate: //Sub Procedure
+ rc_drawImage_Rotate( DRAWIMAGE_ROTATE_SLOT, DRAWIMAGE_ROTATE_X, DRAWIMAGE_ROTATE_Y, DRAWIMAGE_ROTATE_ANGLE );
+ break;
+case FN_DrawImage_RotateEx: //Sub Procedure
+ rc_drawImage_RotateEx( DRAWIMAGE_ROTATEEX_SLOT, DRAWIMAGE_ROTATEEX_X, DRAWIMAGE_ROTATEEX_Y, DRAWIMAGE_ROTATEEX_SRC_X, DRAWIMAGE_ROTATEEX_SRC_Y, DRAWIMAGE_ROTATEEX_SRC_W, DRAWIMAGE_ROTATEEX_SRC_H, DRAWIMAGE_ROTATEEX_ANGLE );
+ break;
+case FN_DrawImage_Zoom: //Sub Procedure
+ rc_drawImage_Zoom( DRAWIMAGE_ZOOM_SLOT, DRAWIMAGE_ZOOM_X, DRAWIMAGE_ZOOM_Y, DRAWIMAGE_ZOOM_ZX, DRAWIMAGE_ZOOM_ZY );
+ break;
+case FN_DrawImage_ZoomEx: //Sub Procedure
+ rc_drawImage_ZoomEx( DRAWIMAGE_ZOOMEX_SLOT, DRAWIMAGE_ZOOMEX_X, DRAWIMAGE_ZOOMEX_Y, DRAWIMAGE_ZOOMEX_SRC_X, DRAWIMAGE_ZOOMEX_SRC_Y, DRAWIMAGE_ZOOMEX_SRC_W, DRAWIMAGE_ZOOMEX_SRC_H, DRAWIMAGE_ZOOMEX_ZX, DRAWIMAGE_ZOOMEX_ZY );
+ break;
+case FN_DrawImage_Rotozoom: //Sub Procedure
+ rc_drawImage_Rotozoom( DRAWIMAGE_ROTOZOOM_SLOT, DRAWIMAGE_ROTOZOOM_X, DRAWIMAGE_ROTOZOOM_Y, DRAWIMAGE_ROTOZOOM_ANGLE, DRAWIMAGE_ROTOZOOM_ZX, DRAWIMAGE_ROTOZOOM_ZY );
+ break;
+case FN_DrawImage_RotozoomEx: //Sub Procedure
+ rc_drawImage_RotozoomEx( DRAWIMAGE_ROTOZOOMEX_SLOT, DRAWIMAGE_ROTOZOOMEX_X, DRAWIMAGE_ROTOZOOMEX_Y, DRAWIMAGE_ROTOZOOMEX_SRC_X, DRAWIMAGE_ROTOZOOMEX_SRC_Y, DRAWIMAGE_ROTOZOOMEX_SRC_W, DRAWIMAGE_ROTOZOOMEX_SRC_H, DRAWIMAGE_ROTOZOOMEX_ANGLE, DRAWIMAGE_ROTOZOOMEX_ZX, DRAWIMAGE_ROTOZOOMEX_ZY );
+ break;
+case FN_DrawImage_Flip: //Sub Procedure
+ rc_drawImage_Flip( DRAWIMAGE_FLIP_SLOT, DRAWIMAGE_FLIP_X, DRAWIMAGE_FLIP_Y, DRAWIMAGE_FLIP_H, DRAWIMAGE_FLIP_V );
+ break;
+case FN_DrawImage_FlipEx: //Sub Procedure
+ rc_drawImage_FlipEx( DRAWIMAGE_FLIPEX_SLOT, DRAWIMAGE_FLIPEX_X, DRAWIMAGE_FLIPEX_Y, DRAWIMAGE_FLIPEX_SRC_X, DRAWIMAGE_FLIPEX_SRC_Y, DRAWIMAGE_FLIPEX_SRC_W, DRAWIMAGE_FLIPEX_SRC_H, DRAWIMAGE_FLIPEX_H, DRAWIMAGE_FLIPEX_V );
+ break;
+case FN_InKey: //Number Function
+ rc_push_num(rc_inKey( ));
+ break;
+case FN_Key: //Number Function
+ rc_push_num(rc_key( KEY_KEY_CODE ));
+ break;
+case FN_WaitKey: //Number Function
+ rc_push_num(rc_waitKey( ));
+ break;
+case FN_HideMouse: //Sub Procedure
+ rc_hideMouse( );
+ break;
+case FN_ShowMouse: //Sub Procedure
+ rc_showMouse( );
+ break;
+case FN_MouseIsVisible: //Number Function
+ rc_push_num(rc_mouseIsVisible( ));
+ break;
+case FN_GetMouse: //Sub Procedure
+ rc_getMouse( &GETMOUSE_X, &GETMOUSE_Y, &GETMOUSE_MB1, &GETMOUSE_MB2, &GETMOUSE_MB3 );
+ break;
+case FN_MouseX: //Number Function
+ rc_push_num(rc_mouseX( ));
+ break;
+case FN_MouseY: //Number Function
+ rc_push_num(rc_mouseY( ));
+ break;
+case FN_MouseButton: //Number Function
+ rc_push_num(rc_mouseButton( MOUSEBUTTON_MB ));
+ break;
+case FN_GetMouseWheel: //Sub Procedure
+ rc_getMouseWheel( &GETMOUSEWHEEL_X_AXIS, &GETMOUSEWHEEL_Y_AXIS );
+ break;
+case FN_MouseWheelX: //Number Function
+ rc_push_num(rc_mouseWheelX( ));
+ break;
+case FN_MouseWheelY: //Number Function
+ rc_push_num(rc_mouseWheelY( ));
+ break;
+case FN_GetGlobalMouse: //Sub Procedure
+ rc_getGlobalMouse( &GETGLOBALMOUSE_X, &GETGLOBALMOUSE_Y, &GETGLOBALMOUSE_MB1, &GETGLOBALMOUSE_MB2, &GETGLOBALMOUSE_MB3 );
+ break;
+case FN_GlobalMouseX: //Number Function
+ rc_push_num(rc_globalMouseX( ));
+ break;
+case FN_GlobalMouseY: //Number Function
+ rc_push_num(rc_globalMouseY( ));
+ break;
+case FN_WarpMouse: //Sub Procedure
+ rc_warpMouse( WARPMOUSE_X, WARPMOUSE_Y );
+ break;
+case FN_WarpMouseGlobal: //Sub Procedure
+ rc_warpMouseGlobal( WARPMOUSEGLOBAL_X, WARPMOUSEGLOBAL_Y );
+ break;
+case FN_SetMouseZone: //Sub Procedure
+ rc_setMouseZone( SETMOUSEZONE_X, SETMOUSEZONE_Y, SETMOUSEZONE_W, SETMOUSEZONE_H );
+ break;
+case FN_ClearMouseZone: //Sub Procedure
+ rc_clearMouseZone( );
+ break;
+case FN_CreateSound: //Number Function
+ rc_push_num(rc_createSound( &CREATESOUND_BUFFER, CREATESOUND_BUFFER_SIZE, CREATESOUND_VOL ));
+ break;
+case FN_LoadSound: //Number Function
+ rc_push_num(rc_loadSound( LOADSOUND_SND_FILE$ ));
+ break;
+case FN_LoadMusic: //Sub Procedure
+ rc_loadMusic( LOADMUSIC_MUSIC_FILE$ );
+ break;
+case FN_PlaySound: //Sub Procedure
+ rc_playSound( PLAYSOUND_SLOT, PLAYSOUND_CHANNEL, PLAYSOUND_LOOPS );
+ break;
+case FN_PlaySoundTimed: //Sub Procedure
+ rc_playSoundTimed( PLAYSOUNDTIMED_SLOT, PLAYSOUNDTIMED_CHANNEL, PLAYSOUNDTIMED_LOOPS, PLAYSOUNDTIMED_MS );
+ break;
+case FN_PlayMusic: //Sub Procedure
+ rc_playMusic( PLAYMUSIC_MLOOPS );
+ break;
+case FN_PauseSound: //Sub Procedure
+ rc_pauseSound( PAUSESOUND_CHANNEL );
+ break;
+case FN_ResumeSound: //Sub Procedure
+ rc_resumeSound( RESUMESOUND_CHANNEL );
+ break;
+case FN_PauseMusic: //Sub Procedure
+ rc_pauseMusic( );
+ break;
+case FN_ResumeMusic: //Sub Procedure
+ rc_resumeMusic( );
+ break;
+case FN_DeleteSound: //Sub Procedure
+ rc_deleteSound( DELETESOUND_SLOT );
+ break;
+case FN_DeleteMusic: //Sub Procedure
+ rc_deleteMusic( );
+ break;
+case FN_FadeMusicIn: //Sub Procedure
+ rc_fadeMusicIn( FADEMUSICIN_FADE_TIME, FADEMUSICIN_LOOPS );
+ break;
+case FN_FadeMusicOut: //Sub Procedure
+ rc_fadeMusicOut( FADEMUSICOUT_FADE_TIME );
+ break;
+case FN_MusicExists: //Number Function
+ rc_push_num(rc_musicExists( ));
+ break;
+case FN_SetMusicVolume: //Sub Procedure
+ rc_setMusicVolume( SETMUSICVOLUME_VOL );
+ break;
+case FN_GetMusicVolume: //Number Function
+ rc_push_num(rc_getMusicVolume( ));
+ break;
+case FN_SetMusicPosition: //Sub Procedure
+ rc_setMusicPosition( SETMUSICPOSITION_POS );
+ break;
+case FN_GetMusicPosition: //Number Function
+ rc_push_num(rc_getMusicPosition( ));
+ break;
+case FN_RewindMusic: //Sub Procedure
+ rc_rewindMusic( );
+ break;
+case FN_SetSoundChannels: //Sub Procedure
+ rc_setSoundChannels( SETSOUNDCHANNELS_MAX_CHANNELS );
+ break;
+case FN_NumSoundChannels: //Number Function
+ rc_push_num(rc_getSoundChannels( ));
+ break;
+case FN_SoundIsEnabled: //Number Function
+ rc_push_num(rc_soundIsEnabled( ));
+ break;
+case FN_SoundExists: //Number Function
+ rc_push_num(rc_soundExists( SOUNDEXISTS_SLOT ));
+ break;
+case FN_SetChannelVolume: //Sub Procedure
+ rc_setChannelVolume( SETCHANNELVOLUME_CHANNEL, SETCHANNELVOLUME_VOL );
+ break;
+case FN_GetChannelVolume: //Number Function
+ rc_push_num(rc_getChannelVolume( GETCHANNELVOLUME_CHANNEL ));
+ break;
+case FN_SetSoundVolume: //Sub Procedure
+ rc_setSoundVolume( SETSOUNDVOLUME_SLOT, SETSOUNDVOLUME_VOL );
+ break;
+case FN_GetSoundVolume: //Number Function
+ rc_push_num(rc_getSoundVolume( GETSOUNDVOLUME_SLOT ));
+ break;
+case FN_StopMusic: //Sub Procedure
+ rc_stopMusic( );
+ break;
+case FN_StopSound: //Sub Procedure
+ rc_stopSound( STOPSOUND_CHANNEL );
+ break;
+case FN_SetChannelPanning: //Number Function
+ rc_push_num(rc_setChannelPanning( SETCHANNELPANNING_CHANNEL, SETCHANNELPANNING_LEFT_VALUE, SETCHANNELPANNING_RIGHT_VALUE ));
+ break;
+case FN_SetChannelDistance: //Number Function
+ rc_push_num(rc_setChannelDistance( SETCHANNELDISTANCE_CHANNEL, SETCHANNELDISTANCE_DIST_VALUE ));
+ break;
+case FN_ChannelIsPlaying: //Number Function
+ rc_push_num(rc_channelIsPlaying( CHANNELISPLAYING_CHANNEL ));
+ break;
+case FN_ChannelIsPaused: //Number Function
+ rc_push_num(rc_channelIsPaused( CHANNELISPAUSED_CHANNEL ));
+ break;
+case FN_QueryAudioSpec: //Number Function
+ rc_push_num(rc_queryAudioSpec( &QUERYAUDIOSPEC_FREQ, &QUERYAUDIOSPEC_FORMAT, &QUERYAUDIOSPEC_CHANNELS ));
+ break;
+case FN_MusicIsPlaying: //Number Function
+ rc_push_num(rc_musicIsPlaying( ));
+ break;
+case FN_SetChannelSpacePosition: //Number Function
+ rc_push_num(rc_setChannelSpacePosition( SETCHANNELSPACEPOSITION_CHANNEL, SETCHANNELSPACEPOSITION_ANGLE, SETCHANNELSPACEPOSITION_DISTANCE ));
+ break;
+case FN_NumJoysticks: //Number Function
+ rc_push_num(rc_getNumJoysticks( ));
+ break;
+case FN_NumJoyAxes: //Number Function
+ rc_push_num(rc_numJoyAxes( NUMJOYAXES_JOY_NUM ));
+ break;
+case FN_NumJoyButtons: //Number Function
+ rc_push_num(rc_numJoyButtons( NUMJOYBUTTONS_JOY_NUM ));
+ break;
+case FN_NumJoyHats: //Number Function
+ rc_push_num(rc_numJoyHats( NUMJOYHATS_JOY_NUM ));
+ break;
+case FN_NumJoyTrackBalls: //Number Function
+ rc_push_num(rc_numJoyTrackBalls( NUMJOYTRACKBALLS_JOY_NUM ));
+ break;
+case FN_JoyAxis: //Number Function
+ rc_push_num(rc_joyAxis( JOYAXIS_JOY_NUM, JOYAXIS_JOY_AXIS ));
+ break;
+case FN_JoyButton: //Number Function
+ rc_push_num(rc_joyButton( JOYBUTTON_JOY_NUM, JOYBUTTON_JOY_BUTTON ));
+ break;
+case FN_JoyHat: //Number Function
+ rc_push_num(rc_joyHat( JOYHAT_JOY_NUM, JOYHAT_JOY_HAT ));
+ break;
+case FN_GetJoyTrackBall: //Sub Procedure
+ rc_getJoyTrackBall( GETJOYTRACKBALL_JOY_NUM, GETJOYTRACKBALL_BALL, &GETJOYTRACKBALL_DX, &GETJOYTRACKBALL_DY );
+ break;
+case FN_JoyName$: //String Function
+ rc_push_str(rc_joyName( JOYNAME$_JOY_NUM ));
+ break;
+case FN_JoystickIsConnected: //Number Function
+ rc_push_num(rc_joystickIsConnected( JOYSTICKISCONNECTED_JOY_NUM ));
+ break;
+case FN_JoyRumblePlay: //Sub Procedure
+ rc_joyRumblePlay( JOYRUMBLEPLAY_JOY_NUM, JOYRUMBLEPLAY_STRENGTH, JOYRUMBLEPLAY_DURATION );
+ break;
+case FN_JoyRumbleStop: //Sub Procedure
+ rc_joyRumbleStop( JOYRUMBLESTOP_JOY_NUM );
+ break;
+case FN_JoystickIsHaptic: //Number Function
+ rc_push_num(rc_joystickIsHaptic( JOYSTICKISHAPTIC_JOY_NUM ));
+ break;
+case FN_LoadFont: //Number Function
+ rc_push_num(rc_loadFont( LOADFONT_FNT_FILE$, LOADFONT_FONT_SIZE ));
+ break;
+case FN_DeleteFont: //Sub Procedure
+ rc_deleteFont( DELETEFONT_SLOT );
+ break;
+case FN_FontExists: //Number Function
+ rc_push_num(rc_fontExists( FONTEXISTS_SLOT ));
+ break;
+case FN_SetFont: //Sub Procedure
+ rc_setFont( SETFONT_SLOT );
+ break;
+case FN_DrawText: //Sub Procedure
+ rc_drawText( DRAWTEXT_TXT$, DRAWTEXT_X, DRAWTEXT_Y );
+ break;
+case FN_GetTextSize: //Sub Procedure
+ rc_getTextSize( GETTEXTSIZE_TXT$, &GETTEXTSIZE_W, &GETTEXTSIZE_H );
+ break;
+case FN_TextWidth: //Number Function
+ rc_push_num(rc_getTextWidth( TEXTWIDTH_TXT$ ));
+ break;
+case FN_TextHeight: //Number Function
+ rc_push_num(rc_getTextHeight( TEXTHEIGHT_TXT$ ));
+ break;
+case FN_TouchPressure: //Number Function
+ rc_push_num(rc_touchPressure( ));
+ break;
+case FN_GetTouch: //Sub Procedure
+ rc_getTouch( &GETTOUCH_STATUS, &GETTOUCH_X, &GETTOUCH_Y, &GETTOUCH_DX, &GETTOUCH_DY );
+ break;
+case FN_GetMultiTouch: //Sub Procedure
+ rc_getMultiTouch( &GETMULTITOUCH_STATUS, &GETMULTITOUCH_X, &GETMULTITOUCH_Y, &GETMULTITOUCH_FINGERS, &GETMULTITOUCH_DIST, &GETMULTITOUCH_THETA );
+ break;
+case FN_GetTouchFinger: //Sub Procedure
+ rc_getTouchFinger( GETTOUCHFINGER_FINGER, &GETTOUCHFINGER_X, &GETTOUCHFINGER_Y, &GETTOUCHFINGER_PRESSURE );
+ break;
+case FN_NumFingers: //Number Function
+ rc_push_num(rc_numFingers( ));
+ break;
+case FN_GetAccel: //Sub Procedure
+ rc_getAccel( GETACCEL_ACCEL_NUM, &GETACCEL_X, &GETACCEL_Y, &GETACCEL_Z );
+ break;
+case FN_AccelName$: //String Function
+ rc_push_str(rc_accelName( ACCELNAME$_ACCEL_NUM ));
+ break;
+case FN_NumAccels: //Number Function
+ rc_push_num(rc_numAccels( ));
+ break;
+case FN_GetGyro: //Sub Procedure
+ rc_getGyro( GETGYRO_GYRO_NUM, &GETGYRO_X, &GETGYRO_Y, &GETGYRO_Z );
+ break;
+case FN_GyroName$: //String Function
+ rc_push_str(rc_gyroName( GYRONAME$_GYRO_NUM ));
+ break;
+case FN_NumGyros: //Number Function
+ rc_push_num(rc_numGyros( ));
+ break;
+case FN_CheckSockets: //Number Function
+ rc_push_num(rc_net_checkSockets( CHECKSOCKETS_TIMEOUT_MS ));
+ break;
+case FN_TCP_SocketReady: //Number Function
+ rc_push_num(rc_net_tcp_socketReady( TCP_SOCKETREADY_SOCKET ));
+ break;
+case FN_UDP_SocketReady: //Number Function
+ rc_push_num(rc_net_udp_socketReady( UDP_SOCKETREADY_SOCKET ));
+ break;
+case FN_TCP_OpenSocket: //Number Function
+ rc_push_num(rc_net_tcp_openSocket( TCP_OPENSOCKET_HOST$, TCP_OPENSOCKET_PORT ));
+ break;
+case FN_TCP_CloseSocket: //Sub Procedure
+ rc_net_tcp_closeSocket( TCP_CLOSESOCKET_SOCKET );
+ break;
+case FN_TCP_RemoteHost: //Number Function
+ rc_push_num(rc_net_tcp_remoteHost( TCP_REMOTEHOST_SOCKET ));
+ break;
+case FN_TCP_RemotePort: //Number Function
+ rc_push_num(rc_net_tcp_remotePort( TCP_REMOTEPORT_SOCKET ));
+ break;
+case FN_TCP_GetData: //Number Function
+ rc_push_num(rc_net_tcp_getData_str( TCP_GETDATA_SOCKET, TCP_GETDATA_NUMBYTES, &TCP_GETDATA_SDATA$ ));
+ break;
+case FN_TCP_SendData: //Sub Procedure
+ rc_net_tcp_sendData( TCP_SENDDATA_SOCKET, TCP_SENDDATA_SDATA$ );
+ break;
+case FN_TCP_AcceptSocket: //Number Function
+ rc_push_num(rc_net_tcp_acceptSocket( TCP_ACCEPTSOCKET_SERVER, TCP_ACCEPTSOCKET_CLIENT ));
+ break;
+case FN_UDP_OpenSocket: //Number Function
+ rc_push_num(rc_net_udp_openSocket( UDP_OPENSOCKET_PORT ));
+ break;
+case FN_UDP_CloseSocket: //Sub Procedure
+ rc_net_udp_closeSocket( UDP_CLOSESOCKET_SOCKET );
+ break;
+case FN_UDP_GetData: //Number Function
+ rc_push_num(rc_net_udp_readStream( UDP_GETDATA_SOCKET, &UDP_GETDATA_HOST$, &UDP_GETDATA_PORT, &UDP_GETDATA_SDATA$ ));
+ break;
+case FN_UDP_Length: //Number Function
+ rc_push_num(rc_net_udp_len( ));
+ break;
+case FN_UDP_MaxLength: //Number Function
+ rc_push_num(rc_net_udp_maxlen( ));
+ break;
+case FN_UDP_RemoteHost$: //String Function
+ rc_push_str(rc_net_udp_getRemoteHost( UDP_REMOTEHOST$_SOCKET ));
+ break;
+case FN_UDP_RemotePort: //Number Function
+ rc_push_num(rc_net_udp_getRemotePort( UDP_REMOTEPORT_SOCKET ));
+ break;
+case FN_UDP_SendData: //Sub Procedure
+ rc_net_udp_sendData( UDP_SENDDATA_SOCKET, UDP_SENDDATA_HOST$, UDP_SENDDATA_PORT, UDP_SENDDATA_SDATA$ );
+ break;
+case FN_LoadVideo: //Sub Procedure
+ rc_loadVideo( LOADVIDEO_VID$ );
+ break;
+case FN_PlayVideo: //Sub Procedure
+ rc_playVideo( PLAYVIDEO_VLOOPS );
+ break;
+case FN_PauseVideo: //Sub Procedure
+ rc_pauseVideo( );
+ break;
+case FN_StopVideo: //Sub Procedure
+ rc_stopVideo( );
+ break;
+case FN_SetVideoPosition: //Sub Procedure
+ rc_setVideoPosition( SETVIDEOPOSITION_POS );
+ break;
+case FN_ResumeVideo: //Sub Procedure
+ rc_resumeVideo( );
+ break;
+case FN_GetVideoPosition: //Number Function
+ rc_push_num(rc_getVideoPosition( ));
+ break;
+case FN_DeleteVideo: //Sub Procedure
+ rc_deleteVideo( );
+ break;
+case FN_VideoIsPlaying: //Number Function
+ rc_push_num(rc_videoIsPlaying( ));
+ break;
+case FN_VideoEnd: //Number Function
+ rc_push_num(rc_videoEnd( ));
+ break;
+case FN_GetVideoStats: //Sub Procedure
+ rc_getVideoStats( GETVIDEOSTATS_VFILE$, &GETVIDEOSTATS_VLEN, &GETVIDEOSTATS_VFPS, &GETVIDEOSTATS_FRAME_W, &GETVIDEOSTATS_FRAME_H );
+ break;
+case FN_SetVideoDrawRect: //Sub Procedure
+ rc_setVideoDrawRect( SETVIDEODRAWRECT_X, SETVIDEODRAWRECT_Y, SETVIDEODRAWRECT_W, SETVIDEODRAWRECT_H );
+ break;
+case FN_GetVideoDrawRect: //Sub Procedure
+ rc_getVideoDrawRect( &GETVIDEODRAWRECT_X, &GETVIDEODRAWRECT_Y, &GETVIDEODRAWRECT_W, &GETVIDEODRAWRECT_H );
+ break;
+case FN_GetVideoSize: //Sub Procedure
+ rc_getVideoSize( &GETVIDEOSIZE_W, &GETVIDEOSIZE_H );
+ break;
+case FN_VideoExists: //Number Function
+ rc_push_num(rc_videoExists( ));
+ break;
+case FN_SetVideoVolume: //Sub Procedure
+ rc_setVideoVolume( SETVIDEOVOLUME_VOL );
+ break;
+case FN_GetVideoVolume: //Number Function
+ rc_push_num(rc_getVideoVolume( ));
+ break;
+case FN_System: //Number Function
+ rc_push_num(rc_intern_system( SYSTEM_CMD$ ));
+ break;
+case FN_OS$: //String Function
+ rc_push_str(rc_intern_OS( ));
+ break;
+case FN_Command$: //String Function
+ rc_push_str(rc_intern_command( COMMAND$_ARG ));
+ break;
+case FN_NumCommands: //Number Function
+ rc_push_num(rc_intern_numCommands( ));
+ break;
+case FN_Env$: //String Function
+ rc_push_str(rc_intern_env( ENV$_V$ ));
+ break;
+case FN_SetEnv: //Sub Procedure
+ rc_intern_setEnv( SETENV_VAR$, SETENV_VALUE$ );
+ break;
+case FN_PrefPath$: //String Function
+ rc_push_str(rc_intern_prefPath( PREFPATH$_ORG_NAME$, PREFPATH$_APP_NAME$ ));
+ break;
+case FN_Android_GetExternalStoragePath$: //String Function
+ rc_push_str(rc_intern_android_getExternalStoragePath( ));
+ break;
+case FN_Android_GetExternalStorageState: //Number Function
+ rc_push_num(rc_intern_android_getExternalStorageState( ));
+ break;
+case FN_Android_GetInternalStoragePath$: //String Function
+ rc_push_str(rc_intern_android_getInternalStoragePath( ));
+ break;
+case FN_Android_JNI_Message$: //String Function
+ rc_push_str(rc_intern_android_jni_message( ANDROID_JNI_MESSAGE$_ARG$ ));
+ break;
+case FN_Runtime_Utility_Message$: //String Function
+ rc_push_str(rc_intern_runtime_utility( RUNTIME_UTILITY_MESSAGE$_ARG$ ));
+ break;
+case FN_GetDesktopDisplayMode: //Sub Procedure
+ rc_getDesktopDisplayMode( GETDESKTOPDISPLAYMODE_INDEX, &GETDESKTOPDISPLAYMODE_W, &GETDESKTOPDISPLAYMODE_H, &GETDESKTOPDISPLAYMODE_FREQ );
+ break;
+case FN_GetPowerInfo: //Sub Procedure
+ rc_intern_getPowerInfo( &GETPOWERINFO_STATUS, &GETPOWERINFO_SECS, &GETPOWERINFO_PCT );
+ break;
+case FN_EvalJS$: //String Function
+ rc_push_str(rc_intern_evalJS( EVALJS$_JS_CODE$ ));
+ break;
+case FN_SystemReturnStdOut$: //String Function
+ rc_push_str(rc_intern_sysReturnOutput( SYSTEMRETURNSTDOUT$_CMD$ ));
+ break;
+case FN_OpenURL: //Number Function
+ rc_push_num(rc_openURL( OPENURL_URL$ ));
+ break;
+case FN_MessageBox: //Number Function
+ rc_push_num(rc_messageBox( MESSAGEBOX_TITLE$, MESSAGEBOX_MSG$ ));
+ break;
+case FN_Runtime$: //String Function
+ rc_push_str( rcbasic_runtime_path );
+
+ break;
+case FN_NumCPUs: //Number Function
+ rc_push_num(rc_numCPUs( ));
+ break;
+case FN_SystemRam: //Number Function
+ rc_push_num(rc_intern_systemRam( ));
+ break;
+case FN_DimMatrix: //Number Function
+ rc_push_num(rc_dimMatrix( DIMMATRIX_M_ROWS, DIMMATRIX_M_COLS ));
+ break;
+case FN_DeleteMatrix: //Sub Procedure
+ rc_deleteMatrix( DELETEMATRIX_MA );
+ break;
+case FN_AddMatrix: //Number Function
+ rc_push_num(rc_addMatrix( ADDMATRIX_MA, ADDMATRIX_MB, ADDMATRIX_MC ));
+ break;
+case FN_AugmentMatrix: //Number Function
+ rc_push_num(rc_augmentMatrix( AUGMENTMATRIX_MA, AUGMENTMATRIX_MB, AUGMENTMATRIX_MC ));
+ break;
+case FN_CopyMatrix: //Sub Procedure
+ rc_copyMatrix( COPYMATRIX_MA, COPYMATRIX_MB );
+ break;
+case FN_InsertMatrixColumns: //Number Function
+ rc_push_num(rc_insertMatrixColumns( INSERTMATRIXCOLUMNS_MA, INSERTMATRIXCOLUMNS_C, INSERTMATRIXCOLUMNS_NUM_COLS ));
+ break;
+case FN_InsertMatrixRows: //Number Function
+ rc_push_num(rc_insertMatrixRows( INSERTMATRIXROWS_MA, INSERTMATRIXROWS_R, INSERTMATRIXROWS_NUM_ROWS ));
+ break;
+case FN_MultiplyMatrix: //Number Function
+ rc_push_num(rc_multiplyMatrix( MULTIPLYMATRIX_MA, MULTIPLYMATRIX_MB, MULTIPLYMATRIX_MC ));
+ break;
+case FN_CubeMatrix: //Number Function
+ rc_push_num(rc_cubeMatrix( CUBEMATRIX_MA, CUBEMATRIX_MB ));
+ break;
+case FN_DeleteMatrixColumns: //Number Function
+ rc_push_num(rc_deleteMatrixColumns( DELETEMATRIXCOLUMNS_MA, DELETEMATRIXCOLUMNS_C, DELETEMATRIXCOLUMNS_NUM_COLS ));
+ break;
+case FN_DeleteMatrixRows: //Number Function
+ rc_push_num(rc_deleteMatrixRows( DELETEMATRIXROWS_MA, DELETEMATRIXROWS_R, DELETEMATRIXROWS_NUM_ROWS ));
+ break;
+case FN_ClearMatrix: //Sub Procedure
+ rc_clearMatrix( CLEARMATRIX_MA );
+ break;
+case FN_ClearMatrixColumns: //Number Function
+ rc_push_num(rc_clearMatrixColumns( CLEARMATRIXCOLUMNS_MA, CLEARMATRIXCOLUMNS_C, CLEARMATRIXCOLUMNS_NUM_COLS ));
+ break;
+case FN_ClearMatrixRows: //Number Function
+ rc_push_num(rc_clearMatrixRows( CLEARMATRIXROWS_MA, CLEARMATRIXROWS_R, CLEARMATRIXROWS_NUM_ROWS ));
+ break;
+case FN_FillMatrix: //Sub Procedure
+ rc_fillMatrix( FILLMATRIX_MA, FILLMATRIX_V );
+ break;
+case FN_FillMatrixColumns: //Number Function
+ rc_push_num(rc_fillMatrixColumns( FILLMATRIXCOLUMNS_MA, FILLMATRIXCOLUMNS_C, FILLMATRIXCOLUMNS_NUM_COLS, FILLMATRIXCOLUMNS_V ));
+ break;
+case FN_FillMatrixRows: //Number Function
+ rc_push_num(rc_fillMatrixRows( FILLMATRIXROWS_MA, FILLMATRIXROWS_R, FILLMATRIXROWS_NUM_ROWS, FILLMATRIXROWS_V ));
+ break;
+case FN_CopyMatrixColumns: //Number Function
+ rc_push_num(rc_copyMatrixColumns( COPYMATRIXCOLUMNS_MA, COPYMATRIXCOLUMNS_MB, COPYMATRIXCOLUMNS_C, COPYMATRIXCOLUMNS_NUM_COLS ));
+ break;
+case FN_CopyMatrixRows: //Number Function
+ rc_push_num(rc_copyMatrixRows( COPYMATRIXROWS_MA, COPYMATRIXROWS_MB, COPYMATRIXROWS_R, COPYMATRIXROWS_NUM_ROWS ));
+ break;
+case FN_SetIdentityMatrix: //Sub Procedure
+ rc_setIdentityMatrix( SETIDENTITYMATRIX_MA, SETIDENTITYMATRIX_N );
+ break;
+case FN_SolveMatrix: //Number Function
+ rc_push_num(rc_solveMatrix( SOLVEMATRIX_MA, SOLVEMATRIX_MB, SOLVEMATRIX_MC ));
+ break;
+case FN_IsEqualMatrix: //Number Function
+ rc_push_num(rc_isEqualMatrix( ISEQUALMATRIX_MA, ISEQUALMATRIX_MB, ISEQUALMATRIX_TOLERANCE ));
+ break;
+case FN_Determinant: //Number Function
+ rc_push_num(rc_determinant( DETERMINANT_MA ));
+ break;
+case FN_AdjointMatrix: //Number Function
+ rc_push_num(rc_adjointMatrix( ADJOINTMATRIX_MA, ADJOINTMATRIX_MB ));
+ break;
+case FN_InvertMatrix: //Number Function
+ rc_push_num(rc_invertMatrix( INVERTMATRIX_MA, INVERTMATRIX_MB ));
+ break;
+case FN_MatrixFromBuffer: //Sub Procedure
+ rc_matrixFromBuffer( MATRIXFROMBUFFER_MA, MATRIXFROMBUFFER_R, MATRIXFROMBUFFER_C, &MATRIXFROMBUFFER_BUFFER );
+ break;
+case FN_BufferFromMatrix: //Sub Procedure
+ rc_bufferFromMatrix( &BUFFERFROMMATRIX_BUFFER, BUFFERFROMMATRIX_MA );
+ break;
+case FN_RandomizeMatrix: //Sub Procedure
+ rc_randomizeMatrix( RANDOMIZEMATRIX_MA, RANDOMIZEMATRIX_VMIN, RANDOMIZEMATRIX_VMAX );
+ break;
+case FN_MatrixValue: //Number Function
+ rc_push_num(rc_matrixValue( MATRIXVALUE_MA, MATRIXVALUE_R, MATRIXVALUE_C ));
+ break;
+case FN_SetMatrixValue: //Sub Procedure
+ rc_setMatrixValue( SETMATRIXVALUE_MA, SETMATRIXVALUE_R, SETMATRIXVALUE_C, SETMATRIXVALUE_V );
+ break;
+case FN_ScalarMatrix: //Sub Procedure
+ rc_scalarMatrix( SCALARMATRIX_MA, SCALARMATRIX_MB, SCALARMATRIX_S_VALUE );
+ break;
+case FN_ScalarMatrixColumns: //Number Function
+ rc_push_num(rc_scalarMatrixColumns( SCALARMATRIXCOLUMNS_MA, SCALARMATRIXCOLUMNS_MB, SCALARMATRIXCOLUMNS_C, SCALARMATRIXCOLUMNS_NUM_COLS, SCALARMATRIXCOLUMNS_S_VALUE ));
+ break;
+case FN_ScalarMatrixRows: //Number Function
+ rc_push_num(rc_scalarMatrixRows( SCALARMATRIXROWS_MA, SCALARMATRIXROWS_MB, SCALARMATRIXROWS_R, SCALARMATRIXROWS_NUM_ROWS, SCALARMATRIXROWS_S_VALUE ));
+ break;
+case FN_SquareMatrix: //Number Function
+ rc_push_num(rc_squareMatrix( SQUAREMATRIX_MA, SQUAREMATRIX_MB ));
+ break;
+case FN_CofactorMatrix: //Sub Procedure
+ rc_subMatrix( COFACTORMATRIX_MA, COFACTORMATRIX_R, COFACTORMATRIX_C );
+ break;
+case FN_SubtractMatrix: //Number Function
+ rc_push_num(rc_subtractMatrix( SUBTRACTMATRIX_MA, SUBTRACTMATRIX_MB, SUBTRACTMATRIX_MC ));
+ break;
+case FN_SwapMatrix: //Sub Procedure
+ rc_swapMatrix( SWAPMATRIX_MA, SWAPMATRIX_MB );
+ break;
+case FN_SwapMatrixColumn: //Number Function
+ rc_push_num(rc_swapMatrixColumn( SWAPMATRIXCOLUMN_MA, SWAPMATRIXCOLUMN_C1, SWAPMATRIXCOLUMN_C2 ));
+ break;
+case FN_SwapMatrixRow: //Number Function
+ rc_push_num(rc_swapMatrixRow( SWAPMATRIXROW_MA, SWAPMATRIXROW_R1, SWAPMATRIXROW_R2 ));
+ break;
+case FN_TransposeMatrix: //Number Function
+ rc_push_num(rc_transposeMatrix( TRANSPOSEMATRIX_MA, TRANSPOSEMATRIX_MB ));
+ break;
+case FN_UnAugmentMatrix: //Number Function
+ rc_push_num(rc_unAugmentMatrix( UNAUGMENTMATRIX_MA, UNAUGMENTMATRIX_MB, UNAUGMENTMATRIX_MC ));
+ break;
+case FN_ZeroMatrix: //Sub Procedure
+ rc_zeroMatrix( ZEROMATRIX_MA );
+ break;
+case FN_GetMatrixSize: //Sub Procedure
+ rc_getMatrixSize( GETMATRIXSIZE_MA, &GETMATRIXSIZE_R, &GETMATRIXSIZE_C );
+ break;
+case FN_IncrementMatrixRows: //Sub Procedure
+ rc_incrementMatrixRows( INCREMENTMATRIXROWS_MA, INCREMENTMATRIXROWS_MB, INCREMENTMATRIXROWS_R, INCREMENTMATRIXROWS_NUM_ROWS, INCREMENTMATRIXROWS_VALUE );
+ break;
+case FN_IncrementMatrixColumns: //Sub Procedure
+ rc_incrementMatrixColumns( INCREMENTMATRIXCOLUMNS_MA, INCREMENTMATRIXCOLUMNS_MB, INCREMENTMATRIXCOLUMNS_C, INCREMENTMATRIXCOLUMNS_NUM_COLS, INCREMENTMATRIXCOLUMNS_VALUE );
+ break;
+case FN_JoinMatrixRows: //Sub Procedure
+ rc_joinMatrixRows( JOINMATRIXROWS_MA, JOINMATRIXROWS_MB, JOINMATRIXROWS_MC );
+ break;
+case FN_JoinMatrixColumns: //Sub Procedure
+ rc_joinMatrixColumns( JOINMATRIXCOLUMNS_MA, JOINMATRIXCOLUMNS_MB, JOINMATRIXCOLUMNS_MC );
+ break;
+case FN_ClipMatrix: //Sub Procedure
+ rc_clipMatrix( CLIPMATRIX_MA, CLIPMATRIX_R, CLIPMATRIX_C, CLIPMATRIX_NUM_ROWS, CLIPMATRIX_NUM_COLS, CLIPMATRIX_MB );
+ break;
+case FN_SetMatrixTranslation: //Sub Procedure
+ rc_setMatrixTranslation( SETMATRIXTRANSLATION_MA, SETMATRIXTRANSLATION_X, SETMATRIXTRANSLATION_Y, SETMATRIXTRANSLATION_Z );
+ break;
+case FN_SetMatrixRotation: //Sub Procedure
+ rc_setMatrixRotation( SETMATRIXROTATION_MA, SETMATRIXROTATION_X, SETMATRIXROTATION_Y, SETMATRIXROTATION_Z );
+ break;
+case FN_SetMatrixScale: //Sub Procedure
+ rc_setMatrixScale( SETMATRIXSCALE_MA, SETMATRIXSCALE_X, SETMATRIXSCALE_Y, SETMATRIXSCALE_Z );
+ break;
+case FN_GetMatrixTranslation: //Sub Procedure
+ rc_getMatrixTranslation( GETMATRIXTRANSLATION_MA, &GETMATRIXTRANSLATION_X, &GETMATRIXTRANSLATION_Y, &GETMATRIXTRANSLATION_Z );
+ break;
+case FN_GetMatrixRotation: //Sub Procedure
+ rc_getMatrixRotation( GETMATRIXROTATION_MA, &GETMATRIXROTATION_X, &GETMATRIXROTATION_Y, &GETMATRIXROTATION_Z );
+ break;
+case FN_GetMatrixScale: //Sub Procedure
+ rc_getMatrixScale( GETMATRIXSCALE_MA, &GETMATRIXSCALE_X, &GETMATRIXSCALE_Y, &GETMATRIXSCALE_Z );
+ break;
+case FN_GetClipboardText$: //String Function
+ rc_push_str(rc_getClipboardText( ));
+ break;
+case FN_SetClipboardText: //Sub Procedure
+ rc_setClipboardText( SETCLIPBOARDTEXT_TXT$ );
+ break;
+case FN_HasClipboardText: //Number Function
+ rc_push_num(rc_hasClipboardText( ));
+ break;
+case FN_ReadInput_Start: //Sub Procedure
+ rc_readInput_Start( );
+ break;
+case FN_ReadInput_Stop: //Sub Procedure
+ rc_readInput_Stop( );
+ break;
+case FN_ReadInput_Text$: //String Function
+ rc_push_str(rc_readInput_Text( ));
+ break;
+case FN_ReadInput_SetText: //Sub Procedure
+ rc_readInput_SetText( READINPUT_SETTEXT_TXT$ );
+ break;
+case FN_ReadInput_ToggleBackspace: //Sub Procedure
+ rc_readInput_ToggleBackspace( READINPUT_TOGGLEBACKSPACE_FLAG );
+ break;
+case FN_CreateSprite: //Number Function
+ rc_push_num(rc_createSprite( CREATESPRITE_IMG, CREATESPRITE_FRAME_W, CREATESPRITE_FRAME_H ));
+ break;
+case FN_DeleteSprite: //Sub Procedure
+ rc_deleteSprite( DELETESPRITE_SPRITE );
+ break;
+case FN_SetSpritePosition: //Sub Procedure
+ rc_setSpritePosition( SETSPRITEPOSITION_SPRITE, SETSPRITEPOSITION_X, SETSPRITEPOSITION_Y );
+ break;
+case FN_TranslateSprite: //Sub Procedure
+ rc_translateSprite( TRANSLATESPRITE_SPRITE, TRANSLATESPRITE_X, TRANSLATESPRITE_Y );
+ break;
+case FN_GetSpritePosition: //Sub Procedure
+ rc_getSpritePosition( GETSPRITEPOSITION_SPRITE, &GETSPRITEPOSITION_X, &GETSPRITEPOSITION_Y );
+ break;
+case FN_SpriteX: //Number Function
+ rc_push_num(rc_spriteX( SPRITEX_SPRITE ));
+ break;
+case FN_SpriteY: //Number Function
+ rc_push_num(rc_spriteY( SPRITEY_SPRITE ));
+ break;
+case FN_SetSpriteRotation: //Sub Procedure
+ rc_setSpriteRotation( SETSPRITEROTATION_SPRITE, SETSPRITEROTATION_ANGLE );
+ break;
+case FN_RotateSprite: //Sub Procedure
+ rc_rotateSprite( ROTATESPRITE_SPRITE, ROTATESPRITE_ANGLE );
+ break;
+case FN_GetSpriteRotation: //Number Function
+ rc_push_num(rc_getSpriteRotation( GETSPRITEROTATION_SPRITE ));
+ break;
+case FN_SetSpriteScale: //Sub Procedure
+ rc_setSpriteScale( SETSPRITESCALE_SPRITE, SETSPRITESCALE_X, SETSPRITESCALE_Y );
+ break;
+case FN_ScaleSprite: //Sub Procedure
+ rc_scaleSprite( SCALESPRITE_SPRITE, SCALESPRITE_X, SCALESPRITE_Y );
+ break;
+case FN_GetSpriteScale: //Sub Procedure
+ rc_getSpriteScale( GETSPRITESCALE_SPRITE, &GETSPRITESCALE_X, &GETSPRITESCALE_Y );
+ break;
+case FN_SetSpriteZ: //Sub Procedure
+ rc_setSpriteZ( SETSPRITEZ_SPRITE, SETSPRITEZ_Z );
+ break;
+case FN_SpriteZ: //Number Function
+ rc_push_num(rc_spriteZ( SPRITEZ_SPRITE ));
+ break;
+case FN_GetSpriteSize: //Sub Procedure
+ rc_getSpriteSize( GETSPRITESIZE_SPRITE, &GETSPRITESIZE_W, &GETSPRITESIZE_H );
+ break;
+case FN_SpriteWidth: //Number Function
+ rc_push_num(rc_spriteWidth( SPRITEWIDTH_SPRITE ));
+ break;
+case FN_SpriteHeight: //Number Function
+ rc_push_num(rc_spriteHeight( SPRITEHEIGHT_SPRITE ));
+ break;
+case FN_SetSpriteVisible: //Sub Procedure
+ rc_setSpriteVisible( SETSPRITEVISIBLE_SPRITE, SETSPRITEVISIBLE_FLAG );
+ break;
+case FN_SpriteIsVisible: //Number Function
+ rc_push_num(rc_spriteIsVisible( SPRITEISVISIBLE_SPRITE ));
+ break;
+case FN_SetSpriteSolid: //Sub Procedure
+ rc_setSpriteSolid( SETSPRITESOLID_SPRITE, SETSPRITESOLID_FLAG );
+ break;
+case FN_SpriteIsSolid: //Number Function
+ rc_push_num(rc_spriteIsSolid( SPRITEISSOLID_SPRITE ));
+ break;
+case FN_SetSpriteType: //Sub Procedure
+ rc_setSpriteType( SETSPRITETYPE_SPRITE, SETSPRITETYPE_SPRITE_TYPE );
+ break;
+case FN_GetSpriteType: //Number Function
+ rc_push_num(rc_getSpriteType( GETSPRITETYPE_SPRITE ));
+ break;
+case FN_SetSpriteSource: //Sub Procedure
+ rc_setSpriteSource( SETSPRITESOURCE_SPRITE, SETSPRITESOURCE_IMG );
+ break;
+case FN_GetSpriteSource: //Number Function
+ rc_push_num(rc_getSpriteSource( GETSPRITESOURCE_SPRITE ));
+ break;
+case FN_CreateSpriteAnimation: //Number Function
+ rc_push_num(rc_createSpriteAnimation( CREATESPRITEANIMATION_SPRITE, CREATESPRITEANIMATION_ANIM_LENGTH, CREATESPRITEANIMATION_SPEED ));
+ break;
+case FN_SetSpriteFrame: //Sub Procedure
+ rc_setSpriteFrame( SETSPRITEFRAME_SPRITE, SETSPRITEFRAME_FRAME );
+ break;
+case FN_GetSpriteFrame: //Number Function
+ rc_push_num(rc_getSpriteFrame( GETSPRITEFRAME_SPRITE ));
+ break;
+case FN_SetSpriteAnimationFrame: //Sub Procedure
+ rc_setSpriteAnimationFrame( SETSPRITEANIMATIONFRAME_SPRITE, SETSPRITEANIMATIONFRAME_ANIMATION, SETSPRITEANIMATIONFRAME_ANIM_FRAME, SETSPRITEANIMATIONFRAME_FRAME );
+ break;
+case FN_GetSpriteAnimationFrame: //Number Function
+ rc_push_num(rc_getSpriteAnimationFrame( GETSPRITEANIMATIONFRAME_SPRITE, GETSPRITEANIMATIONFRAME_ANIMATION, GETSPRITEANIMATIONFRAME_ANIM_FRAME ));
+ break;
+case FN_SetSpriteAnimationLength: //Sub Procedure
+ rc_setSpriteAnimationLength( SETSPRITEANIMATIONLENGTH_SPRITE, SETSPRITEANIMATIONLENGTH_ANIMATION, SETSPRITEANIMATIONLENGTH_ANIM_LENGTH );
+ break;
+case FN_GetSpriteAnimationLength: //Number Function
+ rc_push_num(rc_getSpriteAnimationLength( GETSPRITEANIMATIONLENGTH_SPRITE, GETSPRITEANIMATIONLENGTH_ANIMATION ));
+ break;
+case FN_SetSpriteAnimationSpeed: //Sub Procedure
+ rc_setSpriteAnimationSpeed( SETSPRITEANIMATIONSPEED_SPRITE, SETSPRITEANIMATIONSPEED_ANIMATION, SETSPRITEANIMATIONSPEED_SPEED );
+ break;
+case FN_GetSpriteAnimationSpeed: //Number Function
+ rc_push_num(rc_getSpriteAnimationSpeed( GETSPRITEANIMATIONSPEED_SPRITE, GETSPRITEANIMATIONSPEED_ANIMATION ));
+ break;
+case FN_SetSpriteAnimation: //Sub Procedure
+ rc_setSpriteAnimation( SETSPRITEANIMATION_SPRITE, SETSPRITEANIMATION_ANIMATION, SETSPRITEANIMATION_NUM_LOOPS );
+ break;
+case FN_GetSpriteAnimation: //Number Function
+ rc_push_num(rc_getSpriteAnimation( GETSPRITEANIMATION_SPRITE ));
+ break;
+case FN_GetSpriteCurrentAnimationFrame: //Number Function
+ rc_push_num(rc_getSpriteCurrentAnimationFrame( GETSPRITECURRENTANIMATIONFRAME_SPRITE ));
+ break;
+case FN_NumSpriteAnimationLoops: //Number Function
+ rc_push_num(rc_numSpriteAnimationLoops( NUMSPRITEANIMATIONLOOPS_SPRITE ));
+ break;
+case FN_SpriteAnimationIsPlaying: //Number Function
+ rc_push_num(rc_spriteAnimationIsPlaying( SPRITEANIMATIONISPLAYING_SPRITE ));
+ break;
+case FN_DeleteSpriteAnimation: //Sub Procedure
+ rc_deleteSpriteAnimation( DELETESPRITEANIMATION_SPRITE, DELETESPRITEANIMATION_ANIMATION );
+ break;
+case FN_getSpriteCenter: //Sub Procedure
+ rc_getSpriteCenter( GETSPRITECENTER_SPR_ID, &GETSPRITECENTER_X, &GETSPRITECENTER_Y );
+ break;
+case FN_setSpriteLinearVelocity: //Sub Procedure
+ rc_setSpriteLinearVelocity( SETSPRITELINEARVELOCITY_SPR_ID, SETSPRITELINEARVELOCITY_X, SETSPRITELINEARVELOCITY_Y );
+ break;
+case FN_getSpriteLinearVelocity: //Sub Procedure
+ rc_getSpriteLinearVelocity( GETSPRITELINEARVELOCITY_SPR_ID, &GETSPRITELINEARVELOCITY_X, &GETSPRITELINEARVELOCITY_Y );
+ break;
+case FN_setSpriteAngularVelocity: //Sub Procedure
+ rc_setSpriteAngularVelocity( SETSPRITEANGULARVELOCITY_SPR_ID, SETSPRITEANGULARVELOCITY_AV );
+ break;
+case FN_getSpriteAngularVelocity: //Number Function
+ rc_push_num(rc_getSpriteAngularVelocity( GETSPRITEANGULARVELOCITY_SPR_ID ));
+ break;
+case FN_applySpriteForce: //Sub Procedure
+ rc_applySpriteForce( APPLYSPRITEFORCE_SPR_ID, APPLYSPRITEFORCE_FX, APPLYSPRITEFORCE_FY, APPLYSPRITEFORCE_PX, APPLYSPRITEFORCE_PY );
+ break;
+case FN_applySpriteCentralForce: //Sub Procedure
+ rc_applySpriteCentralForce( APPLYSPRITECENTRALFORCE_SPR_ID, APPLYSPRITECENTRALFORCE_X, APPLYSPRITECENTRALFORCE_Y );
+ break;
+case FN_applySpriteTorque: //Sub Procedure
+ rc_applySpriteTorque( APPLYSPRITETORQUE_SPR_ID, APPLYSPRITETORQUE_TORQUE );
+ break;
+case FN_applySpriteLinearImpulse: //Sub Procedure
+ rc_applySpriteLinearImpulse( APPLYSPRITELINEARIMPULSE_SPR_ID, APPLYSPRITELINEARIMPULSE_IX, APPLYSPRITELINEARIMPULSE_IY, APPLYSPRITELINEARIMPULSE_PX, APPLYSPRITELINEARIMPULSE_PY );
+ break;
+case FN_applySpriteAngularImpulse: //Sub Procedure
+ rc_applySpriteAngularImpulse( APPLYSPRITEANGULARIMPULSE_SPR_ID, APPLYSPRITEANGULARIMPULSE_IMPULSE );
+ break;
+case FN_getSpriteMass: //Number Function
+ rc_push_num(rc_getSpriteMass( GETSPRITEMASS_SPR_ID ));
+ break;
+case FN_getSpriteInertia: //Number Function
+ rc_push_num(rc_getSpriteInertia( GETSPRITEINERTIA_SPR_ID ));
+ break;
+case FN_getSpriteWorldPoint: //Sub Procedure
+ rc_getSpriteWorldPoint( GETSPRITEWORLDPOINT_SPR_ID, GETSPRITEWORLDPOINT_LX, GETSPRITEWORLDPOINT_LY, &GETSPRITEWORLDPOINT_X, &GETSPRITEWORLDPOINT_Y );
+ break;
+case FN_getSpriteWorldVector: //Sub Procedure
+ rc_getSpriteWorldVector( GETSPRITEWORLDVECTOR_SPR_ID, GETSPRITEWORLDVECTOR_LX, GETSPRITEWORLDVECTOR_LY, &GETSPRITEWORLDVECTOR_X, &GETSPRITEWORLDVECTOR_Y );
+ break;
+case FN_getSpriteLocalPoint: //Sub Procedure
+ rc_getSpriteLocalPoint( GETSPRITELOCALPOINT_SPR_ID, GETSPRITELOCALPOINT_WX, GETSPRITELOCALPOINT_WY, &GETSPRITELOCALPOINT_X, &GETSPRITELOCALPOINT_Y );
+ break;
+case FN_getSpriteLocalVector: //Sub Procedure
+ rc_getSpriteLocalVector( GETSPRITELOCALVECTOR_SPR_ID, GETSPRITELOCALVECTOR_WX, GETSPRITELOCALVECTOR_WY, &GETSPRITELOCALVECTOR_X, &GETSPRITELOCALVECTOR_Y );
+ break;
+case FN_getSpriteLinearVelocityFromLocalPoint: //Sub Procedure
+ rc_getSpriteLinearVelocityFromLocalPoint( GETSPRITELINEARVELOCITYFROMLOCALPOINT_SPR_ID, GETSPRITELINEARVELOCITYFROMLOCALPOINT_PX, GETSPRITELINEARVELOCITYFROMLOCALPOINT_PY, &GETSPRITELINEARVELOCITYFROMLOCALPOINT_X, &GETSPRITELINEARVELOCITYFROMLOCALPOINT_Y );
+ break;
+case FN_getSpriteLinearVelocityFromWorldPoint: //Sub Procedure
+ rc_getSpriteLinearVelocityFromWorldPoint( GETSPRITELINEARVELOCITYFROMWORLDPOINT_SPR_ID, GETSPRITELINEARVELOCITYFROMWORLDPOINT_WX, GETSPRITELINEARVELOCITYFROMWORLDPOINT_WY, &GETSPRITELINEARVELOCITYFROMWORLDPOINT_X, &GETSPRITELINEARVELOCITYFROMWORLDPOINT_Y );
+ break;
+case FN_getSpriteLinearDamping: //Number Function
+ rc_push_num(rc_getSpriteLinearDamping( GETSPRITELINEARDAMPING_SPR_ID ));
+ break;
+case FN_setSpriteLinearDamping: //Sub Procedure
+ rc_setSpriteLinearDamping( SETSPRITELINEARDAMPING_SPR_ID, SETSPRITELINEARDAMPING_LINEARDAMPING );
+ break;
+case FN_getSpriteAngularDamping: //Number Function
+ rc_push_num(rc_getSpriteAngularDamping( GETSPRITEANGULARDAMPING_SPR_ID ));
+ break;
+case FN_setSpriteAngularDamping: //Sub Procedure
+ rc_setSpriteAngularDamping( SETSPRITEANGULARDAMPING_SPR_ID, SETSPRITEANGULARDAMPING_ANGULARDAMPING );
+ break;
+case FN_getSpriteGravityScale: //Number Function
+ rc_push_num(rc_getSpriteGravityScale( GETSPRITEGRAVITYSCALE_SPR_ID ));
+ break;
+case FN_setSpriteGravityScale: //Sub Procedure
+ rc_setSpriteGravityScale( SETSPRITEGRAVITYSCALE_SPR_ID, SETSPRITEGRAVITYSCALE_G_SCALE );
+ break;
+case FN_setSpriteBullet: //Sub Procedure
+ rc_setSpriteBullet( SETSPRITEBULLET_SPR_ID, SETSPRITEBULLET_FLAG );
+ break;
+case FN_spriteIsBullet: //Number Function
+ rc_push_num(rc_spriteIsBullet( SPRITEISBULLET_SPR_ID ));
+ break;
+case FN_setSpriteSleepAllowed: //Sub Procedure
+ rc_setSpriteSleepAllowed( SETSPRITESLEEPALLOWED_SPR_ID, SETSPRITESLEEPALLOWED_FLAG );
+ break;
+case FN_spriteSleepAllowed: //Number Function
+ rc_push_num(rc_spriteSleepAllowed( SPRITESLEEPALLOWED_SPR_ID ));
+ break;
+case FN_setSpriteAwake: //Sub Procedure
+ rc_setSpriteAwake( SETSPRITEAWAKE_SPR_ID, SETSPRITEAWAKE_FLAG );
+ break;
+case FN_spriteIsAwake: //Number Function
+ rc_push_num(rc_spriteIsAwake( SPRITEISAWAKE_SPR_ID ));
+ break;
+case FN_setSpriteFixedRotation: //Sub Procedure
+ rc_setSpriteFixedRotation( SETSPRITEFIXEDROTATION_SPR_ID, SETSPRITEFIXEDROTATION_FLAG );
+ break;
+case FN_spriteIsFixedRotation: //Number Function
+ rc_push_num(rc_spriteIsFixedRotation( SPRITEISFIXEDROTATION_SPR_ID ));
+ break;
+case FN_createDistanceJoint: //Number Function
+ rc_push_num(rc_createDistanceJoint( CREATEDISTANCEJOINT_SPRITEA, CREATEDISTANCEJOINT_SPRITEB, CREATEDISTANCEJOINT_AX, CREATEDISTANCEJOINT_AY, CREATEDISTANCEJOINT_BX, CREATEDISTANCEJOINT_BY, CREATEDISTANCEJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createFrictionJoint: //Number Function
+ rc_push_num(rc_createFrictionJoint( CREATEFRICTIONJOINT_SPRITEA, CREATEFRICTIONJOINT_SPRITEB, CREATEFRICTIONJOINT_X, CREATEFRICTIONJOINT_Y, CREATEFRICTIONJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createGearJoint: //Number Function
+ rc_push_num(rc_createGearJoint( CREATEGEARJOINT_JOINTA, CREATEGEARJOINT_JOINTB, CREATEGEARJOINT_G_RATIO, CREATEGEARJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createMotorJoint: //Number Function
+ rc_push_num(rc_createMotorJoint( CREATEMOTORJOINT_SPRITEA, CREATEMOTORJOINT_SPRITEB, CREATEMOTORJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createPrismaticJoint: //Number Function
+ rc_push_num(rc_createPrismaticJoint( CREATEPRISMATICJOINT_SPRITEA, CREATEPRISMATICJOINT_SPRITEB, CREATEPRISMATICJOINT_AX, CREATEPRISMATICJOINT_AY, CREATEPRISMATICJOINT_AXISX, CREATEPRISMATICJOINT_AXISY, CREATEPRISMATICJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createPulleyJoint: //Number Function
+ rc_push_num(rc_createPulleyJoint( CREATEPULLEYJOINT_SPRITEA, CREATEPULLEYJOINT_SPRITEB, CREATEPULLEYJOINT_GAX, CREATEPULLEYJOINT_GAY, CREATEPULLEYJOINT_GBX, CREATEPULLEYJOINT_GBY, CREATEPULLEYJOINT_AX, CREATEPULLEYJOINT_AY, CREATEPULLEYJOINT_BX, CREATEPULLEYJOINT_BY, CREATEPULLEYJOINT_J_RATIO, CREATEPULLEYJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createRevoluteJoint: //Number Function
+ rc_push_num(rc_createRevoluteJoint( CREATEREVOLUTEJOINT_SPRITEA, CREATEREVOLUTEJOINT_SPRITEB, CREATEREVOLUTEJOINT_X, CREATEREVOLUTEJOINT_Y, CREATEREVOLUTEJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createWeldJoint: //Number Function
+ rc_push_num(rc_createWeldJoint( CREATEWELDJOINT_SPRITEA, CREATEWELDJOINT_SPRITEB, CREATEWELDJOINT_X, CREATEWELDJOINT_Y, CREATEWELDJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_createWheelJoint: //Number Function
+ rc_push_num(rc_createWheelJoint( CREATEWHEELJOINT_SPRITEA, CREATEWHEELJOINT_SPRITEB, CREATEWHEELJOINT_AX, CREATEWHEELJOINT_AY, CREATEWHEELJOINT_AXISX, CREATEWHEELJOINT_AXISY, CREATEWHEELJOINT_COLLIDE_CONNECT ));
+ break;
+case FN_getJointWorldAnchorA: //Sub Procedure
+ rc_getJointWorldAnchorA( GETJOINTWORLDANCHORA_JOINT_ID, &GETJOINTWORLDANCHORA_X, &GETJOINTWORLDANCHORA_Y );
+ break;
+case FN_getJointWorldAnchorB: //Sub Procedure
+ rc_getJointWorldAnchorB( GETJOINTWORLDANCHORB_JOINT_ID, &GETJOINTWORLDANCHORB_X, &GETJOINTWORLDANCHORB_Y );
+ break;
+case FN_getJointReactionForce: //Sub Procedure
+ rc_getJointReactionForce( GETJOINTREACTIONFORCE_JOINT_ID, GETJOINTREACTIONFORCE_INV_DT, &GETJOINTREACTIONFORCE_X, &GETJOINTREACTIONFORCE_Y );
+ break;
+case FN_getJointReactionTorque: //Number Function
+ rc_push_num(rc_getJointReactionTorque( GETJOINTREACTIONTORQUE_JOINT_ID, GETJOINTREACTIONTORQUE_INV_DT ));
+ break;
+case FN_getJointLocalAnchorA: //Sub Procedure
+ rc_getJointLocalAnchorA( GETJOINTLOCALANCHORA_JOINT_ID, &GETJOINTLOCALANCHORA_X, &GETJOINTLOCALANCHORA_Y );
+ break;
+case FN_getJointLocalAnchorB: //Sub Procedure
+ rc_getJointLocalAnchorB( GETJOINTLOCALANCHORB_JOINT_ID, &GETJOINTLOCALANCHORB_X, &GETJOINTLOCALANCHORB_Y );
+ break;
+case FN_setJointLength: //Sub Procedure
+ rc_setJointLength( SETJOINTLENGTH_JOINT_ID, SETJOINTLENGTH_JLEN );
+ break;
+case FN_getJointLength: //Number Function
+ rc_push_num(rc_getJointLength( GETJOINTLENGTH_JOINT_ID ));
+ break;
+case FN_setJointMinLength: //Sub Procedure
+ rc_setJointMinLength( SETJOINTMINLENGTH_JOINT_ID, SETJOINTMINLENGTH_JLEN );
+ break;
+case FN_getJointMinLength: //Number Function
+ rc_push_num(rc_getJointMinLength( GETJOINTMINLENGTH_JOINT_ID ));
+ break;
+case FN_setJointMaxLength: //Sub Procedure
+ rc_setJointMaxLength( SETJOINTMAXLENGTH_JOINT_ID, SETJOINTMAXLENGTH_JLEN );
+ break;
+case FN_getJointMaxLength: //Number Function
+ rc_push_num(rc_getJointMaxLength( GETJOINTMAXLENGTH_JOINT_ID ));
+ break;
+case FN_getJointCurrentLength: //Number Function
+ rc_push_num(rc_getJointCurrentLength( GETJOINTCURRENTLENGTH_JOINT_ID ));
+ break;
+case FN_setJointStiffness: //Sub Procedure
+ rc_setJointStiffness( SETJOINTSTIFFNESS_JOINT_ID, SETJOINTSTIFFNESS_STIFFNESS );
+ break;
+case FN_getJointStiffness: //Number Function
+ rc_push_num(rc_getJointStiffness( GETJOINTSTIFFNESS_JOINT_ID ));
+ break;
+case FN_setJointDamping: //Sub Procedure
+ rc_setJointDamping( SETJOINTDAMPING_JOINT_ID, SETJOINTDAMPING_DAMPING );
+ break;
+case FN_getJointDamping: //Number Function
+ rc_push_num(rc_getJointDamping( GETJOINTDAMPING_JOINT_ID ));
+ break;
+case FN_setJointMaxForce: //Sub Procedure
+ rc_setJointMaxForce( SETJOINTMAXFORCE_JOINT_ID, SETJOINTMAXFORCE_FORCE );
+ break;
+case FN_getJointMaxForce: //Number Function
+ rc_push_num(rc_getJointMaxForce( GETJOINTMAXFORCE_JOINT_ID ));
+ break;
+case FN_setJointMaxTorque: //Sub Procedure
+ rc_setJointMaxTorque( SETJOINTMAXTORQUE_JOINT_ID, SETJOINTMAXTORQUE_TORQUE );
+ break;
+case FN_getJointMaxTorque: //Number Function
+ rc_push_num(rc_getJointMaxTorque( GETJOINTMAXTORQUE_JOINT_ID ));
+ break;
+case FN_setJointCorrectionFactor: //Sub Procedure
+ rc_setJointCorrectionFactor( SETJOINTCORRECTIONFACTOR_JOINT_ID, SETJOINTCORRECTIONFACTOR_FACTOR );
+ break;
+case FN_getJointCorrectionFactor: //Number Function
+ rc_push_num(rc_getJointCorrectionFactor( GETJOINTCORRECTIONFACTOR_JOINT_ID ));
+ break;
+case FN_setJointRatio: //Sub Procedure
+ rc_setJointRatio( SETJOINTRATIO_JOINT_ID, SETJOINTRATIO_J_RATIO );
+ break;
+case FN_getJointRatio: //Number Function
+ rc_push_num(rc_getJointRatio( GETJOINTRATIO_JOINT_ID ));
+ break;
+case FN_setJointLinearOffset: //Sub Procedure
+ rc_setJointLinearOffset( SETJOINTLINEAROFFSET_JOINT_ID, SETJOINTLINEAROFFSET_X, SETJOINTLINEAROFFSET_Y );
+ break;
+case FN_getJointLinearOffset: //Sub Procedure
+ rc_getJointLinearOffset( GETJOINTLINEAROFFSET_JOINT_ID, &GETJOINTLINEAROFFSET_X, &GETJOINTLINEAROFFSET_Y );
+ break;
+case FN_setJointAngularOffset: //Sub Procedure
+ rc_setJointAngularOffset( SETJOINTANGULAROFFSET_JOINT_ID, SETJOINTANGULAROFFSET_ANGLEOFFSET );
+ break;
+case FN_getJointAngularOffset: //Number Function
+ rc_push_num(rc_getJointAngularOffset( GETJOINTANGULAROFFSET_JOINT_ID ));
+ break;
+case FN_getJointLocalAxisA: //Sub Procedure
+ rc_getJointLocalAxisA( GETJOINTLOCALAXISA_JOINT_ID, &GETJOINTLOCALAXISA_X, &GETJOINTLOCALAXISA_Y );
+ break;
+case FN_getJointReferenceAngle: //Number Function
+ rc_push_num(rc_getJointReferenceAngle( GETJOINTREFERENCEANGLE_JOINT_ID ));
+ break;
+case FN_getJointTranslation: //Number Function
+ rc_push_num(rc_getJointTranslation( GETJOINTTRANSLATION_JOINT_ID ));
+ break;
+case FN_getJointSpeed: //Number Function
+ rc_push_num(rc_getJointSpeed( GETJOINTSPEED_JOINT_ID ));
+ break;
+case FN_jointIsLimitEnabled: //Number Function
+ rc_push_num(rc_jointIsLimitEnabled( JOINTISLIMITENABLED_JOINT_ID ));
+ break;
+case FN_enableJointLimit: //Sub Procedure
+ rc_enableJointLimit( ENABLEJOINTLIMIT_JOINT_ID, ENABLEJOINTLIMIT_FLAG );
+ break;
+case FN_getJointLowerLimit: //Number Function
+ rc_push_num(rc_getJointLowerLimit( GETJOINTLOWERLIMIT_JOINT_ID ));
+ break;
+case FN_getJointUpperLimit: //Number Function
+ rc_push_num(rc_getJointUpperLimit( GETJOINTUPPERLIMIT_JOINT_ID ));
+ break;
+case FN_setJointLimits: //Sub Procedure
+ rc_setJointLimits( SETJOINTLIMITS_JOINT_ID, SETJOINTLIMITS_LOWER_LIMIT, SETJOINTLIMITS_UPPER_LIMIT );
+ break;
+case FN_jointMotorIsEnabled: //Number Function
+ rc_push_num(rc_jointMotorIsEnabled( JOINTMOTORISENABLED_JOINT_ID ));
+ break;
+case FN_enableJointMotor: //Sub Procedure
+ rc_enableJointMotor( ENABLEJOINTMOTOR_JOINT_ID, ENABLEJOINTMOTOR_FLAG );
+ break;
+case FN_setJointMotorSpeed: //Sub Procedure
+ rc_setJointMotorSpeed( SETJOINTMOTORSPEED_JOINT_ID, SETJOINTMOTORSPEED_SPEED );
+ break;
+case FN_getJointMotorSpeed: //Number Function
+ rc_push_num(rc_getJointMotorSpeed( GETJOINTMOTORSPEED_JOINT_ID ));
+ break;
+case FN_setJointMaxMotorForce: //Sub Procedure
+ rc_setJointMaxMotorForce( SETJOINTMAXMOTORFORCE_JOINT_ID, SETJOINTMAXMOTORFORCE_FORCE );
+ break;
+case FN_getJointMaxMotorForce: //Number Function
+ rc_push_num(rc_getJointMaxMotorForce( GETJOINTMAXMOTORFORCE_JOINT_ID ));
+ break;
+case FN_getJointMotorForce: //Number Function
+ rc_push_num(rc_getJointMotorForce( GETJOINTMOTORFORCE_JOINT_ID, GETJOINTMOTORFORCE_INV_DT ));
+ break;
+case FN_setJointMaxMotorTorque: //Sub Procedure
+ rc_setJointMaxMotorTorque( SETJOINTMAXMOTORTORQUE_JOINT_ID, SETJOINTMAXMOTORTORQUE_TORQUE );
+ break;
+case FN_getJointMaxMotorTorque: //Number Function
+ rc_push_num(rc_getJointMaxMotorTorque( GETJOINTMAXMOTORTORQUE_JOINT_ID ));
+ break;
+case FN_getJointMotorTorque: //Number Function
+ rc_push_num(rc_getJointMotorTorque( GETJOINTMOTORTORQUE_JOINT_ID, GETJOINTMOTORTORQUE_INV_DT ));
+ break;
+case FN_getJointGroundAnchorA: //Sub Procedure
+ rc_getJointGroundAnchorA( GETJOINTGROUNDANCHORA_JOINT_ID, &GETJOINTGROUNDANCHORA_X, &GETJOINTGROUNDANCHORA_Y );
+ break;
+case FN_getJointGroundAnchorB: //Sub Procedure
+ rc_getJointGroundAnchorB( GETJOINTGROUNDANCHORB_JOINT_ID, &GETJOINTGROUNDANCHORB_X, &GETJOINTGROUNDANCHORB_Y );
+ break;
+case FN_getJointLengthA: //Number Function
+ rc_push_num(rc_getJointLengthA( GETJOINTLENGTHA_JOINT_ID ));
+ break;
+case FN_getJointLengthB: //Number Function
+ rc_push_num(rc_getJointLengthB( GETJOINTLENGTHB_JOINT_ID ));
+ break;
+case FN_getJointCurrentLengthA: //Number Function
+ rc_push_num(rc_getJointCurrentLengthA( GETJOINTCURRENTLENGTHA_JOINT_ID ));
+ break;
+case FN_getJointCurrentLengthB: //Number Function
+ rc_push_num(rc_getJointCurrentLengthB( GETJOINTCURRENTLENGTHB_JOINT_ID ));
+ break;
+case FN_setJointOrigin: //Sub Procedure
+ rc_setJointOrigin( SETJOINTORIGIN_JOINT_ID, SETJOINTORIGIN_X, SETJOINTORIGIN_Y );
+ break;
+case FN_getJointAngle: //Number Function
+ rc_push_num(rc_getJointAngle( GETJOINTANGLE_JOINT_ID ));
+ break;
+case FN_getJointLinearSpeed: //Number Function
+ rc_push_num(rc_getJointLinearSpeed( GETJOINTLINEARSPEED_JOINT_ID ));
+ break;
+case FN_getJointAngularSpeed: //Number Function
+ rc_push_num(rc_getJointAngularSpeed( GETJOINTANGULARSPEED_JOINT_ID ));
+ break;
+case FN_DeleteJoint: //Sub Procedure
+ rc_deleteJoint( DELETEJOINT_JOINT_ID );
+ break;
+case FN_CreateTileSet: //Number Function
+ rc_push_num(rc_createTileSet( CREATETILESET_IMG_ID, CREATETILESET_TILE_W, CREATETILESET_TILE_H ));
+ break;
+case FN_SetTileAnimationLength: //Sub Procedure
+ rc_setTileAnimationLength( SETTILEANIMATIONLENGTH_TILESET, SETTILEANIMATIONLENGTH_BASE_TILE, SETTILEANIMATIONLENGTH_NUM_FRAMES );
+ break;
+case FN_GetTileAnimationLength: //Number Function
+ rc_push_num(rc_getTileAnimationLength( GETTILEANIMATIONLENGTH_TILESET, GETTILEANIMATIONLENGTH_BASE_TILE ));
+ break;
+case FN_SetTileAnimationFrame: //Sub Procedure
+ rc_setTileAnimationFrame( SETTILEANIMATIONFRAME_TILESET, SETTILEANIMATIONFRAME_BASE_TILE, SETTILEANIMATIONFRAME_ANIM_FRAME, SETTILEANIMATIONFRAME_TILE_FRAME );
+ break;
+case FN_GetTileAnimationFrame: //Number Function
+ rc_push_num(rc_getTileAnimationFrame( GETTILEANIMATIONFRAME_TILESET, GETTILEANIMATIONFRAME_BASE_TILE, GETTILEANIMATIONFRAME_ANIM_FRAME ));
+ break;
+case FN_SetTileAnimationSpeed: //Sub Procedure
+ rc_setTileAnimationSpeed( SETTILEANIMATIONSPEED_TILESET, SETTILEANIMATIONSPEED_BASE_TILE, SETTILEANIMATIONSPEED_SPEED );
+ break;
+case FN_GetTileAnimationSpeed: //Number Function
+ rc_push_num(rc_getTileAnimationSpeed( GETTILEANIMATIONSPEED_TILESET, GETTILEANIMATIONSPEED_BASE_TILE ));
+ break;
+case FN_CreateTileMap: //Number Function
+ rc_push_num(rc_createTileMap( CREATETILEMAP_TILESET, CREATETILEMAP_WIDTHINTILES, CREATETILEMAP_HEIGHTINTILES ));
+ break;
+case FN_SetTileMapSize: //Sub Procedure
+ rc_setTileMapSize( SETTILEMAPSIZE_TILEMAP, SETTILEMAPSIZE_WIDTHINTILES, SETTILEMAPSIZE_HEIGHTINTILES );
+ break;
+case FN_GetTileMapSize: //Sub Procedure
+ rc_getTileMapSize( GETTILEMAPSIZE_TILEMAP, &GETTILEMAPSIZE_WIDTHINTILES, &GETTILEMAPSIZE_HEIGHTINTILES );
+ break;
+case FN_SetTile: //Sub Procedure
+ rc_setTile( SETTILE_TILEMAP, SETTILE_TILE, SETTILE_X, SETTILE_Y );
+ break;
+case FN_GetTile: //Number Function
+ rc_push_num(rc_getTile( GETTILE_TILEMAP, GETTILE_X, GETTILE_Y ));
+ break;
+case FN_FillTile: //Sub Procedure
+ rc_fillTile( FILLTILE_TILEMAP, FILLTILE_TILE, FILLTILE_X, FILLTILE_Y, FILLTILE_WIDTHINTILES, FILLTILE_HEIGHTINTILES );
+ break;
+case FN_DrawTileMap: //Sub Procedure
+ rc_drawTileMap( DRAWTILEMAP_TILEMAP, DRAWTILEMAP_X, DRAWTILEMAP_Y, DRAWTILEMAP_W, DRAWTILEMAP_H, DRAWTILEMAP_OFFSET_X, DRAWTILEMAP_OFFSET_Y );
+ break;
+case FN_LoadMesh: //Number Function
+ rc_push_num(rc_loadMesh( LOADMESH_MESH_FILE$ ));
+ break;
+case FN_DeleteMesh: //Sub Procedure
+ rc_deleteMesh( DELETEMESH_MESH );
+ break;
+case FN_CreateMesh: //Number Function
+ rc_push_num(rc_createMesh( ));
+ break;
+case FN_AddMeshBuffer: //Sub Procedure
+ rc_addMeshBuffer( ADDMESHBUFFER_MESH, ADDMESHBUFFER_VERTEX_COUNT, &ADDMESHBUFFER_VERTEX_DATA, &ADDMESHBUFFER_NORMAL_DATA, &ADDMESHBUFFER_UV_DATA, ADDMESHBUFFER_INDEX_COUNT, &ADDMESHBUFFER_INDEX_DATA );
+ break;
+case FN_LoadMeshFromArchive: //Number Function
+ rc_push_num(rc_loadMeshFromArchive( LOADMESHFROMARCHIVE_ARCHIVE$, LOADMESHFROMARCHIVE_MESH_FILE$ ));
+ break;
+case FN_CreatePlaneMesh: //Number Function
+ rc_push_num(rc_createPlaneMesh( CREATEPLANEMESH_W, CREATEPLANEMESH_H, CREATEPLANEMESH_TILECOUNT_W, CREATEPLANEMESH_TILECOUNT_H ));
+ break;
+case FN_LoadAN8: //Number Function
+ rc_push_num(rc_loadAN8( LOADAN8_AN8_FILE$ ));
+ break;
+case FN_LoadMeshFromAN8: //Number Function
+ rc_push_num(rc_loadMeshFromAN8( LOADMESHFROMAN8_AN8_PROJECT, LOADMESHFROMAN8_AN8_SCENE$ ));
+ break;
+case FN_GetNumAN8Scenes: //Number Function
+ rc_push_num(rc_getNumAN8Scenes( GETNUMAN8SCENES_AN8_PROJECT ));
+ break;
+case FN_GetAN8SceneName$: //String Function
+ rc_push_str(rc_getAN8SceneName( GETAN8SCENENAME$_AN8_PROJECT, GETAN8SCENENAME$_SCENE_NUM ));
+ break;
+case FN_CreateAnimatedActor: //Number Function
+ rc_push_num(rc_createAnimatedActor( CREATEANIMATEDACTOR_MESH ));
+ break;
+case FN_CreateOctreeActor: //Number Function
+ rc_push_num(rc_createOctreeActor( CREATEOCTREEACTOR_MESH ));
+ break;
+case FN_CreateCubeActor: //Number Function
+ rc_push_num(rc_createCubeActor( CREATECUBEACTOR_CUBE_SIZE ));
+ break;
+case FN_CreateSphereActor: //Number Function
+ rc_push_num(rc_createSphereActor( CREATESPHEREACTOR_RADIUS ));
+ break;
+case FN_CreateWaterActor: //Number Function
+ rc_push_num(rc_createWaterActor( CREATEWATERACTOR_MESH, CREATEWATERACTOR_WAVEHEIGHT, CREATEWATERACTOR_WAVESPEED, CREATEWATERACTOR_WAVELENGTH ));
+ break;
+case FN_CreateLightActor: //Number Function
+ rc_push_num(rc_createLightActor( ));
+ break;
+case FN_CreateBillboardActor: //Number Function
+ rc_push_num(rc_createBillboardActor( ));
+ break;
+case FN_CreateTerrainActor: //Number Function
+ rc_push_num(rc_createTerrainActor( CREATETERRAINACTOR_HMAP_FILE$ ));
+ break;
+case FN_CreateParticleActor: //Number Function
+ rc_push_num(rc_createParticleActor( CREATEPARTICLEACTOR_PARTICLE_TYPE ));
+ break;
+case FN_DeleteActor: //Sub Procedure
+ rc_deleteActor( DELETEACTOR_ACTOR );
+ break;
+case FN_GetActorTransform: //Sub Procedure
+ rc_getActorTransform( GETACTORTRANSFORM_ACTOR, GETACTORTRANSFORM_MATRIX );
+ break;
+case FN_SetActorPosition: //Sub Procedure
+ rc_setActorPosition( SETACTORPOSITION_ACTOR, SETACTORPOSITION_X, SETACTORPOSITION_Y, SETACTORPOSITION_Z );
+ break;
+case FN_TranslateActorLocal: //Sub Procedure
+ rc_translateActorLocal( TRANSLATEACTORLOCAL_ACTOR, TRANSLATEACTORLOCAL_X, TRANSLATEACTORLOCAL_Y, TRANSLATEACTORLOCAL_Z );
+ break;
+case FN_TranslateActorWorld: //Sub Procedure
+ rc_translateActorWorld( TRANSLATEACTORWORLD_ACTOR, TRANSLATEACTORWORLD_X, TRANSLATEACTORWORLD_Y, TRANSLATEACTORWORLD_Z );
+ break;
+case FN_GetActorPosition: //Sub Procedure
+ rc_getActorPosition( GETACTORPOSITION_ACTOR, &GETACTORPOSITION_X, &GETACTORPOSITION_Y, &GETACTORPOSITION_Z );
+ break;
+case FN_SetActorScale: //Sub Procedure
+ rc_setActorScale( SETACTORSCALE_ACTOR, SETACTORSCALE_X, SETACTORSCALE_Y, SETACTORSCALE_Z );
+ break;
+case FN_ScaleActor: //Sub Procedure
+ rc_scaleActor( SCALEACTOR_ACTOR, SCALEACTOR_X, SCALEACTOR_Y, SCALEACTOR_Z );
+ break;
+case FN_GetActorScale: //Sub Procedure
+ rc_getActorScale( GETACTORSCALE_ACTOR, &GETACTORSCALE_X, &GETACTORSCALE_Y, &GETACTORSCALE_Z );
+ break;
+case FN_SetActorRotation: //Sub Procedure
+ rc_setActorRotation( SETACTORROTATION_ACTOR, SETACTORROTATION_X, SETACTORROTATION_Y, SETACTORROTATION_Z );
+ break;
+case FN_RotateActor: //Sub Procedure
+ rc_rotateActor( ROTATEACTOR_ACTOR, ROTATEACTOR_X, ROTATEACTOR_Y, ROTATEACTOR_Z );
+ break;
+case FN_GetActorRotation: //Sub Procedure
+ rc_getActorRotation( GETACTORROTATION_ACTOR, &GETACTORROTATION_X, &GETACTORROTATION_Y, &GETACTORROTATION_Z );
+ break;
+case FN_SetActorVisible: //Sub Procedure
+ rc_setActorVisible( SETACTORVISIBLE_ACTOR, SETACTORVISIBLE_FLAG );
+ break;
+case FN_ActorIsVisible: //Number Function
+ rc_push_num(rc_actorIsVisible( ACTORISVISIBLE_ACTOR ));
+ break;
+case FN_SetActorAutoCulling: //Sub Procedure
+ rc_setActorAutoCulling( SETACTORAUTOCULLING_ACTOR, SETACTORAUTOCULLING_CULL_TYPE );
+ break;
+case FN_GetActorAutoCulling: //Number Function
+ rc_push_num(rc_getActorAutoCulling( GETACTORAUTOCULLING_ACTOR ));
+ break;
+case FN_AddActorShadow: //Sub Procedure
+ rc_addActorShadow( ADDACTORSHADOW_ACTOR );
+ break;
+case FN_RemoveActorShadow: //Sub Procedure
+ rc_removeActorShadow( REMOVEACTORSHADOW_ACTOR );
+ break;
+case FN_ActorExists: //Number Function
+ rc_push_num(rc_actorExists( ACTOREXISTS_ACTOR ));
+ break;
+case FN_CreateActorAnimation: //Number Function
+ rc_push_num(rc_createActorAnimation( CREATEACTORANIMATION_ACTOR, CREATEACTORANIMATION_START_FRAME, CREATEACTORANIMATION_END_FRAME, CREATEACTORANIMATION_SPEED ));
+ break;
+case FN_SetActorAnimation: //Sub Procedure
+ rc_setActorAnimation( SETACTORANIMATION_ACTOR, SETACTORANIMATION_ANIMATION, SETACTORANIMATION_NUM_LOOPS );
+ break;
+case FN_SetActorAnimationSpeed: //Sub Procedure
+ rc_setActorAnimationSpeed( SETACTORANIMATIONSPEED_ACTOR, SETACTORANIMATIONSPEED_ANIMATION, SETACTORANIMATIONSPEED_SPEED );
+ break;
+case FN_SetActorAnimationFrames: //Sub Procedure
+ rc_setActorAnimationFrames( SETACTORANIMATIONFRAMES_ACTOR, SETACTORANIMATIONFRAMES_ANIMATION, SETACTORANIMATIONFRAMES_START_FRAME, SETACTORANIMATIONFRAMES_END_FRAME );
+ break;
+case FN_GetActorCurrentAnimation: //Number Function
+ rc_push_num(rc_getActorCurrentAnimation( GETACTORCURRENTANIMATION_ACTOR ));
+ break;
+case FN_GetActorAnimationSpeed: //Number Function
+ rc_push_num(rc_getActorAnimationSpeed( GETACTORANIMATIONSPEED_ACTOR, GETACTORANIMATIONSPEED_ANIMATION ));
+ break;
+case FN_GetActorAnimationStartFrame: //Number Function
+ rc_push_num(rc_getActorAnimationStartFrame( GETACTORANIMATIONSTARTFRAME_ACTOR, GETACTORANIMATIONSTARTFRAME_ANIMATION ));
+ break;
+case FN_GetActorAnimationEndFrame: //Number Function
+ rc_push_num(rc_getActorAnimationEndFrame( GETACTORANIMATIONENDFRAME_ACTOR, GETACTORANIMATIONENDFRAME_ANIMATION ));
+ break;
+case FN_SetActorFrame: //Sub Procedure
+ rc_setActorFrame( SETACTORFRAME_ACTOR, SETACTORFRAME_FRAME );
+ break;
+case FN_GetActorFrame: //Number Function
+ rc_push_num(rc_getActorFrame( GETACTORFRAME_ACTOR ));
+ break;
+case FN_ActorAnimationIsPlaying: //Number Function
+ rc_push_num(rc_actorAnimationIsPlaying( ACTORANIMATIONISPLAYING_ACTOR ));
+ break;
+case FN_NumActorAnimationLoops: //Number Function
+ rc_push_num(rc_numActorAnimationLoops( NUMACTORANIMATIONLOOPS_ACTOR ));
+ break;
+case FN_SetActorMD2Animation: //Sub Procedure
+ rc_setActorMD2Animation( SETACTORMD2ANIMATION_ACTOR, SETACTORMD2ANIMATION_ANIM, SETACTORMD2ANIMATION_NUM_LOOPS );
+ break;
+case FN_SetActorMD2AnimationByName: //Sub Procedure
+ rc_setActorMD2AnimationByName( SETACTORMD2ANIMATIONBYNAME_ACTOR, SETACTORMD2ANIMATIONBYNAME_ANIM_NAME$, SETACTORMD2ANIMATIONBYNAME_NUM_LOOPS );
+ break;
+case FN_DeleteActorAnimation: //Sub Procedure
+ rc_deleteActorAnimation( DELETEACTORANIMATION_ACTOR, DELETEACTORANIMATION_ANIMATION );
+ break;
+case FN_SetGravity3D: //Sub Procedure
+ rc_setGravity3D( SETGRAVITY3D_X, SETGRAVITY3D_Y, SETGRAVITY3D_Z );
+ break;
+case FN_GetGravity3D: //Sub Procedure
+ rc_getGravity3D( &GETGRAVITY3D_X, &GETGRAVITY3D_Y, &GETGRAVITY3D_Z );
+ break;
+case FN_SetActorCollisionShape: //Sub Procedure
+ rc_setActorCollisionShape( SETACTORCOLLISIONSHAPE_ACTOR, SETACTORCOLLISIONSHAPE_SHAPE_TYPE, SETACTORCOLLISIONSHAPE_MASS );
+ break;
+case FN_GetActorCollisionShape: //Number Function
+ rc_push_num(rc_getActorCollisionShape( GETACTORCOLLISIONSHAPE_ACTOR ));
+ break;
+case FN_SetActorSolid: //Sub Procedure
+ rc_setActorSolid( SETACTORSOLID_ACTOR, SETACTORSOLID_FLAG );
+ break;
+case FN_ActorIsSolid: //Number Function
+ rc_push_num(rc_actorIsSolid( ACTORISSOLID_ACTOR ));
+ break;
+case FN_GetActorCollision: //Number Function
+ rc_push_num(rc_getActorCollision( GETACTORCOLLISION_ACTOR1, GETACTORCOLLISION_ACTOR2 ));
+ break;
+case FN_SetActorGravity: //Sub Procedure
+ rc_setActorGravity( SETACTORGRAVITY_ACTOR, SETACTORGRAVITY_X, SETACTORGRAVITY_Y, SETACTORGRAVITY_Z );
+ break;
+case FN_GetActorGravity: //Sub Procedure
+ rc_getActorGravity( GETACTORGRAVITY_ACTOR, &GETACTORGRAVITY_X, &GETACTORGRAVITY_Y, &GETACTORGRAVITY_Z );
+ break;
+case FN_setActorDamping: //Sub Procedure
+ rc_setActorDamping( SETACTORDAMPING_ACTOR, SETACTORDAMPING_LIN_DAMPING, SETACTORDAMPING_ANG_DAMPING );
+ break;
+case FN_getActorLinearDamping: //Number Function
+ rc_push_num(rc_getActorLinearDamping( GETACTORLINEARDAMPING_ACTOR ));
+ break;
+case FN_getActorAngularDamping: //Number Function
+ rc_push_num(rc_getActorAngularDamping( GETACTORANGULARDAMPING_ACTOR ));
+ break;
+case FN_getActorLinearSleepThreshold: //Number Function
+ rc_push_num(rc_getActorLinearSleepThreshold( GETACTORLINEARSLEEPTHRESHOLD_ACTOR ));
+ break;
+case FN_getActorAngularSleepThreshold: //Number Function
+ rc_push_num(rc_getActorAngularSleepThreshold( GETACTORANGULARSLEEPTHRESHOLD_ACTOR ));
+ break;
+case FN_applyActorDamping: //Sub Procedure
+ rc_applyActorDamping( APPLYACTORDAMPING_ACTOR, APPLYACTORDAMPING_TIMESTEP );
+ break;
+case FN_setActorMassProperties: //Sub Procedure
+ rc_setActorMassProperties( SETACTORMASSPROPERTIES_ACTOR, SETACTORMASSPROPERTIES_MASS, SETACTORMASSPROPERTIES_INERTIA_X, SETACTORMASSPROPERTIES_INERTIA_Y, SETACTORMASSPROPERTIES_INERTIA_Z );
+ break;
+case FN_getActorLinearFactor: //Sub Procedure
+ rc_getActorLinearFactor( GETACTORLINEARFACTOR_ACTOR, &GETACTORLINEARFACTOR_X, &GETACTORLINEARFACTOR_Y, &GETACTORLINEARFACTOR_Z );
+ break;
+case FN_setActorLinearFactor: //Sub Procedure
+ rc_setActorLinearFactor( SETACTORLINEARFACTOR_ACTOR, SETACTORLINEARFACTOR_X, SETACTORLINEARFACTOR_Y, SETACTORLINEARFACTOR_Z );
+ break;
+case FN_getActorInverseMass: //Number Function
+ rc_push_num(rc_getActorInverseMass( GETACTORINVERSEMASS_ACTOR ));
+ break;
+case FN_integrateActorVelocities: //Sub Procedure
+ rc_integrateActorVelocities( INTEGRATEACTORVELOCITIES_ACTOR, INTEGRATEACTORVELOCITIES_V_STEP );
+ break;
+case FN_applyActorCentralForceLocal: //Sub Procedure
+ rc_applyActorCentralForceLocal( APPLYACTORCENTRALFORCELOCAL_ACTOR, APPLYACTORCENTRALFORCELOCAL_X, APPLYACTORCENTRALFORCELOCAL_Y, APPLYACTORCENTRALFORCELOCAL_Z );
+ break;
+case FN_applyActorCentralForceWorld: //Sub Procedure
+ rc_applyActorCentralForceWorld( APPLYACTORCENTRALFORCEWORLD_ACTOR, APPLYACTORCENTRALFORCEWORLD_X, APPLYACTORCENTRALFORCEWORLD_Y, APPLYACTORCENTRALFORCEWORLD_Z );
+ break;
+case FN_getActorTotalForce: //Sub Procedure
+ rc_getActorTotalForce( GETACTORTOTALFORCE_ACTOR, &GETACTORTOTALFORCE_X, &GETACTORTOTALFORCE_Y, &GETACTORTOTALFORCE_Z );
+ break;
+case FN_getActorTotalTorque: //Sub Procedure
+ rc_getActorTotalTorque( GETACTORTOTALTORQUE_ACTOR, &GETACTORTOTALTORQUE_X, &GETACTORTOTALTORQUE_Y, &GETACTORTOTALTORQUE_Z );
+ break;
+case FN_getActorInverseInertiaDiagLocal: //Sub Procedure
+ rc_getActorInverseInertiaDiagLocal( GETACTORINVERSEINERTIADIAGLOCAL_ACTOR, &GETACTORINVERSEINERTIADIAGLOCAL_X, &GETACTORINVERSEINERTIADIAGLOCAL_Y, &GETACTORINVERSEINERTIADIAGLOCAL_Z );
+ break;
+case FN_setActorInverseInertiaDiagLocal: //Sub Procedure
+ rc_setActorInverseInertiaDiagLocal( SETACTORINVERSEINERTIADIAGLOCAL_ACTOR, SETACTORINVERSEINERTIADIAGLOCAL_X, SETACTORINVERSEINERTIADIAGLOCAL_Y, SETACTORINVERSEINERTIADIAGLOCAL_Z );
+ break;
+case FN_setActorSleepThresholds: //Sub Procedure
+ rc_setActorSleepThresholds( SETACTORSLEEPTHRESHOLDS_ACTOR, SETACTORSLEEPTHRESHOLDS_LINEAR, SETACTORSLEEPTHRESHOLDS_ANGULAR );
+ break;
+case FN_applyActorTorqueLocal: //Sub Procedure
+ rc_applyActorTorqueLocal( APPLYACTORTORQUELOCAL_ACTOR, APPLYACTORTORQUELOCAL_X, APPLYACTORTORQUELOCAL_Y, APPLYACTORTORQUELOCAL_Z );
+ break;
+case FN_applyActorTorqueWorld: //Sub Procedure
+ rc_applyActorTorqueWorld( APPLYACTORTORQUEWORLD_ACTOR, APPLYACTORTORQUEWORLD_X, APPLYACTORTORQUEWORLD_Y, APPLYACTORTORQUEWORLD_Z );
+ break;
+case FN_applyActorForceLocal: //Sub Procedure
+ rc_applyActorForceLocal( APPLYACTORFORCELOCAL_ACTOR, APPLYACTORFORCELOCAL_X, APPLYACTORFORCELOCAL_Y, APPLYACTORFORCELOCAL_Z, APPLYACTORFORCELOCAL_REL_X, APPLYACTORFORCELOCAL_REL_Y, APPLYACTORFORCELOCAL_REL_Z );
+ break;
+case FN_applyActorForceWorld: //Sub Procedure
+ rc_applyActorForceWorld( APPLYACTORFORCEWORLD_ACTOR, APPLYACTORFORCEWORLD_X, APPLYACTORFORCEWORLD_Y, APPLYACTORFORCEWORLD_Z, APPLYACTORFORCEWORLD_REL_X, APPLYACTORFORCEWORLD_REL_Y, APPLYACTORFORCEWORLD_REL_Z );
+ break;
+case FN_applyActorCentralImpulseLocal: //Sub Procedure
+ rc_applyActorCentralImpulseLocal( APPLYACTORCENTRALIMPULSELOCAL_ACTOR, APPLYACTORCENTRALIMPULSELOCAL_X, APPLYACTORCENTRALIMPULSELOCAL_Y, APPLYACTORCENTRALIMPULSELOCAL_Z );
+ break;
+case FN_applyActorCentralImpulseWorld: //Sub Procedure
+ rc_applyActorCentralImpulseWorld( APPLYACTORCENTRALIMPULSEWORLD_ACTOR, APPLYACTORCENTRALIMPULSEWORLD_X, APPLYACTORCENTRALIMPULSEWORLD_Y, APPLYACTORCENTRALIMPULSEWORLD_Z );
+ break;
+case FN_applyActorTorqueImpulseLocal: //Sub Procedure
+ rc_applyActorTorqueImpulseLocal( APPLYACTORTORQUEIMPULSELOCAL_ACTOR, APPLYACTORTORQUEIMPULSELOCAL_X, APPLYACTORTORQUEIMPULSELOCAL_Y, APPLYACTORTORQUEIMPULSELOCAL_Z );
+ break;
+case FN_applyActorTorqueImpulseWorld: //Sub Procedure
+ rc_applyActorTorqueImpulseWorld( APPLYACTORTORQUEIMPULSEWORLD_ACTOR, APPLYACTORTORQUEIMPULSEWORLD_X, APPLYACTORTORQUEIMPULSEWORLD_Y, APPLYACTORTORQUEIMPULSEWORLD_Z );
+ break;
+case FN_applyActorImpulseLocal: //Sub Procedure
+ rc_applyActorImpulseLocal( APPLYACTORIMPULSELOCAL_ACTOR, APPLYACTORIMPULSELOCAL_X, APPLYACTORIMPULSELOCAL_Y, APPLYACTORIMPULSELOCAL_Z, APPLYACTORIMPULSELOCAL_REL_X, APPLYACTORIMPULSELOCAL_REL_Y, APPLYACTORIMPULSELOCAL_REL_Z );
+ break;
+case FN_applyActorImpulseWorld: //Sub Procedure
+ rc_applyActorImpulseWorld( APPLYACTORIMPULSEWORLD_ACTOR, APPLYACTORIMPULSEWORLD_X, APPLYACTORIMPULSEWORLD_Y, APPLYACTORIMPULSEWORLD_Z, APPLYACTORIMPULSEWORLD_REL_X, APPLYACTORIMPULSEWORLD_REL_Y, APPLYACTORIMPULSEWORLD_REL_Z );
+ break;
+case FN_clearActorForces: //Sub Procedure
+ rc_clearActorForces( CLEARACTORFORCES_ACTOR );
+ break;
+case FN_updateActorInertiaTensor: //Sub Procedure
+ rc_updateActorInertiaTensor( UPDATEACTORINERTIATENSOR_ACTOR );
+ break;
+case FN_getActorCenter: //Sub Procedure
+ rc_getActorCenter( GETACTORCENTER_ACTOR, &GETACTORCENTER_X, &GETACTORCENTER_Y, &GETACTORCENTER_Z );
+ break;
+case FN_getActorRotationQ: //Sub Procedure
+ rc_getActorRotationQ( GETACTORROTATIONQ_ACTOR, &GETACTORROTATIONQ_X, &GETACTORROTATIONQ_Y, &GETACTORROTATIONQ_Z, &GETACTORROTATIONQ_W );
+ break;
+case FN_getActorLinearVelocityWorld: //Sub Procedure
+ rc_getActorLinearVelocityWorld( GETACTORLINEARVELOCITYWORLD_ACTOR, &GETACTORLINEARVELOCITYWORLD_X, &GETACTORLINEARVELOCITYWORLD_Y, &GETACTORLINEARVELOCITYWORLD_Z );
+ break;
+case FN_getActorAngularVelocityWorld: //Sub Procedure
+ rc_getActorAngularVelocityWorld( GETACTORANGULARVELOCITYWORLD_ACTOR, &GETACTORANGULARVELOCITYWORLD_X, &GETACTORANGULARVELOCITYWORLD_Y, &GETACTORANGULARVELOCITYWORLD_Z );
+ break;
+case FN_setActorLinearVelocityLocal: //Sub Procedure
+ rc_setActorLinearVelocityLocal( SETACTORLINEARVELOCITYLOCAL_ACTOR, SETACTORLINEARVELOCITYLOCAL_X, SETACTORLINEARVELOCITYLOCAL_Y, SETACTORLINEARVELOCITYLOCAL_Z );
+ break;
+case FN_setActorLinearVelocityWorld: //Sub Procedure
+ rc_setActorLinearVelocityWorld( SETACTORLINEARVELOCITYWORLD_ACTOR, SETACTORLINEARVELOCITYWORLD_X, SETACTORLINEARVELOCITYWORLD_Y, SETACTORLINEARVELOCITYWORLD_Z );
+ break;
+case FN_setActorAngularVelocityLocal: //Sub Procedure
+ rc_setActorAngularVelocityLocal( SETACTORANGULARVELOCITYLOCAL_ACTOR, SETACTORANGULARVELOCITYLOCAL_X, SETACTORANGULARVELOCITYLOCAL_Y, SETACTORANGULARVELOCITYLOCAL_Z );
+ break;
+case FN_setActorAngularVelocityWorld: //Sub Procedure
+ rc_setActorAngularVelocityWorld( SETACTORANGULARVELOCITYWORLD_ACTOR, SETACTORANGULARVELOCITYWORLD_X, SETACTORANGULARVELOCITYWORLD_Y, SETACTORANGULARVELOCITYWORLD_Z );
+ break;
+case FN_getActorVelocityInLocalPoint: //Sub Procedure
+ rc_getActorVelocityInLocalPoint( GETACTORVELOCITYINLOCALPOINT_ACTOR, GETACTORVELOCITYINLOCALPOINT_REL_X, GETACTORVELOCITYINLOCALPOINT_REL_Y, GETACTORVELOCITYINLOCALPOINT_REL_Z, &GETACTORVELOCITYINLOCALPOINT_X, &GETACTORVELOCITYINLOCALPOINT_Y, &GETACTORVELOCITYINLOCALPOINT_Z );
+ break;
+case FN_getActorLinearVelocityLocal: //Sub Procedure
+ rc_getActorLinearVelocityLocal( GETACTORLINEARVELOCITYLOCAL_ACTOR, &GETACTORLINEARVELOCITYLOCAL_X, &GETACTORLINEARVELOCITYLOCAL_Y, &GETACTORLINEARVELOCITYLOCAL_Z );
+ break;
+case FN_getActorAngularVelocityLocal: //Sub Procedure
+ rc_getActorAngularVelocityLocal( GETACTORANGULARVELOCITYLOCAL_ACTOR, &GETACTORANGULARVELOCITYLOCAL_X, &GETACTORANGULARVELOCITYLOCAL_Y, &GETACTORANGULARVELOCITYLOCAL_Z );
+ break;
+case FN_getActorAABB: //Sub Procedure
+ rc_getActorAABB( GETACTORAABB_ACTOR, &GETACTORAABB_MIN_X, &GETACTORAABB_MIN_Y, &GETACTORAABB_MIN_Z, &GETACTORAABB_MAX_X, &GETACTORAABB_MAX_Y, &GETACTORAABB_MAX_Z );
+ break;
+case FN_computeActorImpulseDenominator: //Number Function
+ rc_push_num(rc_computeActorImpulseDenominator( COMPUTEACTORIMPULSEDENOMINATOR_ACTOR, COMPUTEACTORIMPULSEDENOMINATOR_POS_X, COMPUTEACTORIMPULSEDENOMINATOR_POS_Y, COMPUTEACTORIMPULSEDENOMINATOR_POS_Z, COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_X, COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_Y, COMPUTEACTORIMPULSEDENOMINATOR_NORMAL_Z ));
+ break;
+case FN_computeActorAngularImpulseDenominator: //Number Function
+ rc_push_num(rc_computeActorAngularImpulseDenominator( COMPUTEACTORANGULARIMPULSEDENOMINATOR_ACTOR, COMPUTEACTORANGULARIMPULSEDENOMINATOR_X, COMPUTEACTORANGULARIMPULSEDENOMINATOR_Y, COMPUTEACTORANGULARIMPULSEDENOMINATOR_Z ));
+ break;
+case FN_setActorAngularFactor: //Sub Procedure
+ rc_setActorAngularFactor( SETACTORANGULARFACTOR_ACTOR, SETACTORANGULARFACTOR_X, SETACTORANGULARFACTOR_Y, SETACTORANGULARFACTOR_Z );
+ break;
+case FN_getActorAngularFactor: //Sub Procedure
+ rc_getActorAngularFactor( GETACTORANGULARFACTOR_ACTOR, &GETACTORANGULARFACTOR_X, &GETACTORANGULARFACTOR_Y, &GETACTORANGULARFACTOR_Z );
+ break;
+case FN_computeActorGyroImpulseLocal: //Sub Procedure
+ rc_computeActorGyroImpulseLocal( COMPUTEACTORGYROIMPULSELOCAL_ACTOR, COMPUTEACTORGYROIMPULSELOCAL_DT, &COMPUTEACTORGYROIMPULSELOCAL_X, &COMPUTEACTORGYROIMPULSELOCAL_Y, &COMPUTEACTORGYROIMPULSELOCAL_Z );
+ break;
+case FN_computeActorGyroImpulseWorld: //Sub Procedure
+ rc_computeActorGyroImpulseWorld( COMPUTEACTORGYROIMPULSEWORLD_ACTOR, COMPUTEACTORGYROIMPULSEWORLD_DT, &COMPUTEACTORGYROIMPULSEWORLD_X, &COMPUTEACTORGYROIMPULSEWORLD_Y, &COMPUTEACTORGYROIMPULSEWORLD_Z );
+ break;
+case FN_getActorLocalInertia: //Sub Procedure
+ rc_getActorLocalInertia( GETACTORLOCALINERTIA_ACTOR, &GETACTORLOCALINERTIA_X, &GETACTORLOCALINERTIA_Y, &GETACTORLOCALINERTIA_Z );
+ break;
+case FN_SetActorSleepState: //Sub Procedure
+ rc_setActorSleepState( SETACTORSLEEPSTATE_ACTOR, SETACTORSLEEPSTATE_STATE );
+ break;
+case FN_createPointConstraint: //Number Function
+ rc_push_num(rc_createPointConstraint( CREATEPOINTCONSTRAINT_ACTORA, CREATEPOINTCONSTRAINT_PXA, CREATEPOINTCONSTRAINT_PYA, CREATEPOINTCONSTRAINT_PZA ));
+ break;
+case FN_createPointConstraintEx: //Number Function
+ rc_push_num(rc_createPointConstraintEx( CREATEPOINTCONSTRAINTEX_ACTORA, CREATEPOINTCONSTRAINTEX_ACTORB, CREATEPOINTCONSTRAINTEX_PXA, CREATEPOINTCONSTRAINTEX_PYA, CREATEPOINTCONSTRAINTEX_PZA, CREATEPOINTCONSTRAINTEX_PXB, CREATEPOINTCONSTRAINTEX_PYB, CREATEPOINTCONSTRAINTEX_PZB ));
+ break;
+case FN_setPointPivotA: //Sub Procedure
+ rc_setPointPivotA( SETPOINTPIVOTA_CONSTRAINT_ID, SETPOINTPIVOTA_X, SETPOINTPIVOTA_Y, SETPOINTPIVOTA_Z );
+ break;
+case FN_setPointPivotB: //Sub Procedure
+ rc_setPointPivotB( SETPOINTPIVOTB_CONSTRAINT_ID, SETPOINTPIVOTB_X, SETPOINTPIVOTB_Y, SETPOINTPIVOTB_Z );
+ break;
+case FN_createHingeConstraint: //Number Function
+ rc_push_num(rc_createHingeConstraint( CREATEHINGECONSTRAINT_ACTORA, CREATEHINGECONSTRAINT_FRAMEA, CREATEHINGECONSTRAINT_USEREFERENCEFRAMEA ));
+ break;
+case FN_createHingeConstraintEx: //Number Function
+ rc_push_num(rc_createHingeConstraintEx( CREATEHINGECONSTRAINTEX_ACTORA, CREATEHINGECONSTRAINTEX_ACTORB, CREATEHINGECONSTRAINTEX_FRAMEA, CREATEHINGECONSTRAINTEX_FRAMEB, CREATEHINGECONSTRAINTEX_USEREFERENCEFRAMEA ));
+ break;
+case FN_createSlideConstraint: //Number Function
+ rc_push_num(rc_createSlideConstraint( CREATESLIDECONSTRAINT_ACTORA, CREATESLIDECONSTRAINT_FRAMEINB_MATRIX, CREATESLIDECONSTRAINT_USELINEARREFERENCEFRAMEA ));
+ break;
+case FN_createSlideConstraintEx: //Number Function
+ rc_push_num(rc_createSlideConstraintEx( CREATESLIDECONSTRAINTEX_ACTORA, CREATESLIDECONSTRAINTEX_ACTORB, CREATESLIDECONSTRAINTEX_FRAMEINA_MATRIX, CREATESLIDECONSTRAINTEX_FRAMEINB_MATRIX, CREATESLIDECONSTRAINTEX_USELINEARREFERENCEFRAMEA ));
+ break;
+case FN_createConeConstraint: //Number Function
+ rc_push_num(rc_createConeConstraint( CREATECONECONSTRAINT_ACTORA, CREATECONECONSTRAINT_RBAFRAME_MATRIX ));
+ break;
+case FN_createConeConstraintEx: //Number Function
+ rc_push_num(rc_createConeConstraintEx( CREATECONECONSTRAINTEX_ACTORA, CREATECONECONSTRAINTEX_ACTORB, CREATECONECONSTRAINTEX_RBAFRAME_MATRIX, CREATECONECONSTRAINTEX_RBBFRAME_MATRIX ));
+ break;
+case FN_deleteConstraint: //Sub Procedure
+ rc_deleteConstraint( DELETECONSTRAINT_CONSTRAINT_ID );
+ break;
+case FN_getConstraintFrameOffsetA: //Sub Procedure
+ rc_getConstraintFrameOffsetA( GETCONSTRAINTFRAMEOFFSETA_CONSTRAINT_ID, & GETCONSTRAINTFRAMEOFFSETA_X, & GETCONSTRAINTFRAMEOFFSETA_Y, & GETCONSTRAINTFRAMEOFFSETA_Z, & GETCONSTRAINTFRAMEOFFSETA_RX, & GETCONSTRAINTFRAMEOFFSETA_RY, & GETCONSTRAINTFRAMEOFFSETA_RZ );
+ break;
+case FN_getConstraintFrameOffsetB: //Sub Procedure
+ rc_getConstraintFrameOffsetB( GETCONSTRAINTFRAMEOFFSETB_CONSTRAINT_ID, & GETCONSTRAINTFRAMEOFFSETB_X, & GETCONSTRAINTFRAMEOFFSETB_Y, & GETCONSTRAINTFRAMEOFFSETB_Z, & GETCONSTRAINTFRAMEOFFSETB_RX, & GETCONSTRAINTFRAMEOFFSETB_RY, & GETCONSTRAINTFRAMEOFFSETB_RZ );
+ break;
+case FN_useConstraintFrameOffset: //Sub Procedure
+ rc_useConstraintFrameOffset( USECONSTRAINTFRAMEOFFSET_CONSTRAINT_ID, USECONSTRAINTFRAMEOFFSET_FLAG );
+ break;
+case FN_getHingeAngle: //Number Function
+ rc_push_num(rc_getHingeAngle( GETHINGEANGLE_CONSTRAINT_ID ));
+ break;
+case FN_getHingeAngleEx: //Number Function
+ rc_push_num(rc_getHingeAngleEx( GETHINGEANGLEEX_CONSTRAINT_ID, GETHINGEANGLEEX_T_MATRIXA, GETHINGEANGLEEX_T_MATRIXB ));
+ break;
+case FN_getConstraintBreakingImpulseThreshold: //Number Function
+ rc_push_num(rc_getConstraintBreakingImpulseThreshold( GETCONSTRAINTBREAKINGIMPULSETHRESHOLD_CONSTRAINT_ID ));
+ break;
+case FN_getConstraintAFrame: //Number Function
+ rc_push_num(rc_getConstraintAFrame( GETCONSTRAINTAFRAME_CONSTRAINT_ID, GETCONSTRAINTAFRAME_MA ));
+ break;
+case FN_getConstraintBFrame: //Number Function
+ rc_push_num(rc_getConstraintBFrame( GETCONSTRAINTBFRAME_CONSTRAINT_ID, GETCONSTRAINTBFRAME_MA ));
+ break;
+case FN_setHingeAxis: //Sub Procedure
+ rc_setHingeAxis( SETHINGEAXIS_CONSTRAINT_ID, SETHINGEAXIS_X, SETHINGEAXIS_Y, SETHINGEAXIS_Z );
+ break;
+case FN_setConstraintBreakingImpulseThreshold: //Sub Procedure
+ rc_setConstraintBreakingImpulseThreshold( SETCONSTRAINTBREAKINGIMPULSETHRESHOLD_CONSTRAINT_ID, SETCONSTRAINTBREAKINGIMPULSETHRESHOLD_THRESHOLD );
+ break;
+case FN_setConstraintFrames: //Sub Procedure
+ rc_setConstraintFrames( SETCONSTRAINTFRAMES_CONSTRAINT_ID, SETCONSTRAINTFRAMES_FRAMEA_MATRIX, SETCONSTRAINTFRAMES_FRAMEB_MATRIX );
+ break;
+case FN_setHingeLimit: //Sub Procedure
+ rc_setHingeLimit( SETHINGELIMIT_CONSTRAINT_ID, SETHINGELIMIT_LOW, SETHINGELIMIT_HIGH, SETHINGELIMIT_SOFTNESS, SETHINGELIMIT_BIAS_FACTOR, SETHINGELIMIT_RELAXATION_FACTOR );
+ break;
+case FN_setConeLimit: //Sub Procedure
+ rc_setConeLimit( SETCONELIMIT_CONSTRAINT_ID, SETCONELIMIT_SWINGSPAN1, SETCONELIMIT_SWINGSPAN2, SETCONELIMIT_TWISTSPAN, SETCONELIMIT_SOFTNESS, SETCONELIMIT_BIAS_FACTOR, SETCONELIMIT_RELAXATION_FACTOR );
+ break;
+case FN_getHingeLimitBiasFactor: //Number Function
+ rc_push_num(rc_getHingeLimitBiasFactor( GETHINGELIMITBIASFACTOR_CONSTRAINT_ID ));
+ break;
+case FN_getHingeLimitRelaxationFactor: //Number Function
+ rc_push_num(rc_getHingeLimitRelaxationFactor( GETHINGELIMITRELAXATIONFACTOR_CONSTRAINT_ID ));
+ break;
+case FN_getHingeLimitSign: //Number Function
+ rc_push_num(rc_getHingeLimitSign( GETHINGELIMITSIGN_CONSTRAINT_ID ));
+ break;
+case FN_getHingeSolveLimit: //Number Function
+ rc_push_num(rc_getHingeSolveLimit( GETHINGESOLVELIMIT_CONSTRAINT_ID ));
+ break;
+case FN_useHingeReferenceFrameA: //Sub Procedure
+ rc_useHingeReferenceFrameA( USEHINGEREFERENCEFRAMEA_CONSTRAINT_ID, USEHINGEREFERENCEFRAMEA_FLAG );
+ break;
+case FN_getConstraintAppliedImpulse: //Number Function
+ rc_push_num(rc_getConstraintAppliedImpulse( GETCONSTRAINTAPPLIEDIMPULSE_CONSTRAINT_ID ));
+ break;
+case FN_getConstraintFixedActor: //Number Function
+ rc_push_num(rc_getConstraintFixedActor( GETCONSTRAINTFIXEDACTOR_CONSTRAINT_ID ));
+ break;
+case FN_getPointPivotA: //Sub Procedure
+ rc_getPointPivotA( GETPOINTPIVOTA_CONSTRAINT_ID, & GETPOINTPIVOTA_X, & GETPOINTPIVOTA_Y, & GETPOINTPIVOTA_Z );
+ break;
+case FN_getPointPivotB: //Sub Procedure
+ rc_getPointPivotB( GETPOINTPIVOTB_CONSTRAINT_ID, & GETPOINTPIVOTB_X, & GETPOINTPIVOTB_Y, & GETPOINTPIVOTB_Z );
+ break;
+case FN_getConstraintActorA: //Number Function
+ rc_push_num(rc_getConstraintActorA( GETCONSTRAINTACTORA_CONSTRAINT_ID ));
+ break;
+case FN_getConstraintActorB: //Number Function
+ rc_push_num(rc_getConstraintActorB( GETCONSTRAINTACTORB_CONSTRAINT_ID ));
+ break;
+case FN_setConstraintSolverIterations: //Sub Procedure
+ rc_setConstraintSolverIterations( SETCONSTRAINTSOLVERITERATIONS_CONSTRAINT_ID, SETCONSTRAINTSOLVERITERATIONS_NUM );
+ break;
+case FN_getConeBiasFactor: //Number Function
+ rc_push_num(rc_getConeBiasFactor( GETCONEBIASFACTOR_CONSTRAINT_ID ));
+ break;
+case FN_getConeDamping: //Number Function
+ rc_push_num(rc_getConeDamping( GETCONEDAMPING_CONSTRAINT_ID ));
+ break;
+case FN_getConeFixThresh: //Number Function
+ rc_push_num(rc_getConeFixThresh( GETCONEFIXTHRESH_CONSTRAINT_ID ));
+ break;
+case FN_getConeLimit: //Number Function
+ rc_push_num(rc_getConeLimit( GETCONELIMIT_CONSTRAINT_ID, GETCONELIMIT_LIMIT_INDEX ));
+ break;
+case FN_getConstraintLimitSoftness: //Number Function
+ rc_push_num(rc_getConstraintLimitSoftness( GETCONSTRAINTLIMITSOFTNESS_CONSTRAINT_ID ));
+ break;
+case FN_getConstraintSolverIterations: //Number Function
+ rc_push_num(rc_getConstraintSolverIterations( GETCONSTRAINTSOLVERITERATIONS_CONSTRAINT_ID ));
+ break;
+case FN_getConeAnglePoint: //Sub Procedure
+ rc_getConeAnglePoint( GETCONEANGLEPOINT_CONSTRAINT_ID, GETCONEANGLEPOINT_ANGLE, GETCONEANGLEPOINT_C_LEN, & GETCONEANGLEPOINT_X, & GETCONEANGLEPOINT_Y, & GETCONEANGLEPOINT_Z );
+ break;
+case FN_getConstraintAngularOnly: //Number Function
+ rc_push_num(rc_getConstraintAngularOnly( GETCONSTRAINTANGULARONLY_CONSTRAINT_ID ));
+ break;
+case FN_getConeSolveSwingLimit: //Number Function
+ rc_push_num(rc_getConeSolveSwingLimit( GETCONESOLVESWINGLIMIT_CONSTRAINT_ID ));
+ break;
+case FN_getConeSolveTwistLimit: //Number Function
+ rc_push_num(rc_getConeSolveTwistLimit( GETCONESOLVETWISTLIMIT_CONSTRAINT_ID ));
+ break;
+case FN_getConeSwingSpan1: //Number Function
+ rc_push_num(rc_getConeSwingSpan1( GETCONESWINGSPAN1_CONSTRAINT_ID ));
+ break;
+case FN_getConeSwingSpan2: //Number Function
+ rc_push_num(rc_getConeSwingSpan2( GETCONESWINGSPAN2_CONSTRAINT_ID ));
+ break;
+case FN_getConeTwistAngle: //Number Function
+ rc_push_num(rc_getConeTwistAngle( GETCONETWISTANGLE_CONSTRAINT_ID ));
+ break;
+case FN_getConeTwistLimitSign: //Number Function
+ rc_push_num(rc_getConeTwistLimitSign( GETCONETWISTLIMITSIGN_CONSTRAINT_ID ));
+ break;
+case FN_getConeTwistSpan: //Number Function
+ rc_push_num(rc_getConeTwistSpan( GETCONETWISTSPAN_CONSTRAINT_ID ));
+ break;
+case FN_setConstraintAngularOnly: //Sub Procedure
+ rc_setConstraintAngularOnly( SETCONSTRAINTANGULARONLY_CONSTRAINT_ID, SETCONSTRAINTANGULARONLY_FLAG );
+ break;
+case FN_setConeDamping: //Sub Procedure
+ rc_setConeDamping( SETCONEDAMPING_CONSTRAINT_ID, SETCONEDAMPING_DAMPING );
+ break;
+case FN_setConeFixThresh: //Sub Procedure
+ rc_setConeFixThresh( SETCONEFIXTHRESH_CONSTRAINT_ID, SETCONEFIXTHRESH_FIXTHRESH );
+ break;
+case FN_getSlideAnchorA: //Sub Procedure
+ rc_getSlideAnchorA( GETSLIDEANCHORA_CONSTRAINT_ID, & GETSLIDEANCHORA_X, & GETSLIDEANCHORA_Y, & GETSLIDEANCHORA_Z );
+ break;
+case FN_getSlideAnchorB: //Sub Procedure
+ rc_getSlideAnchorB( GETSLIDEANCHORB_CONSTRAINT_ID, & GETSLIDEANCHORB_X, & GETSLIDEANCHORB_Y, & GETSLIDEANCHORB_Z );
+ break;
+case FN_getSlideAngDepth: //Number Function
+ rc_push_num(rc_getSlideAngDepth( GETSLIDEANGDEPTH_CONSTRAINT_ID ));
+ break;
+case FN_getSlideAngularPos: //Number Function
+ rc_push_num(rc_getSlideAngularPos( GETSLIDEANGULARPOS_CONSTRAINT_ID ));
+ break;
+case FN_getSlideDampingDirAng: //Number Function
+ rc_push_num(rc_getSlideDampingDirAng( GETSLIDEDAMPINGDIRANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideDampingDirLin: //Number Function
+ rc_push_num(rc_getSlideDampingDirLin( GETSLIDEDAMPINGDIRLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideDampingLimAng: //Number Function
+ rc_push_num(rc_getSlideDampingLimAng( GETSLIDEDAMPINGLIMANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideDampingLimLin: //Number Function
+ rc_push_num(rc_getSlideDampingLimLin( GETSLIDEDAMPINGLIMLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideDampingOrthoAng: //Number Function
+ rc_push_num(rc_getSlideDampingOrthoAng( GETSLIDEDAMPINGORTHOANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideDampingOrthoLin: //Number Function
+ rc_push_num(rc_getSlideDampingOrthoLin( GETSLIDEDAMPINGORTHOLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideLinearPos: //Number Function
+ rc_push_num(rc_getSlideLinearPos( GETSLIDELINEARPOS_CONSTRAINT_ID ));
+ break;
+case FN_getSlideLinDepth: //Number Function
+ rc_push_num(rc_getSlideLinDepth( GETSLIDELINDEPTH_CONSTRAINT_ID ));
+ break;
+case FN_getSlideLowerAngLimit: //Number Function
+ rc_push_num(rc_getSlideLowerAngLimit( GETSLIDELOWERANGLIMIT_CONSTRAINT_ID ));
+ break;
+case FN_getSlideLowerLinLimit: //Number Function
+ rc_push_num(rc_getSlideLowerLinLimit( GETSLIDELOWERLINLIMIT_CONSTRAINT_ID ));
+ break;
+case FN_getSlideRestitutionDirAng: //Number Function
+ rc_push_num(rc_getSlideRestitutionDirAng( GETSLIDERESTITUTIONDIRANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideRestitutionDirLin: //Number Function
+ rc_push_num(rc_getSlideRestitutionDirLin( GETSLIDERESTITUTIONDIRLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideRestitutionLimAng: //Number Function
+ rc_push_num(rc_getSlideRestitutionLimAng( GETSLIDERESTITUTIONLIMANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideRestitutionLimLin: //Number Function
+ rc_push_num(rc_getSlideRestitutionLimLin( GETSLIDERESTITUTIONLIMLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideRestitutionOrthoAng: //Number Function
+ rc_push_num(rc_getSlideRestitutionOrthoAng( GETSLIDERESTITUTIONORTHOANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideRestitutionOrthoLin: //Number Function
+ rc_push_num(rc_getSlideRestitutionOrthoLin( GETSLIDERESTITUTIONORTHOLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideSoftnessDirAng: //Number Function
+ rc_push_num(rc_getSlideSoftnessDirAng( GETSLIDESOFTNESSDIRANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideSoftnessDirLin: //Number Function
+ rc_push_num(rc_getSlideSoftnessDirLin( GETSLIDESOFTNESSDIRLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideSoftnessLimAng: //Number Function
+ rc_push_num(rc_getSlideSoftnessLimAng( GETSLIDESOFTNESSLIMANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideSoftnessLimLin: //Number Function
+ rc_push_num(rc_getSlideSoftnessLimLin( GETSLIDESOFTNESSLIMLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideSoftnessOrthoAng: //Number Function
+ rc_push_num(rc_getSlideSoftnessOrthoAng( GETSLIDESOFTNESSORTHOANG_CONSTRAINT_ID ));
+ break;
+case FN_getSlideSoftnessOrthoLin: //Number Function
+ rc_push_num(rc_getSlideSoftnessOrthoLin( GETSLIDESOFTNESSORTHOLIN_CONSTRAINT_ID ));
+ break;
+case FN_getSlideSolveAngLimit: //Number Function
+ rc_push_num(rc_getSlideSolveAngLimit( GETSLIDESOLVEANGLIMIT_CONSTRAINT_ID ));
+ break;
+case FN_getSlideSolveLinLimit: //Number Function
+ rc_push_num(rc_getSlideSolveLinLimit( GETSLIDESOLVELINLIMIT_CONSTRAINT_ID ));
+ break;
+case FN_getSlideUpperAngLimit: //Number Function
+ rc_push_num(rc_getSlideUpperAngLimit( GETSLIDEUPPERANGLIMIT_CONSTRAINT_ID ));
+ break;
+case FN_getSlideUpperLinLimit: //Number Function
+ rc_push_num(rc_getSlideUpperLinLimit( GETSLIDEUPPERLINLIMIT_CONSTRAINT_ID ));
+ break;
+case FN_getSlideUseFrameOffset: //Number Function
+ rc_push_num(rc_getSlideUseFrameOffset( GETSLIDEUSEFRAMEOFFSET_CONSTRAINT_ID ));
+ break;
+case FN_setSlideDampingDirAng: //Sub Procedure
+ rc_setSlideDampingDirAng( SETSLIDEDAMPINGDIRANG_CONSTRAINT_ID, SETSLIDEDAMPINGDIRANG_N );
+ break;
+case FN_setSlideDampingDirLin: //Sub Procedure
+ rc_setSlideDampingDirLin( SETSLIDEDAMPINGDIRLIN_CONSTRAINT_ID, SETSLIDEDAMPINGDIRLIN_N );
+ break;
+case FN_setSlideDampingLimAng: //Sub Procedure
+ rc_setSlideDampingLimAng( SETSLIDEDAMPINGLIMANG_CONSTRAINT_ID, SETSLIDEDAMPINGLIMANG_N );
+ break;
+case FN_setSlideDampingLimLin: //Sub Procedure
+ rc_setSlideDampingLimLin( SETSLIDEDAMPINGLIMLIN_CONSTRAINT_ID, SETSLIDEDAMPINGLIMLIN_N );
+ break;
+case FN_setSlideDampingOrthoAng: //Sub Procedure
+ rc_setSlideDampingOrthoAng( SETSLIDEDAMPINGORTHOANG_CONSTRAINT_ID, SETSLIDEDAMPINGORTHOANG_N );
+ break;
+case FN_setSlideDampingOrthoLin: //Sub Procedure
+ rc_setSlideDampingOrthoLin( SETSLIDEDAMPINGORTHOLIN_CONSTRAINT_ID, SETSLIDEDAMPINGORTHOLIN_N );
+ break;
+case FN_setSlideLowerAngLimit: //Sub Procedure
+ rc_setSlideLowerAngLimit( SETSLIDELOWERANGLIMIT_CONSTRAINT_ID, SETSLIDELOWERANGLIMIT_N );
+ break;
+case FN_setSlideLowerLinLimit: //Sub Procedure
+ rc_setSlideLowerLinLimit( SETSLIDELOWERLINLIMIT_CONSTRAINT_ID, SETSLIDELOWERLINLIMIT_N );
+ break;
+case FN_setSlideRestitutionDirAng: //Sub Procedure
+ rc_setSlideRestitutionDirAng( SETSLIDERESTITUTIONDIRANG_CONSTRAINT_ID, SETSLIDERESTITUTIONDIRANG_N );
+ break;
+case FN_setSlideRestitutionDirLin: //Sub Procedure
+ rc_setSlideRestitutionDirLin( SETSLIDERESTITUTIONDIRLIN_CONSTRAINT_ID, SETSLIDERESTITUTIONDIRLIN_N );
+ break;
+case FN_setSlideRestitutionLimAng: //Sub Procedure
+ rc_setSlideRestitutionLimAng( SETSLIDERESTITUTIONLIMANG_CONSTRAINT_ID, SETSLIDERESTITUTIONLIMANG_N );
+ break;
+case FN_setSlideRestitutionLimLin: //Sub Procedure
+ rc_setSlideRestitutionLimLin( SETSLIDERESTITUTIONLIMLIN_CONSTRAINT_ID, SETSLIDERESTITUTIONLIMLIN_N );
+ break;
+case FN_setSlideRestitutionOrthoAng: //Sub Procedure
+ rc_setSlideRestitutionOrthoAng( SETSLIDERESTITUTIONORTHOANG_CONSTRAINT_ID, SETSLIDERESTITUTIONORTHOANG_N );
+ break;
+case FN_setSlideRestitutionOrthoLin: //Sub Procedure
+ rc_setSlideRestitutionOrthoLin( SETSLIDERESTITUTIONORTHOLIN_CONSTRAINT_ID, SETSLIDERESTITUTIONORTHOLIN_N );
+ break;
+case FN_setSlideSoftnessDirAng: //Sub Procedure
+ rc_setSlideSoftnessDirAng( SETSLIDESOFTNESSDIRANG_CONSTRAINT_ID, SETSLIDESOFTNESSDIRANG_N );
+ break;
+case FN_setSlideSoftnessDirLin: //Sub Procedure
+ rc_setSlideSoftnessDirLin( SETSLIDESOFTNESSDIRLIN_CONSTRAINT_ID, SETSLIDESOFTNESSDIRLIN_N );
+ break;
+case FN_setSlideSoftnessLimAng: //Sub Procedure
+ rc_setSlideSoftnessLimAng( SETSLIDESOFTNESSLIMANG_CONSTRAINT_ID, SETSLIDESOFTNESSLIMANG_N );
+ break;
+case FN_setSlideSoftnessLimLin: //Sub Procedure
+ rc_setSlideSoftnessLimLin( SETSLIDESOFTNESSLIMLIN_CONSTRAINT_ID, SETSLIDESOFTNESSLIMLIN_N );
+ break;
+case FN_setSlideSoftnessOrthoAng: //Sub Procedure
+ rc_setSlideSoftnessOrthoAng( SETSLIDESOFTNESSORTHOANG_CONSTRAINT_ID, SETSLIDESOFTNESSORTHOANG_N );
+ break;
+case FN_setSlideSoftnessOrthoLin: //Sub Procedure
+ rc_setSlideSoftnessOrthoLin( SETSLIDESOFTNESSORTHOLIN_CONSTRAINT_ID, SETSLIDESOFTNESSORTHOLIN_N );
+ break;
+case FN_setSlideUpperAngLimit: //Sub Procedure
+ rc_setSlideUpperAngLimit( SETSLIDEUPPERANGLIMIT_CONSTRAINT_ID, SETSLIDEUPPERANGLIMIT_N );
+ break;
+case FN_setSlideUpperLinLimit: //Sub Procedure
+ rc_setSlideUpperLinLimit( SETSLIDEUPPERLINLIMIT_CONSTRAINT_ID, SETSLIDEUPPERLINLIMIT_N );
+ break;
+case FN_ConstraintExists: //Number Function
+ rc_push_num(rc_constraintExists( CONSTRAINTEXISTS_CONSTRAINT_ID ));
+ break;
+case FN_SetCameraPosition: //Sub Procedure
+ rc_setCameraPosition( SETCAMERAPOSITION_X, SETCAMERAPOSITION_Y, SETCAMERAPOSITION_Z );
+ break;
+case FN_GetCameraPosition: //Sub Procedure
+ rc_getCameraPosition( &GETCAMERAPOSITION_X, &GETCAMERAPOSITION_Y, &GETCAMERAPOSITION_Z );
+ break;
+case FN_TranslateCamera: //Sub Procedure
+ rc_translateCamera( TRANSLATECAMERA_X, TRANSLATECAMERA_Y, TRANSLATECAMERA_Z );
+ break;
+case FN_SetCameraRotation: //Sub Procedure
+ rc_setCameraRotation( SETCAMERAROTATION_X, SETCAMERAROTATION_Y, SETCAMERAROTATION_Z );
+ break;
+case FN_GetCameraRotation: //Sub Procedure
+ rc_getCameraRotation( &GETCAMERAROTATION_X, &GETCAMERAROTATION_Y, &GETCAMERAROTATION_Z );
+ break;
+case FN_RotateCamera: //Sub Procedure
+ rc_rotateCamera( ROTATECAMERA_X, ROTATECAMERA_Y, ROTATECAMERA_Z );
+ break;
+case FN_SetCameraFOV: //Sub Procedure
+ rc_setCameraFOV( SETCAMERAFOV_FOV );
+ break;
+case FN_GetCameraFOV: //Number Function
+ rc_push_num(rc_getCameraFOV( ));
+ break;
+case FN_SetCameraAspectRatio: //Sub Procedure
+ rc_setCameraAspectRatio( SETCAMERAASPECTRATIO_ASPECT );
+ break;
+case FN_GetCameraAspectRatio: //Number Function
+ rc_push_num(rc_getCameraAspectRatio( ));
+ break;
+case FN_SetCameraFarValue: //Sub Procedure
+ rc_setCameraFarValue( SETCAMERAFARVALUE_ZF );
+ break;
+case FN_GetCameraFarValue: //Number Function
+ rc_push_num(rc_getCameraFarValue( ));
+ break;
+case FN_SetCameraNearValue: //Sub Procedure
+ rc_setCameraNearValue( SETCAMERANEARVALUE_ZN );
+ break;
+case FN_GetCameraNearValue: //Number Function
+ rc_push_num(rc_getCameraNearValue( ));
+ break;
+case FN_SetProjectionMatrix: //Sub Procedure
+ rc_setProjectionMatrix( SETPROJECTIONMATRIX_MATA, SETPROJECTIONMATRIX_PROJECTION_TYPE );
+ break;
+case FN_GetProjectionMatrix: //Sub Procedure
+ rc_getProjectionMatrix( GETPROJECTIONMATRIX_MATA );
+ break;
+case FN_GetWorldToViewportPosition: //Sub Procedure
+ rc_getWorldToViewportPosition( GETWORLDTOVIEWPORTPOSITION_X, GETWORLDTOVIEWPORTPOSITION_Y, GETWORLDTOVIEWPORTPOSITION_Z, &GETWORLDTOVIEWPORTPOSITION_VX, &GETWORLDTOVIEWPORTPOSITION_VY );
+ break;
+case FN_AddSceneSkyBox: //Sub Procedure
+ rc_addSceneSkyBox( ADDSCENESKYBOX_IMG_TOP, ADDSCENESKYBOX_IMG_BOTTOM, ADDSCENESKYBOX_IMG_LEFT, ADDSCENESKYBOX_IMG_RIGHT, ADDSCENESKYBOX_IMG_FRONT, ADDSCENESKYBOX_IMG_BACK );
+ break;
+case FN_AddSceneSkyDome: //Sub Procedure
+ rc_addSceneSkyDome( ADDSCENESKYDOME_IMG );
+ break;
+case FN_AddSceneSkyDomeEx: //Sub Procedure
+ rc_addSceneSkyDomeEx( ADDSCENESKYDOMEEX_IMG, ADDSCENESKYDOMEEX_HORIRES, ADDSCENESKYDOMEEX_VERTRES, ADDSCENESKYDOMEEX_TXPERCENTAGE, ADDSCENESKYDOMEEX_SPHEREPERCENTAGE, ADDSCENESKYDOMEEX_RADIUS );
+ break;
+case FN_RemoveSceneSky: //Sub Procedure
+ rc_removeSceneSky( );
+ break;
+case FN_SetWorld3DMaxSubSteps: //Sub Procedure
+ rc_setWorld3DMaxSubSteps( SETWORLD3DMAXSUBSTEPS_STEPS );
+ break;
+case FN_SetWorld3DTimeStep: //Sub Procedure
+ rc_setWorld3DTimeStep( SETWORLD3DTIMESTEP_TS );
+ break;
+case FN_startParticleEmitter: //Sub Procedure
+ rc_startParticleEmitter( STARTPARTICLEEMITTER_ACTOR );
+ break;
+case FN_stopParticleEmitter: //Sub Procedure
+ rc_stopParticleEmitter( STOPPARTICLEEMITTER_ACTOR );
+ break;
+case FN_setParticleDirection: //Sub Procedure
+ rc_setParticleDirection( SETPARTICLEDIRECTION_ACTOR, SETPARTICLEDIRECTION_X, SETPARTICLEDIRECTION_Y, SETPARTICLEDIRECTION_Z );
+ break;
+case FN_getParticleDirection: //Sub Procedure
+ rc_getParticleDirection( GETPARTICLEDIRECTION_ACTOR, & GETPARTICLEDIRECTION_X, & GETPARTICLEDIRECTION_Y, & GETPARTICLEDIRECTION_Z );
+ break;
+case FN_useParticleEveryMeshVertex: //Sub Procedure
+ rc_useParticleEveryMeshVertex( USEPARTICLEEVERYMESHVERTEX_ACTOR, USEPARTICLEEVERYMESHVERTEX_FLAG );
+ break;
+case FN_particleIsUsingEveryMeshVertex: //Number Function
+ rc_push_num(rc_particleIsUsingEveryMeshVertex( PARTICLEISUSINGEVERYMESHVERTEX_ACTOR ));
+ break;
+case FN_setParticleNormalDirectionMod: //Sub Procedure
+ rc_setParticleNormalDirectionMod( SETPARTICLENORMALDIRECTIONMOD_ACTOR, SETPARTICLENORMALDIRECTIONMOD_ND_MOD );
+ break;
+case FN_getParticleNormalDirectionMod: //Number Function
+ rc_push_num(rc_getParticleNormalDirectionMod( GETPARTICLENORMALDIRECTIONMOD_ACTOR ));
+ break;
+case FN_useParticleNormalDirection: //Sub Procedure
+ rc_useParticleNormalDirection( USEPARTICLENORMALDIRECTION_ACTOR, USEPARTICLENORMALDIRECTION_FLAG );
+ break;
+case FN_particleIsUsingNormalDirection: //Number Function
+ rc_push_num(rc_particleIsUsingNormalDirection( PARTICLEISUSINGNORMALDIRECTION_ACTOR ));
+ break;
+case FN_setParticleMesh: //Sub Procedure
+ rc_setParticleMesh( SETPARTICLEMESH_ACTOR, SETPARTICLEMESH_MESH );
+ break;
+case FN_setMinParticlesPerSecond: //Sub Procedure
+ rc_setMinParticlesPerSecond( SETMINPARTICLESPERSECOND_ACTOR, SETMINPARTICLESPERSECOND_MINPARTICLESPERSECOND );
+ break;
+case FN_getMinParticlesPerSecond: //Number Function
+ rc_push_num(rc_getMinParticlesPerSecond( GETMINPARTICLESPERSECOND_ACTOR ));
+ break;
+case FN_setMaxParticlesPerSecond: //Sub Procedure
+ rc_setMaxParticlesPerSecond( SETMAXPARTICLESPERSECOND_ACTOR, SETMAXPARTICLESPERSECOND_MAXPARTICLESPERSECOND );
+ break;
+case FN_getMaxParticlesPerSecond: //Number Function
+ rc_push_num(rc_getMaxParticlesPerSecond( GETMAXPARTICLESPERSECOND_ACTOR ));
+ break;
+case FN_setParticleMinStartColor: //Sub Procedure
+ rc_setParticleMinStartColor( SETPARTICLEMINSTARTCOLOR_ACTOR, SETPARTICLEMINSTARTCOLOR_COLOR );
+ break;
+case FN_getParticleMinStartColor: //Number Function
+ rc_push_num(rc_getParticleMinStartColor( GETPARTICLEMINSTARTCOLOR_ACTOR ));
+ break;
+case FN_setParticleMaxStartColor: //Sub Procedure
+ rc_setParticleMaxStartColor( SETPARTICLEMAXSTARTCOLOR_ACTOR, SETPARTICLEMAXSTARTCOLOR_COLOR );
+ break;
+case FN_getParticleMaxStartColor: //Number Function
+ rc_push_num(rc_getParticleMaxStartColor( GETPARTICLEMAXSTARTCOLOR_ACTOR ));
+ break;
+case FN_setParticleMinLife: //Sub Procedure
+ rc_setParticleMinLife( SETPARTICLEMINLIFE_ACTOR, SETPARTICLEMINLIFE_MINLIFE );
+ break;
+case FN_getParticleMinLife: //Number Function
+ rc_push_num(rc_getParticleMinLife( GETPARTICLEMINLIFE_ACTOR ));
+ break;
+case FN_setParticleMaxLife: //Sub Procedure
+ rc_setParticleMaxLife( SETPARTICLEMAXLIFE_ACTOR, SETPARTICLEMAXLIFE_MAXLIFE );
+ break;
+case FN_getParticleMaxLife: //Number Function
+ rc_push_num(rc_getParticleMaxLife( GETPARTICLEMAXLIFE_ACTOR ));
+ break;
+case FN_setParticleMaxAngle: //Sub Procedure
+ rc_setParticleMaxAngle( SETPARTICLEMAXANGLE_ACTOR, SETPARTICLEMAXANGLE_MAXANGLE );
+ break;
+case FN_getParticleMaxAngle: //Number Function
+ rc_push_num(rc_getParticleMaxAngle( GETPARTICLEMAXANGLE_ACTOR ));
+ break;
+case FN_setParticleMinStartSize: //Sub Procedure
+ rc_setParticleMinStartSize( SETPARTICLEMINSTARTSIZE_ACTOR, SETPARTICLEMINSTARTSIZE_W, SETPARTICLEMINSTARTSIZE_H );
+ break;
+case FN_getParticleMinStartSize: //Sub Procedure
+ rc_getParticleMinStartSize( GETPARTICLEMINSTARTSIZE_ACTOR, & GETPARTICLEMINSTARTSIZE_W, & GETPARTICLEMINSTARTSIZE_H );
+ break;
+case FN_setParticleMaxStartSize: //Sub Procedure
+ rc_setParticleMaxStartSize( SETPARTICLEMAXSTARTSIZE_ACTOR, SETPARTICLEMAXSTARTSIZE_W, SETPARTICLEMAXSTARTSIZE_H );
+ break;
+case FN_getParticleMaxStartSize: //Sub Procedure
+ rc_getParticleMaxStartSize( GETPARTICLEMAXSTARTSIZE_ACTOR, & GETPARTICLEMAXSTARTSIZE_W, & GETPARTICLEMAXSTARTSIZE_H );
+ break;
+case FN_setParticleCenter: //Sub Procedure
+ rc_setParticleCenter( SETPARTICLECENTER_ACTOR, SETPARTICLECENTER_X, SETPARTICLECENTER_Y, SETPARTICLECENTER_Z );
+ break;
+case FN_getParticleCenter: //Sub Procedure
+ rc_getParticleCenter( GETPARTICLECENTER_ACTOR, & GETPARTICLECENTER_X, & GETPARTICLECENTER_Y, & GETPARTICLECENTER_Z );
+ break;
+case FN_setParticleRadius: //Sub Procedure
+ rc_setParticleRadius( SETPARTICLERADIUS_ACTOR, SETPARTICLERADIUS_RADIUS );
+ break;
+case FN_getParticleRadius: //Number Function
+ rc_push_num(rc_getParticleRadius( GETPARTICLERADIUS_ACTOR ));
+ break;
+case FN_setParticleRingThickness: //Sub Procedure
+ rc_setParticleRingThickness( SETPARTICLERINGTHICKNESS_ACTOR, SETPARTICLERINGTHICKNESS_RINGTHICKNESS );
+ break;
+case FN_getParticleRingThickness: //Number Function
+ rc_push_num(rc_getParticleRingThickness( GETPARTICLERINGTHICKNESS_ACTOR ));
+ break;
+case FN_setParticleBox: //Sub Procedure
+ rc_setParticleBox( SETPARTICLEBOX_ACTOR, SETPARTICLEBOX_MIN_X, SETPARTICLEBOX_MIN_Y, SETPARTICLEBOX_MIN_Z, SETPARTICLEBOX_MAX_X, SETPARTICLEBOX_MAX_Y, SETPARTICLEBOX_MAX_Z );
+ break;
+case FN_getParticleBox: //Sub Procedure
+ rc_getParticleBox( GETPARTICLEBOX_ACTOR, & GETPARTICLEBOX_MIN_X, & GETPARTICLEBOX_MIN_Y, & GETPARTICLEBOX_MIN_Z, & GETPARTICLEBOX_MAX_X, & GETPARTICLEBOX_MAX_Y, & GETPARTICLEBOX_MAX_Z );
+ break;
+case FN_setParticleNormal: //Sub Procedure
+ rc_setParticleNormal( SETPARTICLENORMAL_ACTOR, SETPARTICLENORMAL_X, SETPARTICLENORMAL_Y, SETPARTICLENORMAL_Z );
+ break;
+case FN_getParticleNormal: //Sub Procedure
+ rc_getParticleNormal( GETPARTICLENORMAL_ACTOR, & GETPARTICLENORMAL_X, & GETPARTICLENORMAL_Y, & GETPARTICLENORMAL_Z );
+ break;
+case FN_setParticleLength: //Sub Procedure
+ rc_setParticleLength( SETPARTICLELENGTH_ACTOR, SETPARTICLELENGTH_P_LEN );
+ break;
+case FN_getParticleLength: //Number Function
+ rc_push_num(rc_getParticleLength( GETPARTICLELENGTH_ACTOR ));
+ break;
+case FN_useParticleOutlineOnly: //Sub Procedure
+ rc_useParticleOutlineOnly( USEPARTICLEOUTLINEONLY_ACTOR, USEPARTICLEOUTLINEONLY_FLAG );
+ break;
+case FN_particleIsUsingOutlineOnly: //Number Function
+ rc_push_num(rc_particleIsUsingOutlineOnly( PARTICLEISUSINGOUTLINEONLY_ACTOR ));
+ break;
+case FN_getParticleType: //Number Function
+ rc_push_num(rc_getParticleType( GETPARTICLETYPE_ACTOR ));
+ break;
+case FN_lightIsCastingShadow: //Number Function
+ rc_push_num(rc_lightIsCastingShadow( LIGHTISCASTINGSHADOW_ACTOR ));
+ break;
+case FN_getLightType: //Number Function
+ rc_push_num(rc_getLightType( GETLIGHTTYPE_ACTOR ));
+ break;
+case FN_getLightRadius: //Number Function
+ rc_push_num(rc_getLightRadius( GETLIGHTRADIUS_ACTOR ));
+ break;
+case FN_setLightType: //Sub Procedure
+ rc_setLightType( SETLIGHTTYPE_ACTOR, SETLIGHTTYPE_LIGHT_TYPE );
+ break;
+case FN_setLightRadius: //Sub Procedure
+ rc_setLightRadius( SETLIGHTRADIUS_ACTOR, SETLIGHTRADIUS_RADIUS );
+ break;
+case FN_setLightShadowCast: //Sub Procedure
+ rc_setLightShadowCast( SETLIGHTSHADOWCAST_ACTOR, SETLIGHTSHADOWCAST_FLAG );
+ break;
+case FN_SetLightAmbientColor: //Sub Procedure
+ rc_setLightAmbientColor( SETLIGHTAMBIENTCOLOR_ACTOR, SETLIGHTAMBIENTCOLOR_COLOR );
+ break;
+case FN_GetLightAmbientColor: //Number Function
+ rc_push_num(rc_getLightAmbientColor( GETLIGHTAMBIENTCOLOR_ACTOR ));
+ break;
+case FN_SetLightAttenuation: //Sub Procedure
+ rc_setLightAttenuation( SETLIGHTATTENUATION_ACTOR, SETLIGHTATTENUATION_L_CONSTANT, SETLIGHTATTENUATION_L_LINEAR, SETLIGHTATTENUATION_L_QUADRATIC );
+ break;
+case FN_GetLightAttenuation: //Sub Procedure
+ rc_getLightAttenuation( GETLIGHTATTENUATION_ACTOR, &GETLIGHTATTENUATION_CONSTANT, &GETLIGHTATTENUATION_LINEAR, &GETLIGHTATTENUATION_QUADRATIC );
+ break;
+case FN_SetLightDiffuseColor: //Sub Procedure
+ rc_setLightDiffuseColor( SETLIGHTDIFFUSECOLOR_ACTOR, SETLIGHTDIFFUSECOLOR_COLOR );
+ break;
+case FN_GetLightDiffuseColor: //Number Function
+ rc_push_num(rc_getLightDiffuseColor( GETLIGHTDIFFUSECOLOR_ACTOR ));
+ break;
+case FN_SetLightFalloff: //Sub Procedure
+ rc_setLightFalloff( SETLIGHTFALLOFF_ACTOR, SETLIGHTFALLOFF_FALLOFF );
+ break;
+case FN_GetLightFalloff: //Number Function
+ rc_push_num(rc_getLightFalloff( GETLIGHTFALLOFF_ACTOR ));
+ break;
+case FN_SetLightInnerCone: //Sub Procedure
+ rc_setLightInnerCone( SETLIGHTINNERCONE_ACTOR, SETLIGHTINNERCONE_ANGLE );
+ break;
+case FN_GetLightInnerCone: //Number Function
+ rc_push_num(rc_getLightInnerCone( GETLIGHTINNERCONE_ACTOR ));
+ break;
+case FN_SetLightOuterCone: //Sub Procedure
+ rc_setLightOuterCone( SETLIGHTOUTERCONE_ACTOR, SETLIGHTOUTERCONE_ANGLE );
+ break;
+case FN_GetLightOuterCone: //Number Function
+ rc_push_num(rc_getLightOuterCone( GETLIGHTOUTERCONE_ACTOR ));
+ break;
+case FN_SetLightSpecularColor: //Sub Procedure
+ rc_setLightSpecularColor( SETLIGHTSPECULARCOLOR_ACTOR, SETLIGHTSPECULARCOLOR_COLOR );
+ break;
+case FN_GetLightSpecularColor: //Number Function
+ rc_push_num(rc_getLightSpecularColor( GETLIGHTSPECULARCOLOR_ACTOR ));
+ break;
+case FN_GetTerrainPatchAABB: //Sub Procedure
+ rc_getTerrainPatchAABB( GETTERRAINPATCHAABB_ACTOR, GETTERRAINPATCHAABB_PATCHX, GETTERRAINPATCHAABB_PATCHZ, &GETTERRAINPATCHAABB_MINX, &GETTERRAINPATCHAABB_MINY, &GETTERRAINPATCHAABB_MINZ, &GETTERRAINPATCHAABB_MAXX, &GETTERRAINPATCHAABB_MAXY, &GETTERRAINPATCHAABB_MAXZ );
+ break;
+case FN_GetTerrainPatchLOD: //Number Function
+ rc_push_num(rc_getTerrainPatchLOD( GETTERRAINPATCHLOD_ACTOR, GETTERRAINPATCHLOD_PATCHX, GETTERRAINPATCHLOD_PATCHZ ));
+ break;
+case FN_GetTerrainHeight: //Number Function
+ rc_push_num(rc_getTerrainHeight( GETTERRAINHEIGHT_ACTOR, GETTERRAINHEIGHT_PATCHX, GETTERRAINHEIGHT_PATCHZ ));
+ break;
+case FN_GetTerrainCenter: //Sub Procedure
+ rc_getTerrainCenter( GETTERRAINCENTER_ACTOR, &GETTERRAINCENTER_X, &GETTERRAINCENTER_Y, &GETTERRAINCENTER_Z );
+ break;
+case FN_SetTerrainLODDistance: //Sub Procedure
+ rc_setTerrainLODDistance( SETTERRAINLODDISTANCE_ACTOR, SETTERRAINLODDISTANCE_LOD, SETTERRAINLODDISTANCE_DISTANCE );
+ break;
+case FN_ScaleTerrainTexture: //Sub Procedure
+ rc_scaleTerrainTexture( SCALETERRAINTEXTURE_ACTOR, SCALETERRAINTEXTURE_SCALE, SCALETERRAINTEXTURE_SCALE2 );
+ break;
+case FN_SetTerrainCameraMovementDelta: //Sub Procedure
+ rc_setTerrainCameraMovementDelta( SETTERRAINCAMERAMOVEMENTDELTA_ACTOR, SETTERRAINCAMERAMOVEMENTDELTA_DELTA );
+ break;
+case FN_SetTerrainCameraRotationDelta: //Sub Procedure
+ rc_setTerrainCameraRotationDelta( SETTERRAINCAMERAROTATIONDELTA_ACTOR, SETTERRAINCAMERAROTATIONDELTA_DELTA );
+ break;
+case FN_SetTerrainPatchLOD: //Sub Procedure
+ rc_setTerrainPatchLOD( SETTERRAINPATCHLOD_ACTOR, SETTERRAINPATCHLOD_PATCHX, SETTERRAINPATCHLOD_PATCHZ, SETTERRAINPATCHLOD_LOD );
+ break;
+case FN_createMaterial: //Number Function
+ rc_push_num(rc_createMaterial( ));
+ break;
+case FN_deleteMaterial: //Sub Procedure
+ rc_deleteMaterial( DELETEMATERIAL_MATERIAL_ID );
+ break;
+case FN_setActorMaterial: //Sub Procedure
+ rc_setActorMaterial( SETACTORMATERIAL_ACTOR, SETACTORMATERIAL_MATERIAL_NUM, SETACTORMATERIAL_MATERIAL_ID );
+ break;
+case FN_getActorMaterial: //Number Function
+ rc_push_num(rc_getActorMaterial( GETACTORMATERIAL_ACTOR, GETACTORMATERIAL_MATERIAL_NUM ));
+ break;
+case FN_copyActorMaterial: //Number Function
+ rc_push_num(rc_copyActorMaterial( COPYACTORMATERIAL_ACTOR, COPYACTORMATERIAL_MATERIAL_NUM ));
+ break;
+case FN_copyMaterial: //Number Function
+ rc_push_num(rc_copyMaterial( COPYMATERIAL_SMATERIAL_ID ));
+ break;
+case FN_setMaterialTextureCanvas: //Sub Procedure
+ rc_setMaterialTextureCanvas( SETMATERIALTEXTURECANVAS_MATERIAL_ID, SETMATERIALTEXTURECANVAS_LEVEL, SETMATERIALTEXTURECANVAS_CANVAS_ID );
+ break;
+case FN_setMaterialAmbientColor: //Sub Procedure
+ rc_setMaterialAmbientColor( SETMATERIALAMBIENTCOLOR_MATERIAL_ID, SETMATERIALAMBIENTCOLOR_COLOR );
+ break;
+case FN_getMaterialAmbientColor: //Number Function
+ rc_push_num(rc_getMaterialAmbientColor( GETMATERIALAMBIENTCOLOR_MATERIAL_ID ));
+ break;
+case FN_setMaterialAntiAliasing: //Sub Procedure
+ rc_setMaterialAntiAliasing( SETMATERIALANTIALIASING_MATERIAL_ID, SETMATERIALANTIALIASING_AA );
+ break;
+case FN_getMaterialAntiAliasing: //Number Function
+ rc_push_num(rc_getMaterialAntiAliasing( GETMATERIALANTIALIASING_MATERIAL_ID ));
+ break;
+case FN_setMaterialBackfaceCulling: //Sub Procedure
+ rc_setMaterialBackfaceCulling( SETMATERIALBACKFACECULLING_MATERIAL_ID, SETMATERIALBACKFACECULLING_FLAG );
+ break;
+case FN_getMaterialBackfaceCulling: //Number Function
+ rc_push_num(rc_getMaterialBackfaceCulling( GETMATERIALBACKFACECULLING_MATERIAL_ID ));
+ break;
+case FN_setMaterialBlendFactor: //Sub Procedure
+ rc_setMaterialBlendFactor( SETMATERIALBLENDFACTOR_MATERIAL_ID, SETMATERIALBLENDFACTOR_BF );
+ break;
+case FN_getMaterialBlendFactor: //Number Function
+ rc_push_num(rc_getMaterialBlendFactor( GETMATERIALBLENDFACTOR_MATERIAL_ID ));
+ break;
+case FN_setMaterialBlendMode: //Sub Procedure
+ rc_setMaterialBlendMode( SETMATERIALBLENDMODE_MATERIAL_ID, SETMATERIALBLENDMODE_BLEND_MODE );
+ break;
+case FN_getMaterialBlendMode: //Number Function
+ rc_push_num(rc_getMaterialBlendMode( GETMATERIALBLENDMODE_MATERIAL_ID ));
+ break;
+case FN_setMaterialColorMask: //Sub Procedure
+ rc_setMaterialColorMask( SETMATERIALCOLORMASK_MATERIAL_ID, SETMATERIALCOLORMASK_COLOR_MASK );
+ break;
+case FN_getMaterialColorMask: //Number Function
+ rc_push_num(rc_getMaterialColorMask( GETMATERIALCOLORMASK_MATERIAL_ID ));
+ break;
+case FN_setMaterialColorMode: //Sub Procedure
+ rc_setMaterialColorMode( SETMATERIALCOLORMODE_MATERIAL_ID, SETMATERIALCOLORMODE_COLOR_MODE );
+ break;
+case FN_getMaterialColorMode: //Number Function
+ rc_push_num(rc_getMaterialColorMode( GETMATERIALCOLORMODE_MATERIAL_ID ));
+ break;
+case FN_setMaterialDiffuseColor: //Sub Procedure
+ rc_setMaterialDiffuseColor( SETMATERIALDIFFUSECOLOR_MATERIAL_ID, SETMATERIALDIFFUSECOLOR_COLOR );
+ break;
+case FN_getMaterialDiffuseColor: //Number Function
+ rc_push_num(rc_getMaterialDiffuseColor( GETMATERIALDIFFUSECOLOR_MATERIAL_ID ));
+ break;
+case FN_setMaterialEmissiveColor: //Sub Procedure
+ rc_setMaterialEmissiveColor( SETMATERIALEMISSIVECOLOR_MATERIAL_ID, SETMATERIALEMISSIVECOLOR_COLOR );
+ break;
+case FN_getMaterialEmissiveColor: //Number Function
+ rc_push_num(rc_getMaterialEmissiveColor( GETMATERIALEMISSIVECOLOR_MATERIAL_ID ));
+ break;
+case FN_setMaterialFog: //Sub Procedure
+ rc_setMaterialFog( SETMATERIALFOG_MATERIAL_ID, SETMATERIALFOG_FLAG );
+ break;
+case FN_getMaterialFog: //Number Function
+ rc_push_num(rc_getMaterialFog( GETMATERIALFOG_MATERIAL_ID ));
+ break;
+case FN_setMaterialFrontfaceCulling: //Sub Procedure
+ rc_setMaterialFrontfaceCulling( SETMATERIALFRONTFACECULLING_MATERIAL_ID, SETMATERIALFRONTFACECULLING_FLAG );
+ break;
+case FN_getMaterialFrontfaceCulling: //Number Function
+ rc_push_num(rc_getMaterialFrontfaceCulling( GETMATERIALFRONTFACECULLING_MATERIAL_ID ));
+ break;
+case FN_setMaterialGouraudShading: //Sub Procedure
+ rc_setMaterialGouraudShading( SETMATERIALGOURAUDSHADING_MATERIAL_ID, SETMATERIALGOURAUDSHADING_FLAG );
+ break;
+case FN_materialIsGouraudShaded: //Number Function
+ rc_push_num(rc_materialIsGouraudShaded( MATERIALISGOURAUDSHADED_MATERIAL_ID ));
+ break;
+case FN_materialIsAplhaBlend: //Number Function
+ rc_push_num(rc_materialIsAplhaBlend( MATERIALISAPLHABLEND_MATERIAL_ID ));
+ break;
+case FN_materialIsTransparent: //Number Function
+ rc_push_num(rc_materialIsTransparent( MATERIALISTRANSPARENT_MATERIAL_ID ));
+ break;
+case FN_setMaterialLighting: //Sub Procedure
+ rc_setMaterialLighting( SETMATERIALLIGHTING_MATERIAL_ID, SETMATERIALLIGHTING_FLAG );
+ break;
+case FN_materialIsLit: //Number Function
+ rc_push_num(rc_materialIsLit( MATERIALISLIT_MATERIAL_ID ));
+ break;
+case FN_setMaterialType: //Sub Procedure
+ rc_setMaterialType( SETMATERIALTYPE_MATERIAL_ID, SETMATERIALTYPE_MAT_TYPE );
+ break;
+case FN_getMaterialType: //Number Function
+ rc_push_num(rc_getMaterialType( GETMATERIALTYPE_MATERIAL_ID ));
+ break;
+case FN_setMaterialNormalize: //Sub Procedure
+ rc_setMaterialNormalize( SETMATERIALNORMALIZE_MATERIAL_ID, SETMATERIALNORMALIZE_FLAG );
+ break;
+case FN_materialIsNormalized: //Number Function
+ rc_push_num(rc_materialIsNormalized( MATERIALISNORMALIZED_MATERIAL_ID ));
+ break;
+case FN_setMaterialPointCloud: //Sub Procedure
+ rc_setMaterialPointCloud( SETMATERIALPOINTCLOUD_MATERIAL_ID, SETMATERIALPOINTCLOUD_FLAG );
+ break;
+case FN_materialIsPointCloud: //Number Function
+ rc_push_num(rc_materialIsPointCloud( MATERIALISPOINTCLOUD_MATERIAL_ID ));
+ break;
+case FN_setMaterialFlag: //Sub Procedure
+ rc_setMaterialFlag( SETMATERIALFLAG_MATERIAL_ID, SETMATERIALFLAG_MATERIAL_FLAG, SETMATERIALFLAG_F_VALUE );
+ break;
+case FN_getMaterialFlag: //Number Function
+ rc_push_num(rc_getMaterialFlag( GETMATERIALFLAG_MATERIAL_ID, GETMATERIALFLAG_MATERIAL_FLAG ));
+ break;
+case FN_setMaterialTexture: //Sub Procedure
+ rc_setMaterialTexture( SETMATERIALTEXTURE_MATERIAL_ID, SETMATERIALTEXTURE_LEVEL, SETMATERIALTEXTURE_IMG_ID );
+ break;
+case FN_setMaterialShininess: //Sub Procedure
+ rc_setMaterialShininess( SETMATERIALSHININESS_MATERIAL_ID, SETMATERIALSHININESS_SHININESS );
+ break;
+case FN_getMaterialShininess: //Number Function
+ rc_push_num(rc_getMaterialShininess( GETMATERIALSHININESS_MATERIAL_ID ));
+ break;
+case FN_setMaterialSpecularColor: //Sub Procedure
+ rc_setMaterialSpecularColor( SETMATERIALSPECULARCOLOR_MATERIAL_ID, SETMATERIALSPECULARCOLOR_COLOR );
+ break;
+case FN_getMaterialSpecularColor: //Number Function
+ rc_push_num(rc_getMaterialSpecularColor( GETMATERIALSPECULARCOLOR_MATERIAL_ID ));
+ break;
+case FN_setMaterialThickness: //Sub Procedure
+ rc_setMaterialThickness( SETMATERIALTHICKNESS_MATERIAL_ID, SETMATERIALTHICKNESS_THICKNESS );
+ break;
+case FN_getMaterialThickness: //Number Function
+ rc_push_num(rc_getMaterialThickness( GETMATERIALTHICKNESS_MATERIAL_ID ));
+ break;
+case FN_setMaterialWireframe: //Sub Procedure
+ rc_setMaterialWireframe( SETMATERIALWIREFRAME_MATERIAL_ID, SETMATERIALWIREFRAME_FLAG );
+ break;
+case FN_materialIsWireframe: //Number Function
+ rc_push_num(rc_materialIsWireframe( MATERIALISWIREFRAME_MATERIAL_ID ));
+ break;
+case FN_setActorTexture: //Sub Procedure
+ rc_setActorTexture( SETACTORTEXTURE_ACTOR, SETACTORTEXTURE_LAYER, SETACTORTEXTURE_IMAGE_ID );
+ break;
+case FN_getActorMaterialCount: //Number Function
+ rc_push_num(rc_getActorMaterialCount( GETACTORMATERIALCOUNT_ACTOR ));
+ break;
+case FN_setActorMaterialFlag: //Sub Procedure
+ rc_setActorMaterialFlag( SETACTORMATERIALFLAG_ACTOR, SETACTORMATERIALFLAG_FLAG, SETACTORMATERIALFLAG_FLAG_VALUE );
+ break;
+case FN_getActorMaterialFlag: //Number Function
+ rc_push_num(rc_getActorMaterialFlag( GETACTORMATERIALFLAG_ACTOR, GETACTORMATERIALFLAG_MATERIAL, GETACTORMATERIALFLAG_FLAG ));
+ break;
+case FN_setActorMaterialType: //Sub Procedure
+ rc_setActorMaterialType( SETACTORMATERIALTYPE_ACTOR, SETACTORMATERIALTYPE_MATERIAL_TYPE );
+ break;
+case FN_getActorMaterialType: //Number Function
+ rc_push_num(rc_getActorMaterialType( GETACTORMATERIALTYPE_ACTOR, GETACTORMATERIALTYPE_MATERIAL ));
+ break;
+case FN_MaterialExists: //Number Function
+ rc_push_num(rc_materialExists( MATERIALEXISTS_MATERIAL ));
+ break;
diff --git a/rcbasic_runtime/rc_gfx.h b/rcbasic_runtime/rc_gfx.h
index c55c28f..481a553 100644
--- a/rcbasic_runtime/rc_gfx.h
+++ b/rcbasic_runtime/rc_gfx.h
@@ -28,6 +28,7 @@
#include "rc_sprite2D.h"
#include "rc_spritelib.h"
#include "rc_tilelib.h"
+#include "rc_joints.h"
#include
using namespace irr;
@@ -987,6 +988,16 @@ void rc_canvasClose(int canvas_id)
rc_canvas[canvas_id].physics2D.world = NULL;
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(rc_joint[i].canvas == canvas_id)
+ {
+ rc_joint[i].canvas = -1;
+ rc_joint[i].joint = NULL;
+ rc_joint[i].active = false;
+ }
+ }
+
//sprites are destroyed when the world is deleted so I just to set the active attribute to false and set the body to NULL
for(int i = 0; i < rc_canvas[canvas_id].sprite.size(); i++)
{
diff --git a/rcbasic_runtime/rc_gfx3D.h b/rcbasic_runtime/rc_gfx3D.h
index 5fa8988..e7dfa8f 100644
--- a/rcbasic_runtime/rc_gfx3D.h
+++ b/rcbasic_runtime/rc_gfx3D.h
@@ -22,6929 +22,18 @@
#include "camera.h"
#include "rc_gfx_core.h"
#include "rc_matrix.h"
-#include "RealisticWater.h"
-
-//load a mesh from a file
-int rc_loadMesh(std::string mesh_file)
-{
- int mesh_id = -1;
-
- rc_mesh_obj mesh_obj;
- mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
-
- irr::scene::IAnimatedMesh* mesh = SceneManager->getMesh(mesh_file.c_str());
- mesh_obj.mesh = mesh;
-
- if(!mesh)
- return -1;
-
- for(int i = 0; i < rc_mesh.size(); i++)
- {
- if(!rc_mesh[i].mesh)
- {
- mesh_id = i;
- break;
- }
- }
-
- if(mesh_id < 0)
- {
- mesh_id = rc_mesh.size();
- rc_mesh.push_back(mesh_obj);
- }
- else
- {
- rc_mesh[mesh_id] = mesh_obj;
- }
-
- return mesh_id;
-}
-
-//load a mesh from an archive
-int rc_loadMeshFromArchive(std::string archive, std::string mesh_file)
-{
- int mesh_id = -1;
-
- device->getFileSystem()->addFileArchive(archive.c_str());
- irr::scene::IAnimatedMesh *mesh = SceneManager->getMesh(mesh_file.c_str());
- device->getFileSystem()->removeFileArchive((irr::u32) 0);
-
- rc_mesh_obj mesh_obj;
- mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
- mesh_obj.mesh = mesh;
-
- if(!mesh)
- return -1;
-
- for(int i = 0; i < rc_mesh.size(); i++)
- {
- if(!rc_mesh[i].mesh)
- {
- mesh_id = i;
- break;
- }
- }
-
- if(mesh_id < 0)
- {
- mesh_id = rc_mesh.size();
- rc_mesh.push_back(mesh_obj);
- }
- else
- {
- rc_mesh[mesh_id] = mesh_obj;
- }
-
- return mesh_id;
-}
-
-int rc_loadAN8(std::string an8_file)
-{
- int id = -1;
-
- for(int i = 0; i < rc_an8.size(); i++)
- {
- if(!rc_an8[i].active)
- {
- id = i;
- break;
- }
- }
-
- if(id < 0)
- {
- id = rc_an8.size();
- rc_an8_obj obj;
- rc_an8.push_back(obj);
- }
-
- rc_an8[id].project = an8::loadAN8(an8_file);
- if(rc_an8[id].project.exists)
- {
- rc_an8[id].active = true;
- return id;
- }
-
- rc_an8[id].active = false;
-
- return -1;
-}
-
-//load a mesh from an archive
-int rc_loadMeshFromAN8(int an8_id, std::string scene_name)
-{
- int mesh_id = -1;
-
- if(an8_id < 0 || an8_id >= rc_an8.size())
- return -1;
-
- if(!rc_an8[an8_id].active)
- return -1;
-
- rc_mesh_obj mesh_obj;
- mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
- mesh_obj.mesh = an8::loadAN8Scene(device, rc_an8[an8_id].project, scene_name);
-
- if(!mesh_obj.mesh)
- return -1;
-
- for(int i = 0; i < rc_mesh.size(); i++)
- {
- if(!rc_mesh[i].mesh)
- {
- mesh_id = i;
- break;
- }
- }
-
- if(mesh_id < 0)
- {
- mesh_id = rc_mesh.size();
- rc_mesh.push_back(mesh_obj);
- }
- else
- {
- rc_mesh[mesh_id] = mesh_obj;
- }
-
- return mesh_id;
-}
-
-int rc_getNumAN8Scenes(int an8_id)
-{
- if(an8_id < 0 || an8_id >= rc_an8.size())
- return 0;
-
- if(!rc_an8[an8_id].active)
- return 0;
-
- return rc_an8[an8_id].project.scenes.size();
-}
-
-std::string rc_getAN8SceneName(int an8_id, int scene_num)
-{
- if(an8_id < 0 || an8_id >= rc_an8.size())
- return "";
-
- if(!rc_an8[an8_id].active)
- return "";
-
- if(scene_num < 0 || scene_num >= rc_an8[an8_id].project.scenes.size())
- return "";
-
- return rc_an8[an8_id].project.scenes[scene_num].name;
-}
-
-//delete mesh
-void rc_deleteMesh(int mesh_id)
-{
- if(mesh_id < 0 || mesh_id >= rc_mesh.size())
- return;
-
- if(rc_mesh[mesh_id].mesh)
- rc_mesh[mesh_id].mesh->drop();
-
- rc_mesh[mesh_id].mesh = NULL;
- rc_mesh[mesh_id].mesh_type = 0;
-
-}
-
-//create mesh from geometry data [TODO]
-int rc_createMesh()
-{
- irr::scene::ISkinnedMesh * mesh = SceneManager->createSkinnedMesh();
-
- if(!mesh)
- return -1;
-
- int mesh_id = rc_mesh.size();
- rc_mesh_obj mesh_obj;
- mesh_obj.mesh = mesh;
- mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
-
- rc_mesh.push_back(mesh_obj);
-
- return mesh_id;
-}
-
-int rc_createPlaneMesh(double w, double h, double tileCount_w, double tileCount_h)
-{
- irr::scene::IAnimatedMesh* mesh = SceneManager->addHillPlaneMesh( "plane",
- irr::core::dimension2d(w/tileCount_w, h/tileCount_h),
- irr::core::dimension2d(tileCount_w, tileCount_h));
-
- if(!mesh)
- return -1;
-
- int mesh_id = rc_mesh.size();
- rc_mesh_obj mesh_obj;
- mesh_obj.mesh = mesh;
- mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
-
- rc_mesh.push_back(mesh_obj);
-
- return mesh_id;
-}
-
-
-//create mesh from geometry data [TODO]
-bool rc_addMeshBuffer(int mesh_id, int vertex_count, double* vertex_data, double* normal_data, double* uv_data, int index_count, double* index_data)
-{
- irr::scene::ISkinnedMesh * mesh = (irr::scene::ISkinnedMesh*) rc_mesh[mesh_id].mesh;
-
- irr::scene::SSkinMeshBuffer* mbuf = mesh->addMeshBuffer();
-
- if(!mbuf)
- {
- mesh->drop();
- return false;
- }
-
- irr::core::array vertices;
- irr::core::array indices;
-
- for(int i = 0; i < vertex_count; i++)
- {
- irr::video::S3DVertex v;
- v.Pos = irr::core::vector3df( (irr::f32) vertex_data[i*3], (irr::f32) vertex_data[i*3+1], (irr::f32) vertex_data[i*3+2] );
- v.Normal = irr::core::vector3df( (irr::f32) normal_data[i*3], (irr::f32) normal_data[i*3+1], (irr::f32) normal_data[i*3+2] );
- v.TCoords = irr::core::vector2df( (irr::f32) uv_data[i*2], (irr::f32) uv_data[i*2+1] );
- vertices.push_back(v);
- }
-
- for(int i = 0; i < index_count; i++)
- {
- indices.push_back( (irr::u16) index_data[i] );
- }
-
- if(indices.size() > 0)
- {
- for(int i = 0; i < vertices.size(); i++)
- mbuf->Vertices_Standard.push_back(vertices[i]);
-
- for(int i = 0; i < indices.size(); i++)
- mbuf->Indices.push_back(indices[i]);
-
- }
-
- return true;
-}
-
-
-
-//Set Gravity
-void rc_setGravity3D(double x, double y, double z)
-{
- rc_physics3D.world->setGravity(irr::core::vector3d(x, y, z));
-}
-
-void rc_getGravity3D(double* x, double* y, double* z)
-{
- btVector3 v = rc_physics3D.world->getPointer()->getGravity();
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
-}
-
-void setSolidProperties(int actor)
-{
- if(!rc_actor[actor].physics.isSolid)
- {
- rc_actor[actor].physics.gravity = rc_actor[actor].physics.rigid_body->getGravity();
- rc_actor[actor].physics.rigid_body->setGravity(irr::core::vector3df(0,0,0));
- rc_actor[actor].physics.rigid_body->setCollisionFlags( ECollisionFlag::ECF_NO_CONTACT_RESPONSE );
- }
- else
- {
- //rc_actor[actor].physics.rigid_body->setGravity(rc_actor[actor].physics.gravity);
- }
-}
-
-void rc_setActorCollisionShape(int actor_id, int shape_type, double mass)
-{
- //std::cout << "Start ColShape" << std::endl;
- if(rc_actor[actor_id].physics.rigid_body)
- {
- rc_physics3D.world->removeCollisionObject(rc_actor[actor_id].physics.rigid_body, false);
- delete rc_actor[actor_id].physics.rigid_body;
- }
-
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.mass = mass;
-
- if(!rc_actor[actor_id].physics.isSolid)
- mass = 1;
-
- //std::cout << "NEXT" << std::endl;
-
- switch(shape_type)
- {
- case RC_NODE_SHAPE_TYPE_NONE:
- break;
-
- case RC_NODE_SHAPE_TYPE_BOX:
- {
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- IBoxShape* shape = new IBoxShape(rc_actor[actor_id].mesh_node, mass, false);
-
- rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
-
- setSolidProperties(actor_id);
- }
- break;
-
- case RC_NODE_SHAPE_TYPE_SPHERE:
- {
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_SPHERE;
- ISphereShape* shape = new ISphereShape(rc_actor[actor_id].mesh_node, mass, false);
-
- rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
-
- setSolidProperties(actor_id);
- }
- break;
-
- case RC_NODE_SHAPE_TYPE_CYLINDER:
- {
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CYLINDER;
- ICylinderShape* shape = new ICylinderShape(rc_actor[actor_id].mesh_node, mass, false);
-
- rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
-
- setSolidProperties(actor_id);
- }
- break;
-
- case RC_NODE_SHAPE_TYPE_CAPSULE:
- {
- //std::cout << "CAPSULE" << std::endl;
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CAPSULE;
- ICapsuleShape* shape;
-
- if(rc_actor[actor_id].node_type == RC_NODE_TYPE_MESH)
- {
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new ICapsuleShape(node, mass, false);
- }
- else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_OTMESH)
- {
- irr::scene::IOctreeSceneNode* node = (irr::scene::IOctreeSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new ICapsuleShape(node, mass, false);
- }
- else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_TERRAIN)
- {
- irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new ICapsuleShape(node, mass, false);
- }
-
- rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
-
- setSolidProperties(actor_id);
- }
- break;
-
- case RC_NODE_SHAPE_TYPE_CONE:
- {
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CONE;
- IConeShape* shape = new IConeShape(rc_actor[actor_id].mesh_node, mass, false);
-
- rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
-
- setSolidProperties(actor_id);
- }
- break;
-
- case RC_NODE_SHAPE_TYPE_TRIMESH:
- {
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_TRIMESH;
- IBvhTriangleMeshShape* shape;
-
- if(rc_actor[actor_id].node_type == RC_NODE_TYPE_MESH)
- {
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new IBvhTriangleMeshShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
- }
- else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_OTMESH)
- {
- irr::scene::IOctreeSceneNode* node = (irr::scene::IOctreeSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new IBvhTriangleMeshShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
- }
- else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_TERRAIN)
- {
- irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new IBvhTriangleMeshShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
- }
- //else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_WATER)
- //shape = new IBvhTriangleMeshShape(rc_actor[actor_id].mesh_node, (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node->getMesh(), mass);
-
- rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
-
- setSolidProperties(actor_id);
- }
- break;
-
- case RC_NODE_SHAPE_TYPE_CONVEXHULL:
- {
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_CONVEXHULL;
- IConvexHullShape* shape;
-
- if(rc_actor[actor_id].node_type == RC_NODE_TYPE_MESH)
- {
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new IConvexHullShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
- }
- else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_OTMESH)
- {
- irr::scene::IOctreeSceneNode* node = (irr::scene::IOctreeSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new IConvexHullShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
- }
- else if(rc_actor[actor_id].node_type == RC_NODE_TYPE_TERRAIN)
- {
- irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor_id].mesh_node;
- shape = new IConvexHullShape(rc_actor[actor_id].mesh_node, node->getMesh(), mass);
- }
-
- rc_actor[actor_id].physics.rigid_body = rc_physics3D.world->addRigidBody(shape);
-
- setSolidProperties(actor_id);
- }
- break;
-
- default:
- std::cout << "SetActorCollisionShape Error: Invalid shape_type parameter" << std::endl;
- }
-
- if(rc_actor[actor_id].physics.rigid_body)
- {
- rc_actor[actor_id].physics.rigid_body->getIdentification()->setId(actor_id);
- rc_actor[actor_id].physics.rigid_body->getPointer()->setActivationState(ACTIVE_TAG);
- rc_actor[actor_id].physics.rigid_body->getPointer()->setActivationState(DISABLE_DEACTIVATION);
- rc_actor[actor_id].physics.rigid_body->getPointer()->updateInertiaTensor();
- }
-}
-
-void rc_setActorSleepState(int actor, int state)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->getPointer()->forceActivationState(state);
- }
-}
-
-int rc_getActorCollisionShape(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(!rc_actor[actor].mesh_node)
- return 0;
-
- return rc_actor[actor].physics.shape_type;
-}
-
-
-void rc_setActorSolid(int actor_id, bool flag)
-{
- if(actor_id < 0 || actor_id >= rc_actor.size())
- return;
-
- if(!rc_actor[actor_id].mesh_node)
- return;
-
- if(flag != rc_actor[actor_id].physics.isSolid)
- {
- rc_actor[actor_id].physics.isSolid = flag;
- rc_setActorCollisionShape(actor_id, rc_actor[actor_id].physics.shape_type, rc_actor[actor_id].physics.mass);
- }
-}
-
-bool rc_actorIsSolid(int actor_id)
-{
- if(actor_id < 0 || actor_id >= rc_actor.size())
- return false;
-
- if(!rc_actor[actor_id].mesh_node)
- return false;
-
- return rc_actor[actor_id].physics.isSolid;
-}
-
-bool rc_actorExists(int actor_id)
-{
- if(actor_id < 0 || actor_id >= rc_actor.size())
- return false;
-
- return (rc_actor[actor_id].node_type > 0);
-}
-
-
-bool rc_getActorCollision(int actor1, int actor2)
-{
- for(int i = 0; i < rc_actor[actor1].physics.collisions.size(); i++)
- {
- int c_index = rc_actor[actor1].physics.collisions[i];
-
- int actorA = rc_collisions[c_index].actorA;
- int actorB = rc_collisions[c_index].actorB;
-
- if(actor2 == actorA || actor2 == actorB)
- {
- //std::cout << "Actor in Collide = " << (actor1 == actorA ? "A" : "B") << std::endl;
- return true;
- }
- }
-
- return false;
-}
-
-
-//add mesh actor to scene
-int rc_createAnimatedActor(int mesh_id)
-{
- if(mesh_id < 0 || mesh_id >= rc_mesh.size())
- return -1;
-
- irr::scene::IAnimatedMesh* mesh = rc_mesh[mesh_id].mesh;
-
- if(!mesh)
- return -1;
-
- int actor_id = -1;
- irr::scene::IAnimatedMeshSceneNode* node = SceneManager->addAnimatedMeshSceneNode(mesh);
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_MESH;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //animation
- rc_actor_animation_obj animation;
- animation.start_frame = 0;
- animation.end_frame = 0;
- animation.fps = 60.0;
- animation.frame_start_time = SDL_GetTicks();
- animation.frame_swap_time = 1000/60;
- rc_actor[actor_id].animation.push_back(animation);
- rc_animEndCallBack* anim_callback = new rc_animEndCallBack();
- anim_callback->ref_actor = &rc_actor[actor_id];
- anim_callback->OnAnimationEnd(node);
- node->setAnimationEndCallback(anim_callback);
- node->setLoopMode(false);
- node->setFrameLoop(0, 0);
- anim_callback->drop();
-
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
-
- return actor_id;
-}
-
-
-//add mesh actor to scene
-int rc_createOctreeActor(int mesh_id)
-{
- if(mesh_id < 0 || mesh_id >= rc_mesh.size())
- return -1;
-
- irr::scene::IAnimatedMesh* mesh = rc_mesh[mesh_id].mesh;
-
- if(!mesh)
- return -1;
-
- int actor_id = -1;
- //irr::scene::IAnimatedMeshSceneNode* node = SceneManager->addAnimatedMeshSceneNode(mesh);
- irr::scene::IOctreeSceneNode *node = SceneManager->addOctreeSceneNode(mesh);
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_OTMESH;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
-
-
- return actor_id;
-}
-
-//add mesh actor to scene
-int rc_createTerrainActor( std::string height_map )
-{
-
- int actor_id = -1;
- irr::scene::ITerrainSceneNode *node = SceneManager->addTerrainSceneNode(height_map.c_str());
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_TERRAIN;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 0);
-
-
- return actor_id;
-}
-
-int rc_createParticleActor( int particle_type )
-{
- int actor_id = -1;
- irr::scene::IParticleSystemSceneNode *node = SceneManager->addParticleSystemSceneNode( false );
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_PARTICLE;
- actor.particle_properties.particle_type = particle_type;
- actor.particle_properties.mesh_id = -1;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 0);
-
-
- return actor_id;
-}
-
-//add mesh actor to scene
-int rc_createCubeActor(double cube_size)
-{
- int actor_id = -1;
- irr::scene::IMeshSceneNode* node = SceneManager->addCubeSceneNode(cube_size);
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_MESH;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
-
- return actor_id;
-}
-
-//add mesh actor to scene
-int rc_createSphereActor(double radius)
-{
- int actor_id = -1;
- irr::scene::IMeshSceneNode* node = SceneManager->addSphereSceneNode(radius);
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_MESH;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_SPHERE;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_SPHERE, 1);
-
- return actor_id;
-}
-
-//add mesh actor to scene
-int rc_createWaterActor(int mesh_id, double waveHeight, double waveSpeed, double waveLength)
-{
- int actor_id = -1;
-
- if(mesh_id < 0 || mesh_id >= rc_mesh.size())
- return -1;
-
- if(!rc_mesh[mesh_id].mesh)
- return -1;
-
- irr::scene::ISceneNode* node = SceneManager->addWaterSurfaceSceneNode(rc_mesh[mesh_id].mesh, waveHeight, waveSpeed, waveLength);
-
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_WATER;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
-
- return actor_id;
-}
-
-int rc_createBillboardActor()
-{
- int actor_id = -1;
- irr::scene::IBillboardSceneNode* node = SceneManager->addBillboardSceneNode();
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_BILLBOARD;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
-
- return actor_id;
-}
-
-int rc_createLightActor()
-{
- int actor_id = -1;
- irr::scene::ILightSceneNode* node = SceneManager->addLightSceneNode();
- rc_scene_node actor;
- actor.node_type = RC_NODE_TYPE_LIGHT;
- actor.mesh_node = node;
- actor.shadow = NULL;
- actor.transition = false;
- actor.transition_time = 0;
- actor.material_ref_index = -1;
-
- if(!node)
- return -1;
-
- for(int i = 0; i < rc_actor.size(); i++)
- {
- if(!rc_actor[i].mesh_node)
- {
- actor_id = i;
- break;
- }
- }
-
- if(actor_id < 0)
- {
- actor_id = rc_actor.size();
- rc_actor.push_back(actor);
- }
- else
- {
- rc_actor[actor_id] = actor;
- }
-
- //Actor RigidBody
- rc_actor[actor_id].physics.shape_type = RC_NODE_SHAPE_TYPE_BOX;
- rc_actor[actor_id].physics.rigid_body = NULL;
- rc_actor[actor_id].physics.isSolid = false;
-
- rc_setActorCollisionShape(actor_id, RC_NODE_SHAPE_TYPE_BOX, 1);
-
- return actor_id;
-}
-
-//delete actor
-void rc_deleteActor(int actor_id)
-{
- if(actor_id < 0 || actor_id >= rc_actor.size())
- return;
-
- if(!rc_actor[actor_id].mesh_node)
- return;
-
- rc_physics3D.world->removeCollisionObject(rc_actor[actor_id].physics.rigid_body, false);
- rc_actor[actor_id].physics.collisions.clear();
-
- rc_actor[actor_id].mesh_node->remove();
- rc_actor[actor_id].mesh_node = NULL;
- rc_actor[actor_id].shadow = NULL;
- rc_actor[actor_id].node_type = 0;
- rc_actor[actor_id].transition = false;
- rc_actor[actor_id].transition_time = 0;
- rc_actor[actor_id].material_ref_index = -1;
-}
-
-
-//set actor texture
-void rc_setActorTexture(int actor, int layer, int image_id)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(!rc_actor[actor].mesh_node)
- return;
-
- if(image_id < 0 || image_id >= rc_image.size())
- return;
-
- if(rc_image[image_id].image)
- {
- rc_actor[actor].mesh_node->setMaterialTexture(layer, rc_image[image_id].image);
- }
-}
-
-//get Material count
-Uint32 rc_getActorMaterialCount(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(!rc_actor[actor].mesh_node)
- return 0;
-
- return rc_actor[actor].mesh_node->getMaterialCount();
-}
-
-//set Actor Material Flag
-void rc_setActorMaterialFlag(int actor, int flag, bool flag_value)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(!rc_actor[actor].mesh_node)
- return;
-
- rc_actor[actor].mesh_node->setMaterialFlag((irr::video::E_MATERIAL_FLAG)flag, flag_value);
-}
-
-//set Actor Material Flag
-bool rc_getActorMaterialFlag(int actor, int material, int flag)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return false;
-
- if(!rc_actor[actor].mesh_node)
- return false;
-
- return rc_actor[actor].mesh_node->getMaterial(material).getFlag((irr::video::E_MATERIAL_FLAG)flag);
-}
-
-//Set Actor Material Type
-void rc_setActorMaterialType(int actor, int material_type)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(!rc_actor[actor].mesh_node)
- return;
-
- irr::video::E_MATERIAL_TYPE n = (irr::video::E_MATERIAL_TYPE) material_type;
- rc_actor[actor].mesh_node->setMaterialType(n);
-}
-
-//Set Actor Material Type
-int rc_getActorMaterialType(int actor, int material)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(!rc_actor[actor].mesh_node)
- return 0;
-
- return (int)rc_actor[actor].mesh_node->getMaterial(material).MaterialType;
-}
-
-struct rc_material_obj
-{
- irr::video::SMaterial mat;
- bool isUsed = false;
- bool isReference = false;
- int refActor = -1;
- int refMatNum = 0;
-};
-
-irr::core::array rc_material;
-
-int rc_createMaterial()
-{
- int material_id = -1;
-
- for(int i = 0; i < rc_material.size(); i++)
- {
- if(!rc_material[i].isUsed)
- {
- material_id = i;
- break;
- }
- }
-
- if(material_id < 0)
- {
- material_id = rc_material.size();
- rc_material_obj mat;
- mat.isUsed = true;
- mat.isReference = false;
- rc_material.push_back(mat);
- }
-
- return material_id;
-}
-
-void rc_deleteMaterial(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- rc_material[material_id].isUsed = false;
- rc_material[material_id].mat = irr::video::SMaterial();
-}
-
-//Set Actor Material Type
-void rc_setActorMaterial(int actor, int material_num, int material_id)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(!rc_actor[actor].mesh_node)
- return;
-
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isUsed)
- {
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[actor].mesh_node->getMaterial(material_num) = rc_actor[ refActor ].mesh_node->getMaterial( refMatNum );
- }
- else
- rc_actor[actor].mesh_node->getMaterial(material_num) = rc_material[material_id].mat;
- }
-}
-
-//Set Actor Material Type
-int rc_copyActorMaterial(int actor, int material_num)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- if(!rc_actor[actor].mesh_node)
- return -1;
-
- int material_id = -1;
-
- for(int i = 0; i < rc_material.size(); i++)
- {
- if(!rc_material[i].isUsed)
- {
- rc_material[i].isUsed = true;
- material_id = i;
- break;
- }
- }
-
- if(material_id < 0)
- {
- material_id = rc_material.size();
- rc_material_obj nmat;
- nmat.isUsed = true;
- nmat.mat = rc_actor[actor].mesh_node->getMaterial(material_num);
- rc_material.push_back(nmat);
- }
- else
- rc_material[material_id].mat = rc_actor[actor].mesh_node->getMaterial(material_num);
-
- return material_id;
-}
-
-int rc_copyMaterial(int src_material_id)
-{
- int material_id = -1;
-
- for(int i = 0; i < rc_material.size(); i++)
- {
- if(!rc_material[i].isUsed)
- {
- rc_material[i].isUsed = true;
- material_id = i;
- break;
- }
- }
-
- rc_material_obj nmat;
- nmat.isUsed = true;
- nmat.mat = rc_material[src_material_id].mat;
- nmat.isReference = false;
- nmat.refActor = -1;
- nmat.refMatNum = 0;
-
- if(material_id < 0)
- {
- material_id = rc_material.size();
- rc_material.push_back(nmat);
- }
- else
- rc_material[material_id] = nmat;
-
- return material_id;
-}
-
-int rc_getActorMaterial(int actor, int material_num)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- if(!rc_actor[actor].mesh_node)
- return -1;
-
- if(rc_actor[actor].material_ref_index >= 0)
- return rc_actor[actor].material_ref_index;
-
- int material_id = -1;
-
- for(int i = 0; i < rc_material.size(); i++)
- {
- if(!rc_material[i].isUsed)
- {
- rc_material[i].isUsed = true;
- material_id = i;
- break;
- }
- }
-
- if(material_id < 0)
- {
- material_id = rc_material.size();
- rc_material_obj nmat;
- nmat.isUsed = true;
- nmat.isReference = true;
- nmat.refActor = actor;
- nmat.refMatNum = material_num;
- rc_material.push_back(nmat);
- }
- else
- {
- rc_material_obj nmat;
- nmat.isUsed = true;
- nmat.isReference = true;
- nmat.refActor = actor;
- nmat.refMatNum = material_num;
- rc_material[material_id] = nmat;
- }
-
- return material_id;
-}
-
-bool rc_materialExists(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- return rc_material[material_id].isUsed;
-}
-
-void rc_setMaterialAmbientColor(int material_id, Uint32 color)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).AmbientColor = irr::video::SColor(color);
- }
- else
- rc_material[material_id].mat.AmbientColor = irr::video::SColor(color);
-}
-
-void rc_setMaterialTextureCanvas(int material_id, int level, int canvas_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(canvas_id < 0 || canvas_id >= rc_canvas.size())
- return;
-
- if(!rc_canvas[canvas_id].texture)
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).setTexture(level, rc_canvas[canvas_id].texture);
- }
- else
- rc_material[material_id].mat.setTexture(level, rc_canvas[canvas_id].texture);
-}
-
-Uint32 rc_getMaterialAmbientColor(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).AmbientColor.color;
- }
- else
- return rc_material[material_id].mat.AmbientColor.color;
-}
-
-void rc_setMaterialAntiAliasing(int material_id, int aa)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).AntiAliasing = aa;
- }
- else
- rc_material[material_id].mat.AntiAliasing = aa;
-}
-
-int rc_getMaterialAntiAliasing(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).AntiAliasing;
- }
- else
- return rc_material[material_id].mat.AntiAliasing;
-}
-
-void rc_setMaterialBackfaceCulling(int material_id, bool flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).BackfaceCulling = flag;
- }
- else
- rc_material[material_id].mat.BackfaceCulling = flag;
-}
-
-bool rc_getMaterialBackfaceCulling(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).BackfaceCulling;
- }
- else
- return rc_material[material_id].mat.BackfaceCulling;
-}
-
-void rc_setMaterialBlendFactor(int material_id, double bf)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).BlendFactor = bf;
- }
- else
- rc_material[material_id].mat.BlendFactor = bf;
-}
-
-double rc_getMaterialBlendFactor(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).BlendFactor;
- }
- else
- return rc_material[material_id].mat.BlendFactor;
-}
-
-void rc_setMaterialBlendMode(int material_id, int blend_mode)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).BlendOperation = (irr::video::E_BLEND_OPERATION)blend_mode;
- }
- else
- rc_material[material_id].mat.BlendOperation = (irr::video::E_BLEND_OPERATION)blend_mode;
-}
-
-int rc_getMaterialBlendMode(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return (int)rc_actor[refActor].mesh_node->getMaterial(refMatNum).BlendOperation;
- }
- else
- return (int)rc_material[material_id].mat.BlendOperation;
-}
-
-void rc_setMaterialColorMask(int material_id, int color_mask)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).ColorMask = color_mask;
- }
- else
- rc_material[material_id].mat.ColorMask = color_mask;
-}
-
-int rc_getMaterialColorMask(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).ColorMask;
- }
- else
- return rc_material[material_id].mat.ColorMask;
-}
-
-void rc_setMaterialColorMode(int material_id, int color_mode)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).ColorMaterial = (irr::video::E_COLOR_MATERIAL)color_mode;
- }
- else
- rc_material[material_id].mat.ColorMaterial = (irr::video::E_COLOR_MATERIAL)color_mode;
-}
-
-int rc_getMaterialColorMode(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return (int)rc_actor[refActor].mesh_node->getMaterial(refMatNum).ColorMaterial;
- }
- else
- return (int)rc_material[material_id].mat.ColorMaterial;
-}
-
-void rc_setMaterialDiffuseColor(int material_id, Uint32 color)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).DiffuseColor.set(color);
- }
- else
- rc_material[material_id].mat.DiffuseColor = irr::video::SColor(color);
-}
-
-Uint32 rc_getMaterialDiffuseColor(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).DiffuseColor.color;
- }
- else
- return rc_material[material_id].mat.DiffuseColor.color;
-}
-
-void rc_setMaterialEmissiveColor(int material_id, Uint32 color)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).EmissiveColor.set(color);
- }
- else
- rc_material[material_id].mat.EmissiveColor = irr::video::SColor(color);
-}
-
-Uint32 rc_getMaterialEmissiveColor(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).EmissiveColor.color;
- }
- else
- return rc_material[material_id].mat.EmissiveColor.color;
-}
-
-void rc_setMaterialFog(int material_id, bool flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).FogEnable = flag;
- }
- else
- rc_material[material_id].mat.FogEnable = flag;
-}
-
-bool rc_getMaterialFog(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).FogEnable;
- }
- else
- return rc_material[material_id].mat.FogEnable;
-}
-
-void rc_setMaterialFrontfaceCulling(int material_id, bool flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).FrontfaceCulling = flag;
- }
- else
- rc_material[material_id].mat.FrontfaceCulling = flag;
-}
-
-bool rc_getMaterialFrontfaceCulling(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).FrontfaceCulling;
- }
- else
- return rc_material[material_id].mat.FrontfaceCulling;
-}
-
-void rc_setMaterialGouraudShading(int material_id, bool flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).GouraudShading = flag;
- }
- else
- rc_material[material_id].mat.GouraudShading = flag;
-}
-
-bool rc_materialIsGouraudShaded(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).GouraudShading;
- }
- else
- return rc_material[material_id].mat.GouraudShading;
-}
-
-bool rc_materialIsAplhaBlend(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).isAlphaBlendOperation();
- }
- else
- return rc_material[material_id].mat.isAlphaBlendOperation();
-}
-
-bool rc_materialIsTransparent(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).isTransparent();
- }
- else
- return rc_material[material_id].mat.isTransparent();
-}
-
-void rc_setMaterialLighting(int material_id, bool flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).Lighting = flag;
- }
- else
- rc_material[material_id].mat.Lighting = flag;
-}
-
-bool rc_materialIsLit(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).Lighting;
- }
- else
- return rc_material[material_id].mat.Lighting;
-}
-
-void rc_setMaterialType(int material_id, int mat_type)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).MaterialType = (irr::video::E_MATERIAL_TYPE)mat_type;
- }
- else
- rc_material[material_id].mat.MaterialType = (irr::video::E_MATERIAL_TYPE)mat_type;
-}
-
-int rc_getMaterialType(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return (int)rc_actor[refActor].mesh_node->getMaterial(refMatNum).MaterialType;
- }
- else
- return (int)rc_material[material_id].mat.MaterialType;
-}
-
-void rc_setMaterialNormalize(int material_id, bool flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).NormalizeNormals = flag;
- }
- else
- rc_material[material_id].mat.NormalizeNormals = flag;
-}
-
-bool rc_materialIsNormalized(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).NormalizeNormals;
- }
- else
- return rc_material[material_id].mat.NormalizeNormals;
-}
-
-void rc_setMaterialPointCloud(int material_id, bool flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).PointCloud = flag;
- }
- else
- rc_material[material_id].mat.PointCloud = flag;
-}
-
-bool rc_materialIsPointCloud(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).PointCloud;
- }
- else
- return rc_material[material_id].mat.PointCloud;
-}
-
-void rc_setMaterialFlag(int material_id, int material_flag, bool f_value)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).setFlag((irr::video::E_MATERIAL_FLAG)material_flag, f_value);
- }
- else
- rc_material[material_id].mat.setFlag((irr::video::E_MATERIAL_FLAG)material_flag, f_value);
-}
-
-bool rc_getMaterialFlag(int material_id, int material_flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).getFlag((irr::video::E_MATERIAL_FLAG) material_flag);
- }
- else
- return rc_material[material_id].mat.getFlag((irr::video::E_MATERIAL_FLAG) material_flag);
-}
-
-void rc_setMaterialTexture(int material_id, int level, int img_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(level < 0 || level >= irr::video::MATERIAL_MAX_TEXTURES)
- return;
-
- if(img_id < 0 || img_id >= rc_image.size())
- return;
-
- if(!rc_image[img_id].image)
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).setTexture(level, rc_image[img_id].image);
- }
- else
- rc_material[material_id].mat.setTexture(level, rc_image[img_id].image);
-}
-
-void rc_setMaterialShininess(int material_id, double shininess)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).Shininess = shininess;
- }
- else
- rc_material[material_id].mat.Shininess = shininess;
-}
-
-double rc_getMaterialShininess(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).Shininess;
- }
- else
- return rc_material[material_id].mat.Shininess;
-}
-
-void rc_setMaterialSpecularColor(int material_id, Uint32 color)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).SpecularColor.set(color);
- }
- else
- rc_material[material_id].mat.SpecularColor = irr::video::SColor(color);
-}
-
-Uint32 rc_getMaterialSpecularColor(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).SpecularColor.color;
- }
- else
- return rc_material[material_id].mat.SpecularColor.color;
-}
-
-void rc_setMaterialThickness(int material_id, double thickness)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).Thickness = thickness;
- }
- else
- rc_material[material_id].mat.Thickness = thickness;
-}
-
-double rc_getMaterialThickness(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return 0;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).Thickness;
- }
- else
- return rc_material[material_id].mat.Thickness;
-}
-
-void rc_setMaterialWireframe(int material_id, bool flag)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- rc_actor[refActor].mesh_node->getMaterial(refMatNum).Wireframe = flag;
- }
- else
- rc_material[material_id].mat.Wireframe = flag;
-}
-
-bool rc_materialIsWireframe(int material_id)
-{
- if(material_id < 0 || material_id >= rc_material.size())
- return false;
-
- if(rc_material[material_id].isReference)
- {
- int refActor = rc_material[material_id].refActor;
- int refMatNum = rc_material[material_id].refMatNum;
- return rc_actor[refActor].mesh_node->getMaterial(refMatNum).Wireframe;
- }
- else
- return rc_material[material_id].mat.Wireframe;
-}
-
-
-
-
-//get Actor Texture
-int rc_getActorTexture(int actor, int material, int layer)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- if(!rc_actor[actor].mesh_node)
- return -1;
-
- rc_image_obj img;
- img.image = rc_actor[actor].mesh_node->getMaterial(material).getTexture(layer);
-
- if(img.image == NULL)
- return -1;
-
- int img_id = -1;
-
- for(int i = 0; i < rc_image.size(); i++)
- {
- if(rc_image[i].image == NULL)
- {
- img_id = i;
- break;
- }
- }
-
- if(img_id < 0)
- {
- img_id = rc_image.size();
- rc_image.push_back(img);
- }
- else
- {
- rc_image[img_id] = img;
- }
-
- return img_id;
-}
-
-
-
-bool rc_getActorTransform(int actor, int t_mat)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return false;
-
- if(t_mat < 0 || t_mat >= rc_matrix.size())
- return false;
-
- if(!rc_matrix[t_mat].active)
- return false;
-
- irr::core::matrix4 m = rc_actor[actor].mesh_node->getAbsoluteTransformation();
- rc_convertFromIrrMatrix(m, t_mat);
-
- return true;
-}
-
-//set actor position
-void rc_setActorPosition(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- rc_physics3D.world->removeCollisionObject(rc_actor[actor].physics.rigid_body, false);
- actor_transform.setTranslation( irr::core::vector3df(x, y, z) );
- rc_actor[actor].physics.rigid_body->clearForces();
- //rc_actor[actor].physics.rigid_body->
- rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
-
- rc_actor[actor].physics.rigid_body->setMassProps(rc_actor[actor].physics.mass, irr::core::vector3df(0,0,0));
- rc_physics3D.world->addRigidBody(rc_actor[actor].physics.rigid_body);
-
- rc_actor[actor].mesh_node->setPosition(actor_transform.getTranslation());
-
- }
-}
-
-//translate actor from local orientation
-void rc_translateActorLocal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- irr::core::matrix4 m;
- m.setRotationDegrees(actor_transform.getRotationDegrees());
- irr::core::vector3df v(x, y, z);
- m.transformVect(v);
-
- actor_transform.setTranslation( actor_transform.getTranslation() + v );
- rc_actor[actor].physics.rigid_body->clearForces();
- rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
- rc_actor[actor].mesh_node->setPosition(actor_transform.getTranslation());
- rc_actor[actor].mesh_node->updateAbsolutePosition();
- }
-}
-
-//translate actor from world orientation
-void rc_translateActorWorld(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- actor_transform.setTranslation( actor_transform.getTranslation() + irr::core::vector3df(x, y, z) );
- rc_actor[actor].physics.rigid_body->clearForces();
- rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
- rc_actor[actor].mesh_node->setPosition(actor_transform.getTranslation());
- rc_actor[actor].mesh_node->updateAbsolutePosition();
- }
-}
-
-//get actor position
-void rc_getActorPosition(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- *x = actor_transform.getTranslation().X;
- *y = actor_transform.getTranslation().Y;
- *z = actor_transform.getTranslation().Z;
- }
-}
-
-//set actor scale
-void rc_setActorScale(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- actor_transform.setScale( irr::core::vector3df(x, y, z) );
- rc_actor[actor].physics.rigid_body->clearForces();
- rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
- rc_actor[actor].mesh_node->setScale(actor_transform.getScale());
- rc_actor[actor].mesh_node->updateAbsolutePosition();
- }
-
-}
-
-//scale actor
-void rc_scaleActor(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- actor_transform.setScale( actor_transform.getScale() * irr::core::vector3df(x, y, z) );
- rc_actor[actor].physics.rigid_body->clearForces();
- rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
- rc_actor[actor].mesh_node->setScale(actor_transform.getScale());
- rc_actor[actor].mesh_node->updateAbsolutePosition();
- }
-}
-
-//get actor scale
-void rc_getActorScale(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- *x = actor_transform.getScale().X;
- *y = actor_transform.getScale().Y;
- *z = actor_transform.getScale().Z;
- }
-}
-
-
-//set actor rotation
-void rc_setActorRotation(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- actor_transform.setRotationDegrees( irr::core::vector3df(x, y, z) );
- rc_actor[actor].physics.rigid_body->clearForces();
- rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
- rc_actor[actor].mesh_node->setRotation( actor_transform.getRotationDegrees() );
- rc_actor[actor].mesh_node->updateAbsolutePosition();
- }
-}
-
-//rotate actor
-void rc_rotateActor(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
-
- irr::core::matrix4 n;
- irr::core::vector3df rot(x, y, z);
- n.setRotationDegrees(rot);
- actor_transform *= n;
-
- rc_actor[actor].physics.rigid_body->clearForces();
- rc_actor[actor].physics.rigid_body->setWorldTransform(actor_transform);
- rc_actor[actor].mesh_node->setRotation( actor_transform.getRotationDegrees() );
- rc_actor[actor].mesh_node->updateAbsolutePosition();
- }
-}
-
-//get actor position
-void rc_getActorRotation(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- //std::cout << "Set POS" << std::endl;
- irr::core::matrix4 actor_transform = rc_actor[actor].physics.rigid_body->getWorldTransform();
- *x = actor_transform.getRotationDegrees().X;
- *y = actor_transform.getRotationDegrees().Y;
- *z = actor_transform.getRotationDegrees().Z;
- }
-}
-
-void rc_setActorGravity(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setGravity(irr::core::vector3df(x, y, z));
- }
-}
-
-void rc_getActorGravity(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df gvec = rc_actor[actor].physics.rigid_body->getGravity();
- *x = gvec.X;
- *y = gvec.Y;
- *z = gvec.Z;
- }
-}
-
-void rc_setActorDamping(int actor, double lin_damping, double ang_damping)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setDamping(lin_damping, ang_damping);
- }
-}
-
-double rc_getActorLinearDamping(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- return rc_actor[actor].physics.rigid_body->getLinearDamping();
- }
- return 0;
-}
-
-double rc_getActorAngularDamping(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- return rc_actor[actor].physics.rigid_body->getAngularDamping();
- }
- return 0;
-}
-
-double rc_getActorLinearSleepThreshold(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- return rc_actor[actor].physics.rigid_body->getLinearSleepingThreshold();
- }
- return 0;
-}
-
-double rc_getActorAngularSleepThreshold(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- return rc_actor[actor].physics.rigid_body->getAngularSleepingThreshold();
- }
- return 0;
-}
-
-void rc_applyActorDamping(int actor, double timeStep)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyDamping(timeStep);
- }
-}
-
-void rc_setActorMassProperties(int actor, double mass, double inertia_x, double inertia_y, double inertia_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_physics3D.world->removeCollisionObject(rc_actor[actor].physics.rigid_body, false);
- rc_actor[actor].physics.rigid_body->setMassProps(mass, irr::core::vector3df(inertia_x, inertia_y, inertia_z));
- rc_physics3D.world->addRigidBody(rc_actor[actor].physics.rigid_body);
- }
- rc_actor[actor].physics.mass = mass;
-}
-
-void rc_getActorLinearFactor(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df lf = rc_actor[actor].physics.rigid_body->getLinearFactor();
- *x = lf.X;
- *y = lf.Y;
- *z = lf.Z;
- }
-}
-
-void rc_setActorLinearFactor(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setLinearFactor(irr::core::vector3df(x, y, z));
- }
-}
-
-double rc_getActorInverseMass(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- return rc_actor[actor].physics.rigid_body->getInvMass();
- }
- return 0;
-}
-
-void rc_integrateActorVelocities(int actor, double step)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->integrateVelocities(step);
- }
-}
-
-void rc_applyActorCentralForceLocal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyCentralForce(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_LOCAL);
- }
-}
-
-void rc_applyActorCentralForceWorld(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyCentralForce(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_WORLD);
- }
-}
-
-void rc_getActorTotalForce(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df f = rc_actor[actor].physics.rigid_body->getTotalForce();
- *x = f.X;
- *y = f.Y;
- *z = f.Z;
- }
-}
-
-void rc_getActorTotalTorque(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df f = rc_actor[actor].physics.rigid_body->getTotalTorque();
- *x = f.X;
- *y = f.Y;
- *z = f.Z;
- }
-}
-
-void rc_getActorInverseInertiaDiagLocal(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df f = rc_actor[actor].physics.rigid_body->getInvInertiaDiagLocal();
- *x = f.X;
- *y = f.Y;
- *z = f.Z;
- }
-}
-
-void rc_setActorInverseInertiaDiagLocal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setInvInertiaDiagLocal(irr::core::vector3df(x,y,z));
- }
-}
-
-void rc_setActorSleepThresholds(int actor, double linear, double angular)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setSleepingThresholds(linear, angular);
- }
-}
-
-void rc_applyActorTorqueLocal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyTorque(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_LOCAL);
- }
-}
-
-void rc_applyActorTorqueWorld(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyTorque(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_WORLD);
- }
-}
-
-void rc_applyActorForceLocal(int actor, double x, double y, double z, double rel_x, double rel_y, double rel_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyForce(irr::core::vector3df(x,y,z), irr::core::vector3df(rel_x, rel_y, rel_z), ERBTransformSpace::ERBTS_LOCAL);
- }
-}
-
-void rc_applyActorForceWorld(int actor, double x, double y, double z, double rel_x, double rel_y, double rel_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyForce(irr::core::vector3df(x,y,z), irr::core::vector3df(rel_x, rel_y, rel_z), ERBTransformSpace::ERBTS_WORLD);
- }
-}
-
-void rc_applyActorCentralImpulseLocal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyCentralImpulse(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_LOCAL);
- }
-}
-
-void rc_applyActorCentralImpulseWorld(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyCentralImpulse(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_WORLD);
- }
-}
-
-void rc_applyActorTorqueImpulseLocal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyTorqueImpulse(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_LOCAL);
- }
-}
-
-void rc_applyActorTorqueImpulseWorld(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyTorqueImpulse(irr::core::vector3df(x,y,z), ERBTransformSpace::ERBTS_WORLD);
- }
-}
-
-void rc_applyActorImpulseLocal(int actor, double x, double y, double z, double rel_x, double rel_y, double rel_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyImpulse(irr::core::vector3df(x,y,z), irr::core::vector3df(rel_x, rel_y, rel_z), ERBTransformSpace::ERBTS_LOCAL);
- }
-}
-
-void rc_applyActorImpulseWorld(int actor, double x, double y, double z, double rel_x, double rel_y, double rel_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->applyImpulse(irr::core::vector3df(x,y,z), irr::core::vector3df(rel_x, rel_y, rel_z), ERBTransformSpace::ERBTS_WORLD);
- }
-}
-
-void rc_clearActorForces(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->clearForces();
- }
-}
-
-void rc_updateActorInertiaTensor(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->updateInertiaTensor();
- }
-}
-
-void rc_getActorCOMPosition(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df pos = rc_actor[actor].physics.rigid_body->getCenterOfMassPosition();
- *x = pos.X;
- *y = pos.Y;
- *z = pos.Z;
- }
-}
-
-void rc_getActorRotationQ(int actor, double* x, double* y, double* z, double* w)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
- *w = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::quaternion q = rc_actor[actor].physics.rigid_body->getOrientation();
- *x = q.X;
- *y = q.Y;
- *z = q.Z;
- *w = q.W;
- }
-}
-
-void rc_getActorLinearVelocityWorld(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df pos = rc_actor[actor].physics.rigid_body->getLinearVelocity();
- *x = pos.X;
- *y = pos.Y;
- *z = pos.Z;
- }
-}
-
-void rc_getActorAngularVelocityWorld(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df pos = rc_actor[actor].physics.rigid_body->getAngularVelocity();
- *x = pos.X;
- *y = pos.Y;
- *z = pos.Z;
- }
-}
-
-void rc_setActorLinearVelocityLocal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setLinearVelocity(irr::core::vector3df(x, y, z), ERBTransformSpace::ERBTS_LOCAL);
- }
-}
-
-void rc_setActorLinearVelocityWorld(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setLinearVelocity(irr::core::vector3df(x, y, z), ERBTransformSpace::ERBTS_WORLD);
- }
-}
-
-void rc_setActorAngularVelocityLocal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setAngularVelocity(irr::core::vector3df(x, y, z), ERBTransformSpace::ERBTS_LOCAL);
- }
-}
-
-void rc_setActorAngularVelocityWorld(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setAngularVelocity(irr::core::vector3df(x, y, z), ERBTransformSpace::ERBTS_WORLD);
- }
-}
-
-void rc_getActorLocalPointVelocity(int actor, double rel_x, double rel_y, double rel_z, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df pos = rc_actor[actor].physics.rigid_body->getVelocityInLocalPoint(irr::core::vector3df(rel_x, rel_y, rel_z));
- *x = pos.X;
- *y = pos.Y;
- *z = pos.Z;
- }
-}
-
-void rc_getActorLinearVelocityLocal(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->getWorldTransform().getBasis().transpose() * rc_actor[actor].physics.rigid_body->getPointer()->getLinearVelocity();
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
- }
-}
-
-void rc_getActorAngularVelocityLocal(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->getWorldTransform().getBasis().transpose() * rc_actor[actor].physics.rigid_body->getPointer()->getAngularVelocity();
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
- }
-}
-
-void rc_getActorAABB(int actor, double* min_x, double* min_y, double* min_z, double* max_x, double* max_y, double* max_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *min_x = 0;
- *min_y = 0;
- *min_z = 0;
- *max_x = 0;
- *max_y = 0;
- *max_z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df min_aabb;
- irr::core::vector3df max_aabb;
- rc_actor[actor].physics.rigid_body->getAabb(min_aabb, max_aabb);
- *min_x = min_aabb.X;
- *min_y = min_aabb.Y;
- *min_z = min_aabb.Z;
- *max_x = max_aabb.X;
- *max_y = max_aabb.Y;
- *max_z = max_aabb.Z;
- }
-}
-
-double rc_computeActorImpulseDenominator(int actor, double pos_x, double pos_y, double pos_z, double normal_x, double normal_y, double normal_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- return rc_actor[actor].physics.rigid_body->computeImpulseDenominator(irr::core::vector3df(pos_x, pos_y, pos_z), irr::core::vector3df(normal_x, normal_y, normal_z));
- }
-
- return 0;
-}
-
-double rc_computeActorAngularImpulseDenominator(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- return rc_actor[actor].physics.rigid_body->computeAngularImpulseDenominator(irr::core::vector3df(x, y, z));
- }
-
- return 0;
-}
-
-void rc_setActorAngularFactor(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- rc_actor[actor].physics.rigid_body->setAngularFactor(irr::core::vector3df(x, y, z));
- }
-}
-
-void rc_getActorAngularFactor(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- irr::core::vector3df af = rc_actor[actor].physics.rigid_body->getAngularFactor();
- *x = af.X;
- *y = af.Y;
- *z = af.Z;
- }
-}
-
-void rc_computeActorGyroImpulseLocal(int actor, double step, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->computeGyroscopicImpulseImplicit_Body(step);
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
- }
-}
-
-void rc_computeActorGyroImpulseWorld(int actor, double dt, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->computeGyroscopicImpulseImplicit_World(dt);
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
- }
-}
-
-void rc_getActorLocalInertia(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_actor[actor].physics.rigid_body)
- {
- btVector3 v = rc_actor[actor].physics.rigid_body->getPointer()->getLocalInertia();
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
- }
-}
-
-int getConstraintId()
-{
- int cid = -1;
- for(int i = 0; i < rc_physics3D.constraints.size(); i++)
- {
- if(rc_physics3D.constraints[i].type <= 0)
- {
- cid = i;
- break;
- }
- }
-
- if(cid >= 0)
- return cid;
-
- rc_constraint_obj constraint;
- cid = rc_physics3D.constraints.size();
- rc_physics3D.constraints.push_back(constraint);
- return cid;
-}
-
-int rc_createPointConstraint(int actorA, double pxA, double pyA, double pzA)
-{
- if(actorA < 0 || actorA >= rc_actor.size())
- return -1;
-
- if(rc_actor[actorA].physics.rigid_body)
- {
- rc_constraint_obj p2p;
- p2p.type = RC_CONSTRAINT_TYPE_POINT;
- btVector3 pvtA(pxA, pyA, pzA);
- p2p.constraint = new btPoint2PointConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), pvtA);
- rc_physics3D.world->getPointer()->addConstraint(p2p.constraint);
- int constraint_id = getConstraintId();
- rc_physics3D.constraints[constraint_id] = p2p;
- return constraint_id;
- }
-
- return -1;
-}
-
-int rc_createPointConstraintEx(int actorA, int actorB, double pxA, double pyA, double pzA, double pxB, double pyB, double pzB)
-{
- if(actorA < 0 || actorA >= rc_actor.size() || actorB < 0 || actorB >= rc_actor.size())
- return -1;
-
- if(rc_actor[actorA].physics.rigid_body && rc_actor[actorB].physics.rigid_body)
- {
- rc_constraint_obj p2p;
- p2p.type = RC_CONSTRAINT_TYPE_POINT;
- btVector3 pvtA(pxA, pyA, pzA);
- btVector3 pvtB(pxB, pyB, pzB);
- p2p.constraint = new btPoint2PointConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), *rc_actor[actorB].physics.rigid_body->getPointer(),
- pvtA, pvtB);
- rc_physics3D.world->getPointer()->addConstraint(p2p.constraint);
- int constraint_id = getConstraintId();
- rc_physics3D.constraints[constraint_id] = p2p;
- return constraint_id;
- }
-
- return -1;
-}
-
-void rc_setPointPivotA(int constraint_id, double x, double y, double z)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* c = (btPoint2PointConstraint*)rc_physics3D.constraints[constraint_id].constraint;
- c->setPivotA(btVector3(x, y, z));
- }
-}
-
-void rc_setPointPivotB(int constraint_id, double x, double y, double z)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* c = (btPoint2PointConstraint*)rc_physics3D.constraints[constraint_id].constraint;
- c->setPivotB(btVector3(x, y, z));
- }
-}
-
-int rc_createHingeConstraint(int actorA, int frameInA_matrix, bool useReferenceFrameA)
-{
- if(actorA < 0 || actorA >= rc_actor.size())
- return -1;
-
- if(rc_actor[actorA].physics.rigid_body)
- {
- rc_constraint_obj hinge;
- hinge.type = RC_CONSTRAINT_TYPE_HINGE;
-
- irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(frameInA_matrix);
- btTransform frameInA;
- btTransformFromIrrlichtMatrix(irr_matA, frameInA);
-
- hinge.constraint = new btHingeConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), frameInA, useReferenceFrameA);
- rc_physics3D.world->getPointer()->addConstraint(hinge.constraint);
- int constraint_id = getConstraintId();
- rc_physics3D.constraints[constraint_id] = hinge;
- return constraint_id;
- }
-
- return -1;
-}
-
-
-int rc_createHingeConstraintEx(int actorA, int actorB, int frameInA_matrix, int frameInB_matrix, bool useReferenceFrameA)
-{
- if(actorA < 0 || actorA >= rc_actor.size() || actorB < 0 || actorB >= rc_actor.size())
- return -1;
-
- if(rc_actor[actorA].physics.rigid_body && rc_actor[actorB].physics.rigid_body)
- {
- rc_constraint_obj hinge;
- hinge.type = RC_CONSTRAINT_TYPE_HINGE;
-
- irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(frameInA_matrix);
- irr::core::matrix4 irr_matB = rc_convertToIrrMatrix(frameInB_matrix);
-
- btTransform frameInA, frameInB;
- btTransformFromIrrlichtMatrix(irr_matA, frameInA);
- btTransformFromIrrlichtMatrix(irr_matB, frameInB);
-
- hinge.constraint = new btHingeConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), *rc_actor[actorB].physics.rigid_body->getPointer(), frameInA, frameInB, useReferenceFrameA);
- rc_physics3D.world->getPointer()->addConstraint(hinge.constraint);
- int constraint_id = getConstraintId();
- rc_physics3D.constraints[constraint_id] = hinge;
- return constraint_id;
- }
-
- return -1;
-}
-
-int rc_createSlideConstraint(int actorA, int frameInB_matrix, bool useLinearReferenceFrameA)
-{
- if(actorA < 0 || actorA >= rc_actor.size())
- return -1;
-
- if(rc_actor[actorA].physics.rigid_body)
- {
- rc_constraint_obj slide;
- slide.type = RC_CONSTRAINT_TYPE_SLIDER;
-
- irr::core::matrix4 irr_mat = rc_convertToIrrMatrix(frameInB_matrix);
- btTransform frameInB;
- btTransformFromIrrlichtMatrix(irr_mat, frameInB);
-
- slide.constraint = new btSliderConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), frameInB, useLinearReferenceFrameA);
- rc_physics3D.world->getPointer()->addConstraint(slide.constraint);
- int constraint_id = getConstraintId();
- rc_physics3D.constraints[constraint_id] = slide;
- return constraint_id;
- }
-
- return -1;
-}
-
-int rc_createSlideConstraintEx(int actorA, int actorB, int frameInA_matrix, int frameInB_matrix, bool useLinearReferenceFrameA)
-{
- if(actorA < 0 || actorA >= rc_actor.size() || actorB < 0 || actorB >= rc_actor.size())
- return -1;
-
- if(rc_actor[actorA].physics.rigid_body && rc_actor[actorB].physics.rigid_body)
- {
- rc_constraint_obj slide;
- slide.type = RC_CONSTRAINT_TYPE_SLIDER;
-
- irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(frameInA_matrix);
- irr::core::matrix4 irr_matB = rc_convertToIrrMatrix(frameInB_matrix);
-
- btTransform frameInA, frameInB;
- btTransformFromIrrlichtMatrix(irr_matA, frameInA);
- btTransformFromIrrlichtMatrix(irr_matB, frameInB);
-
- slide.constraint = new btSliderConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), *rc_actor[actorB].physics.rigid_body->getPointer(), frameInA, frameInB, useLinearReferenceFrameA);
- rc_physics3D.world->getPointer()->addConstraint(slide.constraint);
- int constraint_id = getConstraintId();
- rc_physics3D.constraints[constraint_id] = slide;
- return constraint_id;
- }
-
- return -1;
-}
-
-
-int rc_createConeConstraint(int actorA, int rbAFrame_matrix)
-{
- if(actorA < 0 || actorA >= rc_actor.size())
- return -1;
-
- if(rc_actor[actorA].physics.rigid_body)
- {
- rc_constraint_obj cone;
- cone.type = RC_CONSTRAINT_TYPE_CONE;
-
- irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(rbAFrame_matrix);
-
- btTransform rba;
- btTransformFromIrrlichtMatrix(irr_matA, rba);
-
- cone.constraint = new btConeTwistConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), rba);
- rc_physics3D.world->getPointer()->addConstraint(cone.constraint);
- int constraint_id = getConstraintId();
- rc_physics3D.constraints[constraint_id] = cone;
- return constraint_id;
- }
-
- return -1;
-}
-
-int rc_createConeConstraintEx(int actorA, int actorB, int rbAFrame_matrix, int rbBFrame_matrix)
-{
- if(actorA < 0 || actorA >= rc_actor.size() || actorB < 0 || actorB >= rc_actor.size())
- return -1;
-
- if(rc_actor[actorA].physics.rigid_body && rc_actor[actorB].physics.rigid_body)
- {
- rc_constraint_obj cone;
- cone.type = RC_CONSTRAINT_TYPE_CONE;
-
- irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(rbAFrame_matrix);
- irr::core::matrix4 irr_matB = rc_convertToIrrMatrix(rbBFrame_matrix);
-
- btTransform rba, rbb;
- btTransformFromIrrlichtMatrix(irr_matA, rba);
- btTransformFromIrrlichtMatrix(irr_matB, rbb);
-
- cone.constraint = new btConeTwistConstraint(*rc_actor[actorA].physics.rigid_body->getPointer(), *rc_actor[actorB].physics.rigid_body->getPointer(), rba, rbb);
- rc_physics3D.world->getPointer()->addConstraint(cone.constraint);
- int constraint_id = getConstraintId();
- rc_physics3D.constraints[constraint_id] = cone;
- return constraint_id;
- }
-
- return -1;
-}
-
-void rc_deleteConstraint(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].constraint)
- {
- rc_physics3D.world->getPointer()->removeConstraint(rc_physics3D.constraints[constraint_id].constraint);
- rc_physics3D.constraints[constraint_id].constraint = NULL;
- rc_physics3D.constraints[constraint_id].type = 0;
- }
-}
-
-bool rc_constraintExists(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return false;
-
- if(rc_physics3D.constraints[constraint_id].constraint)
- return true;
-
- return false;
-}
-
-
-void rc_getConstraintFrameOffsetA(int constraint_id, double* x, double* y, double* z, double* rx, double* ry, double* rz)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- *rx = 0;
- *ry = 0;
- *rz = 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*)rc_physics3D.constraints[constraint_id].constraint;
- //btTransform t = hinge->getFrameOffsetA();
- //t.getBasis().getEulerZYX()
- *x = hinge->getFrameOffsetA().getOrigin().getX();
- *y = hinge->getFrameOffsetA().getOrigin().getY();
- *z = hinge->getFrameOffsetA().getOrigin().getZ();
-
- btScalar yaw, pitch, roll;
- hinge->getFrameOffsetA().getBasis().getEulerZYX(yaw, pitch, roll);
- *rx = roll;
- *ry = pitch;
- *rz = yaw;
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*)rc_physics3D.constraints[constraint_id].constraint;
- *x = cone->getFrameOffsetA().getOrigin().getX();
- *y = cone->getFrameOffsetA().getOrigin().getY();
- *z = cone->getFrameOffsetA().getOrigin().getZ();
-
- btScalar yaw, pitch, roll;
- cone->getFrameOffsetA().getBasis().getEulerZYX(yaw, pitch, roll);
- *rx = roll;
- *ry = pitch;
- *rz = yaw;
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*)rc_physics3D.constraints[constraint_id].constraint;
- *x = slide->getFrameOffsetA().getOrigin().getX();
- *y = slide->getFrameOffsetA().getOrigin().getY();
- *z = slide->getFrameOffsetA().getOrigin().getZ();
-
- btScalar yaw, pitch, roll;
- slide->getFrameOffsetA().getBasis().getEulerZYX(yaw, pitch, roll);
- *rx = roll;
- *ry = pitch;
- *rz = yaw;
- }
-}
-
-void rc_getConstraintFrameOffsetB(int constraint_id, double* x, double* y, double* z, double* rx, double* ry, double* rz)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- *rx = 0;
- *ry = 0;
- *rz = 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*)rc_physics3D.constraints[constraint_id].constraint;
- *x = hinge->getFrameOffsetB().getOrigin().getX();
- *y = hinge->getFrameOffsetB().getOrigin().getY(); btTransform:
- *z = hinge->getFrameOffsetB().getOrigin().getZ();
-
- btScalar yaw, pitch, roll;
- hinge->getFrameOffsetB().getBasis().getEulerZYX(yaw, pitch, roll);
- *rx = roll;
- *ry = pitch;
- *rz = yaw;
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*)rc_physics3D.constraints[constraint_id].constraint;
- *x = cone->getFrameOffsetB().getOrigin().getX();
- *y = cone->getFrameOffsetB().getOrigin().getY();
- *z = cone->getFrameOffsetB().getOrigin().getZ();
-
- btScalar yaw, pitch, roll;
- cone->getFrameOffsetB().getBasis().getEulerZYX(yaw, pitch, roll);
- *rx = roll;
- *ry = pitch;
- *rz = yaw;
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*)rc_physics3D.constraints[constraint_id].constraint;
- *x = slide->getFrameOffsetB().getOrigin().getX();
- *y = slide->getFrameOffsetB().getOrigin().getY();
- *z = slide->getFrameOffsetB().getOrigin().getZ();
-
- btScalar yaw, pitch, roll;
- slide->getFrameOffsetB().getBasis().getEulerZYX(yaw, pitch, roll);
- *rx = roll;
- *ry = pitch;
- *rz = yaw;
- }
-}
-
-
-void rc_useConstraintFrameOffset(int constraint_id, bool flag)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- hinge->setUseFrameOffset(flag);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setUseFrameOffset(flag);
- }
-}
-
-//btHingeConstraint::getHingeAngle()
-double rc_getHingeAngle(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getHingeAngle();
- }
-
- return 0;
-}
-
-double rc_getHingeAngleEx(int constraint_id, int t_matrixA, int t_matrixB)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btTransform transformA, transformB;
- irr::core::matrix4 irr_matA = rc_convertToIrrMatrix(t_matrixA);
- irr::core::matrix4 irr_matB = rc_convertToIrrMatrix(t_matrixB);
- btTransformFromIrrlichtMatrix(irr_matA, transformA);
- btTransformFromIrrlichtMatrix(irr_matB, transformB);
- return hinge->getHingeAngle(transformA, transformB);
- }
-
- return 0;
-}
-
-//btHingeConstraint::getBreakingImpulseThreshold()
-double rc_getConstraintBreakingImpulseThreshold(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getBreakingImpulseThreshold();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return p2p->getBreakingImpulseThreshold();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getBreakingImpulseThreshold();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getBreakingImpulseThreshold();
- }
-
- return 0;
-}
-
-//btHingeConstraint::getAFrame()
-int rc_getConstraintAFrame(int constraint_id, int mA)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return -1;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btTransform aframe = hinge->getAFrame();
- irr::core::matrix4 irr_mat;
- btTransformToIrrlichtMatrix(aframe, irr_mat);
- mA = rc_convertFromIrrMatrix(irr_mat, mA);
- return mA;
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btTransform aframe = cone->getAFrame();
- irr::core::matrix4 irr_mat;
- btTransformToIrrlichtMatrix(aframe, irr_mat);
- mA = rc_convertFromIrrMatrix(irr_mat, mA);
- return mA;
- }
-
- return -1;
-}
-
-//btHingeConstraint::getBFrame()
-int rc_getConstraintBFrame(int constraint_id, int mA)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return -1;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btTransform bframe = hinge->getBFrame();
- irr::core::matrix4 irr_mat;
- btTransformToIrrlichtMatrix(bframe, irr_mat);
- mA = rc_convertFromIrrMatrix(irr_mat, mA);
- return mA;
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btTransform bframe = cone->getBFrame();
- irr::core::matrix4 irr_mat;
- btTransformToIrrlichtMatrix(bframe, irr_mat);
- mA = rc_convertFromIrrMatrix(irr_mat, mA);
- return mA;
- }
-
- return -1;
-}
-
-//btHingeConstraint::setAxis()
-void rc_setHingeAxis(int constraint_id, double x, double y, double z)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btVector3 axis(x,y,z);
- hinge->setAxis(axis);
- }
-}
-
-//btHingeConstraint::setBreakingImpulseThreshold()
-void rc_setConstraintBreakingImpulseThreshold(int constraint_id, double threshold)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- hinge->setBreakingImpulseThreshold(threshold);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- p2p->setBreakingImpulseThreshold(threshold);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- cone->setBreakingImpulseThreshold(threshold);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setBreakingImpulseThreshold(threshold);
- }
-}
-
-//btHingeConstraint::setFrames()
-void rc_setConstraintFrames(int constraint_id, int frameA_matrix, int frameB_matrix)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btTransform frameA, frameB;
- irr::core::matrix4 irr_matA, irr_matB;
- irr_matA = rc_convertToIrrMatrix(frameA_matrix);
- irr_matB = rc_convertToIrrMatrix(frameB_matrix);
- btTransformFromIrrlichtMatrix(irr_matA, frameA);
- btTransformFromIrrlichtMatrix(irr_matB, frameB);
- hinge->setFrames(frameA, frameB);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btTransform frameA, frameB;
- irr::core::matrix4 irr_matA, irr_matB;
- irr_matA = rc_convertToIrrMatrix(frameA_matrix);
- irr_matB = rc_convertToIrrMatrix(frameB_matrix);
- btTransformFromIrrlichtMatrix(irr_matA, frameA);
- btTransformFromIrrlichtMatrix(irr_matB, frameB);
- cone->setFrames(frameA, frameB);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btTransform frameA, frameB;
- irr::core::matrix4 irr_matA, irr_matB;
- irr_matA = rc_convertToIrrMatrix(frameA_matrix);
- irr_matB = rc_convertToIrrMatrix(frameB_matrix);
- btTransformFromIrrlichtMatrix(irr_matA, frameA);
- btTransformFromIrrlichtMatrix(irr_matB, frameB);
- slide->setFrames(frameA, frameB);
- }
-}
-
-//btHingeConstraint::setLimit();
-void rc_setHingeLimit(int constraint_id, double low, double high, double softness, double bias_factor, double relaxation_factor)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- hinge->setLimit(low, high, softness, bias_factor, relaxation_factor);
- }
-}
-
-void rc_setConeLimit(int constraint_id, double swingSpan1, double swingSpan2, double twistSpan, double softness, double bias_factor, double relaxation_factor)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- cone->setLimit(swingSpan1, swingSpan2, twistSpan, softness, bias_factor, relaxation_factor);
- }
-}
-
-//btHingeConstraint::getLimitBiasFactor()
-double rc_getHingeLimitBiasFactor(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getLimitBiasFactor();
- }
-
- return 0;
-}
-
-//btHingeConstraint::getLimitRelaxationFactor()
-double rc_getHingeLimitRelaxationFactor(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getLimitRelaxationFactor();
- }
-
- return 0;
-}
-
-//btHingeConstraint::getLimitSign()
-double rc_getHingeLimitSign(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getLimitSign();
- }
-
- return 0;
-}
-
-//btHingeConstraint::getSolveLimit()
-int rc_getHingeSolveLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getSolveLimit();
- }
-
- return 0;
-}
-
-//btHingeConstraint::setUseReferenceFrameA()
-void rc_useHingeReferenceFrameA(int constraint_id, bool flag)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- hinge->setUseReferenceFrameA(flag);
- }
-}
-
-
-//
-//btPoint2PointConstraint::getAppliedImpulse()
-double rc_getConstraintAppliedImpulse(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getAppliedImpulse();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return p2p->getAppliedImpulse();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getAppliedImpulse();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getAppliedImpulse();
- }
-
- return 0;
-}
-
-
-//btPoint2PointConstraint::getFixedBody()
-int rc_getConstraintFixedActor(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return -1;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = hinge->getFixedBody();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = p2p->getFixedBody();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = cone->getFixedBody();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = slide->getFixedBody();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
-
- return -1;
-}
-
-//btPoint2PointConstraint::getPivotInA()
-void rc_getPointPivotA(int constraint_id, double* x, double* y, double* z)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btVector3 pivot = p2p->getPivotInA();
- *x = pivot.getX();
- *y = pivot.getY();
- *z = pivot.getZ();
- }
-}
-
-//btPoint2PointConstraint::getPivotInB()
-void rc_getPointPivotB(int constraint_id, double* x, double* y, double* z)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btVector3 pivot = p2p->getPivotInB();
- *x = pivot.getX();
- *y = pivot.getY();
- *z = pivot.getZ();
- }
-}
-
-//btPoint2PointConstraint::getRigidBodyA()
-int rc_getConstraintActorA(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return -1;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = hinge->getRigidBodyA();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = p2p->getRigidBodyA();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = cone->getRigidBodyA();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = slide->getRigidBodyA();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
-
- return -1;
-}
-
-//btPoint2PointConstraint::getRigidBodyB()
-int rc_getConstraintActorB(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return -1;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = hinge->getRigidBodyB();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = p2p->getRigidBodyB();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = cone->getRigidBodyB();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btRigidBody body = slide->getRigidBodyB();
- SCollisionObjectIdentification* identification = (SCollisionObjectIdentification*)body.getUserPointer();
- return identification->getId();
- }
-
- return -1;
-}
-
-//btPoint2PointConstraint::setOverrideNumSolverIterations()
-void rc_setConstraintSolverIterations(int constraint_id, int num)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- hinge->setOverrideNumSolverIterations(num);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- p2p->setOverrideNumSolverIterations(num);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- cone->setOverrideNumSolverIterations(num);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setOverrideNumSolverIterations(num);
- }
-}
-
-//
-//btConeTwistConstraint::getBiasFactor()
-double rc_getConeBiasFactor(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getBiasFactor();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getDamping()
-double rc_getConeDamping(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getDamping();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getFixThresh()
-double rc_getConeFixThresh(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getFixThresh();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getLimit()
-double rc_getConeLimit(int constraint_id, int limit_index)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getLimit(limit_index);
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getLimitSoftness()
-double rc_getConstraintLimitSoftness(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getLimitSoftness();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getLimitSoftness();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getOverrideNumSolverIterations()
-double rc_getConstraintSolverIterations(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getOverrideNumSolverIterations();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_POINT)
- {
- btPoint2PointConstraint* p2p = (btPoint2PointConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return p2p->getOverrideNumSolverIterations();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getOverrideNumSolverIterations();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getOverrideNumSolverIterations();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::GetPointForAngle()
-void rc_getConeAnglePoint(int constraint_id, double angle, double len, double* x, double* y, double* z)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btVector3 v = cone->GetPointForAngle( radians(angle), len);
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
- }
-}
-
-//btConeTwistConstraint::getAngularOnly()
-bool rc_getConstraintAngularOnly(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return false;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return hinge->getAngularOnly();
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getAngularOnly();
- }
-
- return false;
-}
-
-//btConeTwistConstraint::getSolveSwingLimit()
-int rc_getConeSolveSwingLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getSolveSwingLimit();
- }
-
- return 0;
-}
-
-int rc_getConeSolveTwistLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getSolveTwistLimit();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getSwingSpan1()
-double rc_getConeSwingSpan1(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getSwingSpan1();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getSwingSpan2()
-int rc_getConeSwingSpan2(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getSwingSpan2();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getTwistAngle()
-double rc_getConeTwistAngle(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getTwistAngle();
- }
-
- return 0;
-}
-
-
-//btConeTwistConstraint::getTwistLimitSign()
-double rc_getConeTwistLimitSign(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getTwistLimitSign();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::getTwistSpan()
-int rc_getConeTwistSpan(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return cone->getTwistSpan();
- }
-
- return 0;
-}
-
-//btConeTwistConstraint::setAngularOnly()
-void rc_setConstraintAngularOnly(int constraint_id, bool flag)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_HINGE)
- {
- btHingeConstraint* hinge = (btHingeConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- hinge->setAngularOnly(flag);
- }
- else if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- cone->setAngularOnly(flag);
- }
-}
-
-//btConeTwistConstraint::setDamping()
-void rc_setConeDamping(int constraint_id, double damping)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- cone->setDamping(damping);
- }
-}
-
-//btConeTwistConstraint::setFixThresh()
-void rc_setConeFixThresh(int constraint_id, double fixThresh)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_CONE)
- {
- btConeTwistConstraint* cone = (btConeTwistConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- cone->setFixThresh(fixThresh);
- }
-}
-
-
-//btSliderConstraint::getAncorInA()
-void rc_getSlideAnchorA(int constraint_id, double* x, double* y, double* z)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btVector3 v = slide->getAncorInA();
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
- }
-}
-
-//btSliderConstraint::getAncorInB()
-void rc_getSlideAnchorB(int constraint_id, double* x, double* y, double* z)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- btVector3 v = slide->getAncorInB();
- *x = v.getX();
- *y = v.getY();
- *z = v.getZ();
- }
-}
-
-//btSliderConstraint::getAngDepth()
-double rc_getSlideAngDepth(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getAngDepth();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getAngularPos()
-double rc_getSlideAngularPos(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getAngularPos();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getDampingDirAng()
-double rc_getSlideDampingDirAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getDampingDirAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getDampingDirLin()
-double rc_getSlideDampingDirLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getDampingDirLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getDampingLimAng()
-double rc_getSlideDampingLimAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getDampingLimAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getDampingLimLin()
-double rc_getSlideDampingLimLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getDampingLimLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getDampingOrthoAng()
-double rc_getSlideDampingOrthoAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getDampingOrthoAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getDampingOrthoLin()
-double rc_getSlideDampingOrthoLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getDampingOrthoLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getLinearPos()
-double rc_getSlideLinearPos(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getLinearPos();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getLinDepth()
-double rc_getSlideLinDepth(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getLinDepth();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getLowerAngLimit()
-double rc_getSlideLowerAngLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getLowerAngLimit();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getLowerLinLimit()
-double rc_getSlideLowerLinLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getLowerLinLimit();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getRestitutionDirAng()
-double rc_getSlideRestitutionDirAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getRestitutionDirAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getRestitutionDirLin()
-double rc_getSlideRestitutionDirLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getRestitutionDirLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getRestitutionLimAng()
-double rc_getSlideRestitutionLimAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getRestitutionLimAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getRestitutionLimLin()
-double rc_getSlideRestitutionLimLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getRestitutionLimLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getRestitutionOrthoAng()
-double rc_getSlideRestitutionOrthoAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getRestitutionOrthoAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getRestitutionOrthoLin()
-double rc_getSlideRestitutionOrthoLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getRestitutionOrthoLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getSoftnessDirAng()
-double rc_getSlideSoftnessDirAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getSoftnessDirAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getSoftnessDirLin()
-double rc_getSlideSoftnessDirLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getSoftnessDirLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getSoftnessLimAng()
-double rc_getSlideSoftnessLimAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getSoftnessLimAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getSoftnessLimLin()
-double rc_getSlideSoftnessLimLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getSoftnessLimLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getSoftnessOrthoAng()
-double rc_getSlideSoftnessOrthoAng(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getSoftnessOrthoAng();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getSoftnessOrthoLin()
-double rc_getSlideSoftnessOrthoLin(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getSoftnessOrthoLin();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getSolveAngLimit()
-bool rc_getSlideSolveAngLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getSolveAngLimit();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getSolveLinLimit()
-bool rc_getSlideSolveLinLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getSolveLinLimit();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getUpperAngLimit()
-double rc_getSlideUpperAngLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getUpperAngLimit();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getUpperLinLimit()
-double rc_getSlideUpperLinLimit(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getUpperLinLimit();
- }
-
- return 0;
-}
-
-//btSliderConstraint::getUseFrameOffset()
-bool rc_getSlideUseFrameOffset(int constraint_id)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return 0;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- return slide->getUseFrameOffset();
- }
-
- return 0;
-}
-
-//btSliderConstraint::setDampingDirAng()
-void rc_setSlideDampingDirAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setDampingDirAng(n);
- }
-}
-
-//btSliderConstraint::setDampingDirLin()
-void rc_setSlideDampingDirLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setDampingDirLin(n);
- }
-}
-
-//btSliderConstraint::setDampingLimAng()
-void rc_setSlideDampingLimAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setDampingLimAng(n);
- }
-}
-
-//btSliderConstraint::setDampingLimLin()
-void rc_setSlideDampingLimLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setDampingLimLin(n);
- }
-}
-
-//btSliderConstraint::setDampingOrthoAng()
-void rc_setSlideDampingOrthoAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setDampingOrthoAng(n);
- }
-}
-
-//btSliderConstraint::setDampingOrthoLin()
-void rc_setSlideDampingOrthoLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setDampingOrthoLin(n);
- }
-}
-
-//btSliderConstraint::setLowerAngLimit()
-void rc_setSlideLowerAngLimit(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setLowerAngLimit(n);
- }
-}
-
-//btSliderConstraint::setLowerLinLimit()
-void rc_setSlideLowerLinLimit(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setLowerLinLimit(n);
- }
-}
-
-//btSliderConstraint::setRestitutionDirAng()
-void rc_setSlideRestitutionDirAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setRestitutionDirAng(n);
- }
-}
-
-//btSliderConstraint::setRestitutionDirLin()
-void rc_setSlideRestitutionDirLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setRestitutionDirLin(n);
- }
-}
-
-//btSliderConstraint::setRestitutionLimAng()
-void rc_setSlideRestitutionLimAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setRestitutionLimAng(n);
- }
-}
-
-//btSliderConstraint::setRestitutionLimLin()
-void rc_setSlideRestitutionLimLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setRestitutionLimLin(n);
- }
-}
-
-//btSliderConstraint::setRestitutionOrthoAng()
-void rc_setSlideRestitutionOrthoAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setRestitutionOrthoAng(n);
- }
-}
-
-//btSliderConstraint::setRestitutionOrthoLin()
-void rc_setSlideRestitutionOrthoLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setRestitutionOrthoLin(n);
- }
-}
-
-//btSliderConstraint::setSoftnessDirAng()
-void rc_setSlideSoftnessDirAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setSoftnessDirAng(n);
- }
-}
-
-//btSliderConstraint::setSoftnessDirLin()
-void rc_setSlideSoftnessDirLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setSoftnessDirLin(n);
- }
-}
-
-//btSliderConstraint::setSoftnessLimAng()
-void rc_setSlideSoftnessLimAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setSoftnessLimAng(n);
- }
-}
-
-//btSliderConstraint::setSoftnessLimLin()
-void rc_setSlideSoftnessLimLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setSoftnessLimLin(n);
- }
-}
-
-//btSliderConstraint::setSoftnessOrthoAng()
-void rc_setSlideSoftnessOrthoAng(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setSoftnessOrthoAng(n);
- }
-}
-
-//btSliderConstraint::setSoftnessOrthoLin()
-void rc_setSlideSoftnessOrthoLin(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setSoftnessOrthoLin(n);
- }
-}
-
-//btSliderConstraint::setUpperAngLimit()
-void rc_setSlideUpperAngLimit(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setUpperAngLimit(n);
- }
-}
-
-//btSliderConstraint::setUpperLinLimit()
-void rc_setSlideUpperLinLimit(int constraint_id, double n)
-{
- if(constraint_id < 0 || constraint_id >= rc_physics3D.constraints.size())
- return;
-
- if(rc_physics3D.constraints[constraint_id].type == RC_CONSTRAINT_TYPE_SLIDER)
- {
- btSliderConstraint* slide = (btSliderConstraint*) rc_physics3D.constraints[constraint_id].constraint;
- slide->setUpperLinLimit(n);
- }
-}
-
-
-
-
-
-void rc_setWorld3DDeltaTime(double dt)
-{
- rc_physics3D.DeltaTime = dt;
-}
-
-void rc_setWorld3DMaxSubSteps(double steps)
-{
- rc_physics3D.maxSubSteps = steps;
-}
-
-void rc_setWorld3DTimeStep(double ts)
-{
- rc_physics3D.fixedTimeStep = ts;
-}
-
-
-//set actor animation [TODO]
-int rc_createActorAnimation(int actor, int start_frame, int end_frame, double speed)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- rc_actor_animation_obj animation;
- animation.active = true;
- animation.start_frame = start_frame;
- animation.end_frame = end_frame;
- animation.fps = speed;
- animation.frame_swap_time = 1000/speed;
-
- int animation_id = rc_actor[actor].animation.size();
-
- if(rc_actor[actor].deleted_animation.size() > 0)
- {
- animation_id = rc_actor[actor].deleted_animation[0];
- rc_actor[actor].deleted_animation.erase(0);
- rc_actor[actor].animation[animation_id] = animation;
- }
- else
- rc_actor[actor].animation.push_back(animation);
-
- return animation_id;
-}
-
-void rc_deleteActorAnimation(int actor, int animation)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(animation < 0 || animation >= rc_actor[actor].animation.size())
- return;
-
- if(!rc_actor[actor].animation[animation].active)
- return;
-
- rc_actor[actor].animation[animation].active = false;
- rc_actor[actor].deleted_animation.push_back(animation);
-}
-
-void rc_setActorAnimation(int actor, int animation, int num_loops)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(animation < 0 || animation >= rc_actor[actor].animation.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- int start_frame = rc_actor[actor].animation[animation].start_frame;
- int end_frame = rc_actor[actor].animation[animation].end_frame;
- rc_actor[actor].current_animation = animation;
- rc_actor[actor].current_animation_loop = 0;
- rc_actor[actor].num_animation_loops = num_loops;
- rc_actor[actor].isPlaying = true;
- node->setCurrentFrame(start_frame);
- node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame );
- node->setAnimationSpeed(rc_actor[actor].animation[animation].fps);
- break;
- }
-}
-
-int rc_getActorCurrentAnimation(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- return rc_actor[actor].current_animation;
-}
-
-int rc_numActorAnimationLoops(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- return rc_actor[actor].num_animation_loops;
-}
-
-bool rc_actorAnimationIsPlaying(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- return rc_actor[actor].isPlaying;
-}
-
-void rc_setActorMD2Animation(int actor, int md2_animation, int num_loops)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- node->setMD2Animation( (irr::scene::EMD2_ANIMATION_TYPE) md2_animation );
-
- //int start_frame = node->getStartFrame();
- //int end_frame = node->getEndFrame();
- rc_actor[actor].current_animation = RC_ANIMATION_MD2;
- rc_actor[actor].current_animation_loop = 0;
- rc_actor[actor].num_animation_loops = num_loops;
- rc_actor[actor].isPlaying = true;
- //node->setCurrentFrame(start_frame);
- //node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame ); //setMD2Animation() does this for me
- node->setAnimationSpeed(node->getMesh()->getAnimationSpeed());
- break;
- }
-}
-
-void rc_setActorMD2AnimationByName(int actor, std::string animation_name, int num_loops)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- node->setMD2Animation( animation_name.c_str() );
-
- //int start_frame = node->getStartFrame();
- //int end_frame = node->getEndFrame();
- rc_actor[actor].current_animation = RC_ANIMATION_MD2;
- rc_actor[actor].current_animation_loop = 0;
- rc_actor[actor].num_animation_loops = num_loops;
- rc_actor[actor].isPlaying = true;
- //node->setCurrentFrame(start_frame);
- //node->setFrameLoop((irr::s32)start_frame, (irr::s32)end_frame ); //setMD2Animation() does this for me
- node->setAnimationSpeed(node->getMesh()->getAnimationSpeed());
- break;
- }
-}
-
-int rc_getActorAnimationStartFrame(int actor, int animation)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(animation < 0 || animation >= rc_actor[actor].animation.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- if(rc_actor[actor].current_animation == animation)
- {
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- return node->getStartFrame();
- }
- else
- {
- return rc_actor[actor].animation[animation].start_frame;
- }
- }
-
- return 0;
-}
-
-int rc_getActorAnimationEndFrame(int actor, int animation)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(animation < 0 || animation >= rc_actor[actor].animation.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- if(rc_actor[actor].current_animation == animation)
- {
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- return node->getEndFrame();
- }
- else
- {
- return rc_actor[actor].animation[animation].end_frame;
- }
- }
-
- return 0;
-}
-
-int rc_getActorFrame(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- return node->getFrameNr();
- }
-
- return 0;
-}
-
-//set actor animation speed
-void rc_setActorAnimationSpeed(int actor, int animation, double speed)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(animation < 0 || animation >= rc_actor[actor].animation.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- rc_actor[actor].animation[animation].fps = speed;
-
- if(animation == rc_actor[actor].current_animation)
- {
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- node->setAnimationSpeed( (irr::f32)speed );
- }
- break;
- }
-}
-
-double rc_getActorAnimationSpeed(int actor, int animation)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(animation < 0 || animation >= rc_actor[actor].animation.size())
- return 0;
-
- return rc_actor[actor].animation[animation].fps;
-}
-
-void rc_setActorFrame(int actor, int frame)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- rc_actor[actor].animation[0].start_frame = frame;
- rc_actor[actor].animation[0].end_frame = frame;
- rc_actor[actor].animation[0].fps = 0;
- rc_actor[actor].current_animation_loop = 0;
- rc_actor[actor].isPlaying = true;
- rc_actor[actor].current_animation = 0;
- node->setCurrentFrame(frame);
- break;
- }
-}
-
-void rc_setActorAnimationFrames(int actor, int animation, int start_frame, int end_frame)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(animation < 0 || animation >= rc_actor[actor].animation.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- rc_actor[actor].animation[animation].start_frame = start_frame;
- rc_actor[actor].animation[animation].end_frame = end_frame;
-
- if(animation == rc_actor[actor].current_animation)
- {
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- node->setFrameLoop(start_frame, end_frame);
- }
- break;
- }
-}
-
-void rc_startActorTransition(int actor, double frame, double transition_time)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].transition)
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- node->setTransitionTime(transition_time);
- //node->setJointMode(irr::scene::EJUOR_CONTROL); //This is actually called in setTransitionTime()
- node->setCurrentFrame(frame);
- rc_actor[actor].transition_frame = frame;
- rc_actor[actor].transition = true;
- rc_actor[actor].transition_time = transition_time;
- rc_actor[actor].transition_start_time = ((double)SDL_GetTicks())/1000.0;
- rc_actor[actor].current_animation = RC_ANIMATION_TRANSITION;
- rc_transition_actor.push_back(actor);
- }
-}
-
-double rc_getActorTransitionTime(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].transition)
- return rc_actor[actor].transition_time;
-
- return 0;
-}
-
-
-void rc_stopActorTransition(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- node->setTransitionTime(0);
- node->setJointMode(irr::scene::EJUOR_NONE);
- rc_actor[actor].transition = false;
- rc_actor[actor].transition_time = 0;
-
- rc_setActorFrame(actor, rc_actor[actor].transition_frame);
-
- for(int i = 0; i < rc_transition_actor.size();)
- {
- if(rc_transition_actor[i] == actor)
- {
- rc_transition_actor.erase(i);
- }
- else
- i++;
- }
- }
-}
-
-bool rc_actorIsInTransition(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return false;
-
- return rc_actor[actor].transition;
-}
-
-
-
-
-
-//set actor animation speed
-void rc_setActorAutoCulling(int actor, int cull_type)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- rc_actor[actor].mesh_node->setAutomaticCulling((irr::scene::E_CULLING_TYPE) cull_type);
-}
-
-int rc_getActorAutoCulling(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].mesh_node)
- return rc_actor[actor].mesh_node->getAutomaticCulling();
-
- return 0;
-}
-
-
-void rc_addActorShadow(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].shadow)
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- case RC_NODE_TYPE_OTMESH:
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- rc_actor[actor].shadow = node->addShadowVolumeSceneNode();
- break;
- }
-}
-
-void rc_removeActorShadow(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(!rc_actor[actor].shadow)
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- case RC_NODE_TYPE_OTMESH:
- case RC_NODE_TYPE_MESH:
- irr::scene::IAnimatedMeshSceneNode* node = (irr::scene::IAnimatedMeshSceneNode*)rc_actor[actor].mesh_node;
- node->removeChild(rc_actor[actor].shadow);
- break;
- }
-}
-
-bool rc_lightIsCastingShadow(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return false;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- return node->getCastShadow();
- }
-
- return false;
-}
-
-int rc_getLightType(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- return (int)node->getLightType();
- }
-
- return -1;
-}
-
-double rc_getLightRadius(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- return node->getRadius();
- }
-
- return 0;
-}
-
-void rc_setLightType(int actor, int light_type)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- node->setLightType((irr::video::E_LIGHT_TYPE)light_type);
- }
-}
-
-void rc_setLightRadius(int actor, double radius)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- node->setRadius(radius);
- }
-}
-
-
-void rc_setLightShadowCast(int actor, bool flag)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- node->enableCastShadow(flag);
- }
-}
-
-void rc_setLightAmbientColor(int actor, Uint32 color)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SColor c;
- c.set(color);
- irr::video::SColorf cf(c);
- irr::video::SLight light_data = node->getLightData();
- light_data.AmbientColor = cf;
- node->setLightData(light_data);
- }
-}
-
-Uint32 rc_getLightAmbientColor(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- return light_data.AmbientColor.toSColor().color;
- }
-
- return 0;
-}
-
-void rc_setLightAttenuation(int actor, double l_constant, double l_linear, double l_quadratic)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- light_data.Attenuation.set(l_constant, l_linear, l_quadratic);
- node->setLightData(light_data);
- }
-}
-
-void rc_getLightAttenuation(int actor, double* l_constant, double* l_linear, double* l_quadratic)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *l_constant = 0;
- *l_linear = 0;
- *l_quadratic = 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- *l_constant = light_data.Attenuation.X;
- *l_linear = light_data.Attenuation.Y;
- *l_quadratic = light_data.Attenuation.Z;
- }
-}
-
-void rc_setLightDiffuseColor(int actor, Uint32 color)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SColor c;
- c.set(color);
- irr::video::SColorf cf(c);
- irr::video::SLight light_data = node->getLightData();
- light_data.DiffuseColor = cf;
- node->setLightData(light_data);
- }
-}
-
-Uint32 rc_getLightDiffuseColor(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- return light_data.DiffuseColor.toSColor().color;
- }
-
- return 0;
-}
-
-void rc_setLightFalloff(int actor, double falloff)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- light_data.Falloff = falloff;
- node->setLightData(light_data);
- }
-}
-
-double rc_getLightFalloff(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- return light_data.Falloff;
- }
-
- return 0;
-}
-
-void rc_setLightInnerCone(int actor, double angle)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- light_data.InnerCone = angle;
- node->setLightData(light_data);
- }
-}
-
-double rc_getLightInnerCone(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- return light_data.InnerCone;
- }
-
- return 0;
-}
-
-void rc_setLightOuterCone(int actor, double angle)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- light_data.OuterCone = angle;
- node->setLightData(light_data);
- }
-}
-
-double rc_getLightOuterCone(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- return light_data.OuterCone;
- }
-
- return 0;
-}
-
-void rc_setLightSpecularColor(int actor, Uint32 color)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SColor c;
- c.set(color);
- irr::video::SColorf cf(c);
- irr::video::SLight light_data = node->getLightData();
- light_data.SpecularColor = cf;
- node->setLightData(light_data);
- }
-}
-
-Uint32 rc_getLightSpecularColor(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_LIGHT:
- irr::scene::ILightSceneNode* node = (irr::scene::ILightSceneNode*)rc_actor[actor].mesh_node;
- irr::video::SLight light_data = node->getLightData();
- return light_data.SpecularColor.toSColor().color;
- }
-
- return 0;
-}
-
-
-
-
-//set actor animation speed
-void rc_setActorVisible(int actor, bool flag)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- irr::scene::ISceneNode* node = rc_actor[actor].mesh_node;
- node->setVisible(flag);
-}
-
-bool rc_actorIsVisible(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return false;
-
- return rc_actor[actor].mesh_node->isVisible();
-}
-
-
-void rc_getTerrainPatchAABB(int actor, double patch_x, double patch_z, double* min_x, double* min_y, double* min_z, double* max_x, double* max_y, double* max_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *min_x = 0;
- *min_y = 0;
- *min_z = 0;
-
- *max_x = 0;
- *max_y = 0;
- *max_z = 0;
-
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* node = (irr::scene::ITerrainSceneNode*)rc_actor[actor].mesh_node;
- irr::core::aabbox3d bbox = node->getBoundingBox(patch_x, patch_z);
-
- *min_x = bbox.MinEdge.X;
- *min_y = bbox.MinEdge.Y;
- *min_z = bbox.MinEdge.Z;
-
- *max_x = bbox.MaxEdge.X;
- *max_y = bbox.MaxEdge.Y;
- *max_z = bbox.MaxEdge.Z;
- }
-}
-
-
-int rc_getTerrainPatchLOD(int actor, int patchX, int patchZ)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return -1;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
-
- irr::core::array lod;
- int lodp_size = terrain->getCurrentLODOfPatches(lod);
- irr::s32 dim_size = irr::core::squareroot(lodp_size);
- return lod[patchX * dim_size + patchZ];
- }
-
- return -1;
-}
-
-double rc_getTerrainHeight(int actor, int patchX, int patchZ )
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
- return terrain->getHeight(patchX, patchZ);
- }
-
- return 0;
-}
-
-void rc_getTerrainCenter(int actor, double* x, double* y, double* z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- *x = 0;
- *y = 0;
- *z = 0;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
- irr::core::vector3df v = terrain->getTerrainCenter();
- *x = v.X;
- *y = v.Y;
- *z = v.Z;
- }
-}
-
-void rc_setTerrainLODDistance(int actor, int lod, double distance)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
- terrain->overrideLODDistance(lod, distance);
- }
-}
-
-void rc_scaleTerrainTexture(int actor, double scale1, double scale2)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
- terrain->scaleTexture(scale1, scale2);
- }
-}
-
-void rc_setTerrainCameraMovementDelta(int actor, double delta)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
- terrain->setCameraMovementDelta(delta);
- }
-}
-
-void rc_setTerrainCameraRotationDelta(int actor, double delta)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
- terrain->setCameraRotationDelta(delta);
- }
-}
-
-void rc_setTerrainPatchLOD(int actor, int patchX, int patchZ, int lod)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- switch(rc_actor[actor].node_type)
- {
- case RC_NODE_TYPE_TERRAIN:
- irr::scene::ITerrainSceneNode* terrain = (irr::scene::ITerrainSceneNode*) rc_actor[actor].mesh_node;
- terrain->setLODOfPatch(patchX, patchZ, lod);
- }
-}
-
-int rc_getParticleType(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.particle_type;
-}
-
-void rc_startParticleEmitter(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
-
- bool everyMeshVertex = rc_actor[actor].particle_properties.everyMeshVertex;
- irr::s32 mbNumber = rc_actor[actor].particle_properties.mbNumber;
- irr::f32 normalDirectionModifier = rc_actor[actor].particle_properties.normalDirectionModifier;
- bool useNormalDirection = rc_actor[actor].particle_properties.useNormalDirection;
- irr::s32 mesh_id = rc_actor[actor].particle_properties.mesh_id;
- irr::core::vector3df direction = rc_actor[actor].particle_properties.direction;
- irr::u32 minParticlesPerSecond = rc_actor[actor].particle_properties.minParticlesPerSecond;
- irr::u32 maxParticlesPerSecond = rc_actor[actor].particle_properties.maxParticlesPerSecond;
- irr::video::SColor minStartColor = rc_actor[actor].particle_properties.minStartColor;
- irr::video::SColor maxStartColor = rc_actor[actor].particle_properties.maxStartColor;
- irr::u32 lifeTimeMin = rc_actor[actor].particle_properties.lifeTimeMin;
- irr::u32 lifeTimeMax = rc_actor[actor].particle_properties.lifeTimeMax;
- irr::s32 maxAngleDegrees = rc_actor[actor].particle_properties.maxAngleDegrees;
- irr::core::dimension2df minStartSize = rc_actor[actor].particle_properties.minStartSize;
- irr::core::dimension2df maxStartSize = rc_actor[actor].particle_properties.maxStartSize;
- irr::core::vector3df center = rc_actor[actor].particle_properties.center;
- irr::f32 radius = rc_actor[actor].particle_properties.radius;
- irr::f32 ringThickness = rc_actor[actor].particle_properties.ringThickness;
- irr::core::aabbox3df box = rc_actor[actor].particle_properties.box;
- irr::core::vector3df normal = rc_actor[actor].particle_properties.normal;
- irr::f32 length = rc_actor[actor].particle_properties.length;
- bool outlineOnly = rc_actor[actor].particle_properties.outlineOnly;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*) rc_actor[actor].mesh_node;
-
- irr::scene::IParticleEmitter* em = NULL;
-
- switch(rc_actor[actor].particle_properties.particle_type)
- {
- case RC_PARTICLE_TYPE_POINT:
- em = node->createPointEmitter(direction, minParticlesPerSecond, maxParticlesPerSecond,
- minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
- maxAngleDegrees, minStartSize, maxStartSize);
- node->setEmitter(em);
- em->drop();
- break;
-
- case RC_PARTICLE_TYPE_BOX:
- em = node->createBoxEmitter(box, direction, minParticlesPerSecond, maxParticlesPerSecond,
- minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
- maxAngleDegrees, minStartSize, maxStartSize);
- node->setEmitter(em);
- em->drop();
- break;
-
- case RC_PARTICLE_TYPE_SPHERE:
- em = node->createSphereEmitter(center, radius, direction,
- minParticlesPerSecond, maxParticlesPerSecond,
- minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
- maxAngleDegrees, minStartSize, maxStartSize);
- node->setEmitter(em);
- em->drop();
- break;
-
- case RC_PARTICLE_TYPE_CYLINDER:
- em = node->createCylinderEmitter(center, radius, normal, length, outlineOnly,
- direction, minParticlesPerSecond, maxParticlesPerSecond,
- minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
- maxAngleDegrees, minStartSize, maxStartSize);
- node->setEmitter(em);
- em->drop();
- break;
-
- case RC_PARTICLE_TYPE_MESH:
- if(mesh_id < 0 || mesh_id >= rc_mesh.size())
- return;
-
- if(!rc_mesh[mesh_id].mesh)
- return;
-
- em = node->createMeshEmitter(rc_mesh[mesh_id].mesh, useNormalDirection,
- direction, normalDirectionModifier, mbNumber, everyMeshVertex,
- minParticlesPerSecond, maxParticlesPerSecond,
- minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
- maxAngleDegrees, minStartSize, maxStartSize);
- node->setEmitter(em);
- em->drop();
- break;
-
- case RC_PARTICLE_TYPE_RING:
- em = node->createRingEmitter(center, radius, ringThickness,
- direction, minParticlesPerSecond, maxParticlesPerSecond,
- minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
- maxAngleDegrees, minStartSize, maxStartSize);
- node->setEmitter(em);
- em->drop();
- break;
- }
-}
-
-void rc_stopParticleEmitter(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*) rc_actor[actor].mesh_node;
- node->setEmitter(0);
-}
-
-void rc_setParticleDirection(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.direction.set(x, y, z);
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setDirection( rc_actor[actor].particle_properties.direction );
-}
-
-void rc_getParticleDirection(int actor, double* x, double* y, double* z)
-{
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- *x = rc_actor[actor].particle_properties.direction.X;
- *y = rc_actor[actor].particle_properties.direction.Y;
- *z = rc_actor[actor].particle_properties.direction.Z;
-}
-
-void rc_useParticleEveryMeshVertex(int actor, bool flag)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
- return;
-
- rc_actor[actor].particle_properties.everyMeshVertex = flag;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- {
- irr::scene::IParticleMeshEmitter* em = (irr::scene::IParticleMeshEmitter*)node->getEmitter();
- em->setEveryMeshVertex(rc_actor[actor].particle_properties.everyMeshVertex);
- }
-}
-
-bool rc_particleIsUsingEveryMeshVertex(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return false;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return false;
-
- if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
- return false;
-
- return rc_actor[actor].particle_properties.everyMeshVertex;
-
-}
-
-void rc_setParticleNormalDirectionMod(int actor, double mod)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
- return;
-
- rc_actor[actor].particle_properties.normalDirectionModifier = mod;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- {
- irr::scene::IParticleMeshEmitter* em = (irr::scene::IParticleMeshEmitter*)node->getEmitter();
- em->setNormalDirectionModifier(rc_actor[actor].particle_properties.normalDirectionModifier);
- }
-}
-
-double rc_getParticleNormalDirectionMod(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
- return 0;
-
- return rc_actor[actor].particle_properties.normalDirectionModifier;
-}
-
-void rc_useParticleNormalDirection(int actor, bool flag)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
- return;
-
- rc_actor[actor].particle_properties.useNormalDirection = flag;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- {
- irr::scene::IParticleMeshEmitter* em = (irr::scene::IParticleMeshEmitter*)node->getEmitter();
- em->setUseNormalDirection(rc_actor[actor].particle_properties.useNormalDirection);
- }
-}
-
-bool rc_particleIsUsingNormalDirection(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return false;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return false;
-
- if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
- return false;
-
- return rc_actor[actor].particle_properties.useNormalDirection;
-}
-
-void rc_setParticleMesh(int actor, int mesh)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
- return;
-
- rc_actor[actor].particle_properties.mesh_id = mesh;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- {
- if(mesh < 0 || mesh >= rc_mesh.size())
- return;
-
- if(!rc_mesh[mesh].mesh)
- return;
-
- irr::scene::IParticleMeshEmitter* em = (irr::scene::IParticleMeshEmitter*)node->getEmitter();
- em->setMesh(rc_mesh[mesh].mesh);
- }
-}
-
-void rc_setMinParticlesPerSecond(int actor, Uint32 minParticlesPerSecond)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.minParticlesPerSecond = minParticlesPerSecond;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMinParticlesPerSecond(minParticlesPerSecond);
-}
-
-Uint32 rc_getMinParticlesPerSecond(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.minParticlesPerSecond;
-}
-
-void rc_setMaxParticlesPerSecond(int actor, Uint32 maxParticlesPerSecond)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.maxParticlesPerSecond = maxParticlesPerSecond;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMaxParticlesPerSecond(maxParticlesPerSecond);
-}
-
-Uint32 rc_getMaxParticlesPerSecond(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.maxParticlesPerSecond;
-}
-
-void rc_setParticleMinStartColor(int actor, Uint32 color)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.minStartColor = irr::video::SColor(color);
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMinStartColor(rc_actor[actor].particle_properties.minStartColor);
-}
-
-Uint32 rc_getParticleMinStartColor(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.minStartColor.color;
-}
-
-void rc_setParticleMaxStartColor(int actor, Uint32 color)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.maxStartColor = irr::video::SColor(color);
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMaxStartColor(rc_actor[actor].particle_properties.maxStartColor);
-}
-
-Uint32 rc_getParticleMaxStartColor(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.maxStartColor.color;
-}
-
-void rc_setParticleMinLife(int actor, Uint32 minLife)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.lifeTimeMin = minLife;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMinLifeTime(rc_actor[actor].particle_properties.lifeTimeMin);
-}
-
-Uint32 rc_getParticleMinLife(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.lifeTimeMin;
-}
-
-void rc_setParticleMaxLife(int actor, Uint32 maxLife)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.lifeTimeMax = maxLife;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMaxLifeTime(rc_actor[actor].particle_properties.lifeTimeMax);
-}
-
-Uint32 rc_getParticleMaxLife(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.lifeTimeMax;
-}
-
-void rc_setParticleMaxAngle(int actor, int maxAngle)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.maxAngleDegrees = maxAngle;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMaxAngleDegrees(rc_actor[actor].particle_properties.maxAngleDegrees);
-}
-
-int rc_getParticleMaxAngle(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.maxAngleDegrees;
-}
-
-void rc_setParticleMinStartSize(int actor, double w, double h)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.minStartSize = irr::core::dimension2df(w, h);
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMinStartSize(rc_actor[actor].particle_properties.minStartSize);
-}
-
-void rc_getParticleMinStartSize(int actor, double* w, double* h)
-{
- *w = 0;
- *h = 0;
-
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- *w = rc_actor[actor].particle_properties.minStartSize.Width;
- *h = rc_actor[actor].particle_properties.minStartSize.Height;
-}
-
-void rc_setParticleMaxStartSize(int actor, double w, double h)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.maxStartSize = irr::core::dimension2df(w, h);
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(node->getEmitter())
- node->getEmitter()->setMaxStartSize(rc_actor[actor].particle_properties.maxStartSize);
-}
-
-void rc_getParticleMaxStartSize(int actor, double* w, double* h)
-{
- *w = 0;
- *h = 0;
-
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- *w = rc_actor[actor].particle_properties.maxStartSize.Width;
- *h = rc_actor[actor].particle_properties.maxStartSize.Height;
-}
-
-void rc_setParticleCenter(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.center = irr::core::vector3df(x, y, z);
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(!node->getEmitter())
- return;
-
-
- switch(rc_actor[actor].particle_properties.particle_type)
- {
- case RC_PARTICLE_TYPE_SPHERE:
- {
- irr::scene::IParticleSphereEmitter* em = (irr::scene::IParticleSphereEmitter*)node->getEmitter();
- em->setCenter(rc_actor[actor].particle_properties.center);
- }
- break;
- case RC_PARTICLE_TYPE_CYLINDER:
- {
- irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
- em->setCenter(rc_actor[actor].particle_properties.center);
- }
- break;
- case RC_PARTICLE_TYPE_RING:
- {
- irr::scene::IParticleRingEmitter* em = (irr::scene::IParticleRingEmitter*)node->getEmitter();
- em->setCenter(rc_actor[actor].particle_properties.center);
- }
- break;
- }
-}
-
-void rc_getParticleCenter(int actor, double* x, double* y, double* z)
-{
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- *x = rc_actor[actor].particle_properties.center.X;
- *y = rc_actor[actor].particle_properties.center.Y;
- *z = rc_actor[actor].particle_properties.center.Z;
-}
-
-void rc_setParticleRadius(int actor, double radius)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.radius = radius;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(!node->getEmitter())
- return;
-
-
- switch(rc_actor[actor].particle_properties.particle_type)
- {
- case RC_PARTICLE_TYPE_SPHERE:
- {
- irr::scene::IParticleSphereEmitter* em = (irr::scene::IParticleSphereEmitter*)node->getEmitter();
- em->setRadius(rc_actor[actor].particle_properties.radius);
- }
- break;
- case RC_PARTICLE_TYPE_CYLINDER:
- {
- irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
- em->setRadius(rc_actor[actor].particle_properties.radius);
- }
- break;
- case RC_PARTICLE_TYPE_RING:
- {
- irr::scene::IParticleRingEmitter* em = (irr::scene::IParticleRingEmitter*)node->getEmitter();
- em->setRadius(rc_actor[actor].particle_properties.radius);
- }
- break;
- }
-}
-
-double rc_getParticleRadius(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.radius;
-}
-
-void rc_setParticleRingThickness(int actor, double ringThickness)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.ringThickness = ringThickness;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(!node->getEmitter())
- return;
-
-
- switch(rc_actor[actor].particle_properties.particle_type)
- {
- case RC_PARTICLE_TYPE_RING:
- {
- irr::scene::IParticleRingEmitter* em = (irr::scene::IParticleRingEmitter*)node->getEmitter();
- em->setRingThickness(rc_actor[actor].particle_properties.ringThickness);
- }
- break;
- }
-}
-
-double rc_getParticleRingThickness(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.ringThickness;
-}
-
-void rc_setParticleBox(int actor, double min_x, double min_y, double min_z, double max_x, double max_y, double max_z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.box = irr::core::aabbox3df(min_x, min_y, min_z, max_x, max_y, max_z);
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(!node->getEmitter())
- return;
-
-
- switch(rc_actor[actor].particle_properties.particle_type)
- {
- case RC_PARTICLE_TYPE_BOX:
- {
- irr::scene::IParticleBoxEmitter* em = (irr::scene::IParticleBoxEmitter*)node->getEmitter();
- em->setBox(rc_actor[actor].particle_properties.box);
- }
- break;
- }
-}
-
-void rc_getParticleBox(int actor, double* min_x, double* min_y, double* min_z, double* max_x, double* max_y, double* max_z)
-{
- *min_x = 0;
- *min_y = 0;
- *min_z = 0;
-
- *max_x = 0;
- *max_y = 0;
- *max_z = 0;
-
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- *min_x = rc_actor[actor].particle_properties.box.MinEdge.X;
- *min_y = rc_actor[actor].particle_properties.box.MinEdge.Y;
- *min_z = rc_actor[actor].particle_properties.box.MinEdge.Z;
-
- *max_x = rc_actor[actor].particle_properties.box.MaxEdge.X;
- *max_y = rc_actor[actor].particle_properties.box.MaxEdge.Y;
- *max_z = rc_actor[actor].particle_properties.box.MaxEdge.Z;
-}
-
-void rc_setParticleNormal(int actor, double x, double y, double z)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.normal.set(x, y, z);
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(!node->getEmitter())
- return;
-
-
- switch(rc_actor[actor].particle_properties.particle_type)
- {
- case RC_PARTICLE_TYPE_CYLINDER:
- {
- irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
- em->setNormal(rc_actor[actor].particle_properties.normal);
- }
- break;
- }
-}
-
-void rc_getParticleNormal(int actor, double* x, double* y, double* z)
-{
- *x = 0;
- *y = 0;
- *z = 0;
-
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- *x = rc_actor[actor].particle_properties.normal.X;
- *y = rc_actor[actor].particle_properties.normal.Y;
- *z = rc_actor[actor].particle_properties.normal.Z;
-}
-
-void rc_setParticleLength(int actor, double length)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.length = length;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(!node->getEmitter())
- return;
-
-
- switch(rc_actor[actor].particle_properties.particle_type)
- {
- case RC_PARTICLE_TYPE_CYLINDER:
- {
- irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
- em->setLength(rc_actor[actor].particle_properties.length);
- }
- break;
- }
-}
-
-double rc_getParticleLength(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return 0;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return 0;
-
- return rc_actor[actor].particle_properties.length;
-}
-
-void rc_useParticleOutlineOnly(int actor, bool flag)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return;
-
- rc_actor[actor].particle_properties.outlineOnly = flag;
-
- irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
-
- if(!node->getEmitter())
- return;
-
-
- switch(rc_actor[actor].particle_properties.particle_type)
- {
- case RC_PARTICLE_TYPE_CYLINDER:
- {
- irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
- em->setOutlineOnly(flag);
- }
- break;
- }
-}
-
-bool rc_particleIsUsingOutlineOnly(int actor)
-{
- if(actor < 0 || actor >= rc_actor.size())
- return false;
-
- if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
- return false;
-
- return rc_actor[actor].particle_properties.outlineOnly;
-}
-
-
-
-void rc_setCameraPosition(double x, double y, double z)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.setPosition(x, y, z);
-}
-
-void rc_getCameraPosition(double* x, double* y, double* z)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- irr::f32 fx, fy, fz;
-
- rc_canvas[rc_active_canvas].camera.getPosition(fx, fy, fz);
-
- *x = fx;
- *y = fy;
- *z = fz;
-}
-
-void rc_translateCamera(double x, double y, double z)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.translate(x, y, z);
-}
-
-void rc_translateCameraW(double x, double y, double z)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.translateW(x, y, z);
-}
-
-
-void rc_setCameraRotation(double x, double y, double z)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.setRotation(x, y, z);
-}
-
-void rc_getCameraRotation(double* x, double* y, double* z)
-{
- if(rc_active_canvas <= 0 || rc_active_canvas >= rc_canvas.size())
- return;
-
- *x = rc_canvas[rc_active_canvas].camera.rx;
- *y = rc_canvas[rc_active_canvas].camera.ry;
- *z = rc_canvas[rc_active_canvas].camera.rz;
-
- //std::cout << "Get Rotation: " << x[0] << ", " << y[0] << ", " << z[0] << std::endl;
-}
-
-void rc_rotateCamera(double x, double y, double z)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.rotate(x, y, z);
-}
-
-void rc_setCameraFOV(double fov)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.camera->setFOV(fov);
-}
-
-double rc_getCameraFOV()
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return 0;
-
- return rc_canvas[rc_active_canvas].camera.camera->getFOV();
-}
-
-void rc_setCameraAspectRatio(double aspect)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.camera->setAspectRatio(aspect);
-}
-
-double rc_getCameraAspectRatio()
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return 0;
-
- return rc_canvas[rc_active_canvas].camera.camera->getAspectRatio();
-}
-
-void rc_setCameraFarValue(double zf)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.camera->setFarValue(zf);
-}
-
-double rc_getCameraFarValue()
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return 0;
-
- return rc_canvas[rc_active_canvas].camera.camera->getFarValue();
-}
-
-void rc_setCameraNearValue(double zn)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- rc_canvas[rc_active_canvas].camera.camera->setNearValue(zn);
-}
-
-double rc_getCameraNearValue()
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return 0;
-
- return rc_canvas[rc_active_canvas].camera.camera->getNearValue();
-}
-
-void rc_setProjectionMatrix(int proj_matrix, int proj_type)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- if(proj_matrix < 0 || proj_matrix >= rc_matrix.size())
- return;
-
- if(!rc_matrix[proj_matrix].active)
- return;
-
- irr::core::matrix4 irr_mat = rc_convertToIrrMatrix(proj_matrix);
- bool isOrtho = (proj_type == RC_PROJECTION_TYPE_ORTHOGRAPHIC);
- rc_canvas[rc_active_canvas].camera.camera->setProjectionMatrix(irr_mat, isOrtho);
-}
-
-void rc_getProjectionMatrix(int proj_matrix)
-{
- if(!(rc_active_canvas > 0 && rc_active_canvas < rc_canvas.size()))
- return;
-
- if(proj_matrix < 0 || proj_matrix >= rc_matrix.size())
- return;
-
- if(!rc_matrix[proj_matrix].active)
- return;
-
- irr::core::matrix4 pmat = rc_canvas[rc_active_canvas].camera.camera->getProjectionMatrix();
- rc_convertFromIrrMatrix(pmat, proj_matrix);
-}
-
-
-void rc_addSceneSkyBox(int img_top, int img_bottom, int img_left, int img_right, int img_front, int img_back)
-{
- if(!SceneManager)
- return;
-
- if(rc_scene_properties.sky)
- return;
-
- irr::video::ITexture* tp = rc_image[img_top].image;
- irr::video::ITexture* bt = rc_image[img_bottom].image;
- irr::video::ITexture* lf = rc_image[img_left].image;
- irr::video::ITexture* rt = rc_image[img_right].image;
- irr::video::ITexture* ft = rc_image[img_front].image;
- irr::video::ITexture* bk = rc_image[img_back].image;
- rc_scene_properties.sky = SceneManager->addSkyBoxSceneNode(tp, bt, lf, rt, ft, bk);
-}
-
-void rc_addSceneSkyDome(int img)
-{
- if(!SceneManager)
- return;
-
- if(rc_scene_properties.sky)
- return;
-
- irr::video::ITexture* texture = rc_image[img].image;
- rc_scene_properties.sky = SceneManager->addSkyDomeSceneNode(texture);
-}
-
-void rc_addSceneSkyDomeEx(int img, Uint32 horiRes, Uint32 vertRes, double txPercentage, double spherePercentage, double radius)
-{
- if(!SceneManager)
- return;
-
- if(rc_scene_properties.sky)
- return;
-
- irr::video::ITexture* texture = rc_image[img].image;
- rc_scene_properties.sky = SceneManager->addSkyDomeSceneNode(texture, horiRes, vertRes, txPercentage, spherePercentage, radius);
-}
-
-void rc_removeSceneSky()
-{
- if(rc_scene_properties.sky)
- rc_scene_properties.sky->remove();
-
- rc_scene_properties.sky = NULL;
-}
+#include "rc_physics3D_base.h"
+
+#include "rc_base_actor.h"
+#include "rc_actor_material.h"
+#include "rc_actor_animation.h"
+#include "rc_actor_physics.h"
+#include "rc_constraint.h"
+#include "rc_mesh.h"
+#include "rc_particles.h"
+#include "rc_scene.h"
+#include "rc_camera.h"
#endif // RC_GFX3D_H_INCLUDED
diff --git a/rcbasic_runtime/rc_gfx_core.h b/rcbasic_runtime/rc_gfx_core.h
index 832f9da..468fde5 100644
--- a/rcbasic_runtime/rc_gfx_core.h
+++ b/rcbasic_runtime/rc_gfx_core.h
@@ -420,6 +420,17 @@ bool mobile_active_window_flag = true;
//------------ 3D Graphics ----------------//
+struct rc_material_obj
+{
+ irr::video::SMaterial mat;
+ bool isUsed = false;
+ bool isReference = false;
+ int refActor = -1;
+ int refMatNum = 0;
+};
+
+irr::core::array rc_material;
+
#define RC_MESH_TYPE_NONE 0
#define RC_MESH_TYPE_ANIMATED 1
diff --git a/rcbasic_runtime/rc_joints.h b/rcbasic_runtime/rc_joints.h
new file mode 100644
index 0000000..0e528e0
--- /dev/null
+++ b/rcbasic_runtime/rc_joints.h
@@ -0,0 +1,2002 @@
+#ifndef RC_JOINTS_H_INCLUDED
+#define RC_JOINTS_H_INCLUDED
+
+#ifdef RC_ANDROID
+ #include "SDL.h"
+#else
+ #include
+#endif // _IRR_ANDROID_PLATFORM_
+
+#include "rc_sprite2D.h"
+#include "rc_gfx_core.h"
+
+
+int rc_createDistanceJoint(int spriteA, int spriteB, double aX, double aY, double bX, double bY, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(spriteA < 0 || spriteA >= rc_sprite.size())
+ return -1;
+
+ if(spriteB < 0 || spriteB >= rc_sprite.size())
+ return -1;
+
+ if(!(rc_sprite[spriteA].active && rc_sprite[spriteB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2DistanceJointDef joint_def;
+ joint_def.Initialize(rc_sprite[spriteA].physics.body, rc_sprite[spriteB].physics.body, b2Vec2(aX, aY), b2Vec2(bX, bY));
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_DISTANCE;
+
+ return joint_id;
+}
+
+int rc_createFrictionJoint(int spriteA, int spriteB, double x, double y, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(spriteA < 0 || spriteA >= rc_sprite.size())
+ return -1;
+
+ if(spriteB < 0 || spriteB >= rc_sprite.size())
+ return -1;
+
+ if(!(rc_sprite[spriteA].active && rc_sprite[spriteB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2FrictionJointDef joint_def;
+ joint_def.Initialize(rc_sprite[spriteA].physics.body, rc_sprite[spriteB].physics.body, b2Vec2(x, y));
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_FRICTION;
+
+ return joint_id;
+}
+
+int rc_createGearJoint(int jointA, int jointB, double g_ratio, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(jointA < 0 || jointA >= rc_joint.size())
+ return -1;
+
+ if(rc_joint[jointA].type != RC_JOINT_TYPE_PRISMATIC && rc_joint[jointA].type != RC_JOINT_TYPE_REVOLUTE)
+ return -1;
+
+ if(rc_joint[jointB].type != RC_JOINT_TYPE_PRISMATIC && rc_joint[jointB].type != RC_JOINT_TYPE_REVOLUTE)
+ return -1;
+
+ if(!(rc_joint[jointA].active && rc_joint[jointB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2GearJointDef joint_def;
+ joint_def.joint1 = rc_joint[jointA].joint;
+ joint_def.joint2 = rc_joint[jointB].joint;
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_GEAR;
+
+ return joint_id;
+}
+
+int rc_createMotorJoint(int spriteA, int spriteB, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(spriteA < 0 || spriteA >= rc_sprite.size())
+ return -1;
+
+ if(spriteB < 0 || spriteB >= rc_sprite.size())
+ return -1;
+
+ if(!(rc_sprite[spriteA].active && rc_sprite[spriteB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2MotorJointDef joint_def;
+ joint_def.Initialize(rc_sprite[spriteA].physics.body, rc_sprite[spriteB].physics.body);
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_MOTOR;
+
+ return joint_id;
+}
+
+int rc_createPrismaticJoint(int spriteA, int spriteB, double aX, double aY, double axisX, double axisY, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(spriteA < 0 || spriteA >= rc_sprite.size())
+ return -1;
+
+ if(spriteB < 0 || spriteB >= rc_sprite.size())
+ return -1;
+
+ if(!(rc_sprite[spriteA].active && rc_sprite[spriteB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2PrismaticJointDef joint_def;
+ joint_def.Initialize(rc_sprite[spriteA].physics.body, rc_sprite[spriteB].physics.body, b2Vec2(aX, aY), b2Vec2(axisX, axisY));
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_PRISMATIC;
+
+ return joint_id;
+}
+
+int rc_createPulleyJoint(int spriteA, int spriteB, double gaX, double gaY, double gbX, double gbY, double aX, double aY, double bX, double bY, double j_ratio, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(spriteA < 0 || spriteA >= rc_sprite.size())
+ return -1;
+
+ if(spriteB < 0 || spriteB >= rc_sprite.size())
+ return -1;
+
+ if(!(rc_sprite[spriteA].active && rc_sprite[spriteB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2PulleyJointDef joint_def;
+ joint_def.Initialize(rc_sprite[spriteA].physics.body, rc_sprite[spriteB].physics.body, b2Vec2(gaX, gaY), b2Vec2(gbX, gbY), b2Vec2(aX, aY), b2Vec2(bX, bY), j_ratio);
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_PULLEY;
+
+ return joint_id;
+}
+
+int rc_createRevoluteJoint(int spriteA, int spriteB, double x, double y, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(spriteA < 0 || spriteA >= rc_sprite.size())
+ return -1;
+
+ if(spriteB < 0 || spriteB >= rc_sprite.size())
+ return -1;
+
+ if(!(rc_sprite[spriteA].active && rc_sprite[spriteB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2RevoluteJointDef joint_def;
+ joint_def.Initialize(rc_sprite[spriteA].physics.body, rc_sprite[spriteB].physics.body, b2Vec2(x, y));
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_REVOLUTE;
+
+ return joint_id;
+}
+
+int rc_createWeldJoint(int spriteA, int spriteB, double x, double y, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(spriteA < 0 || spriteA >= rc_sprite.size())
+ return -1;
+
+ if(spriteB < 0 || spriteB >= rc_sprite.size())
+ return -1;
+
+ if(!(rc_sprite[spriteA].active && rc_sprite[spriteB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2WeldJointDef joint_def;
+ joint_def.Initialize(rc_sprite[spriteA].physics.body, rc_sprite[spriteB].physics.body, b2Vec2(x, y));
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_WELD;
+
+ return joint_id;
+}
+
+int rc_createWheelJoint(int spriteA, int spriteB, double aX, double aY, double axisX, double axisY, bool collide_connected)
+{
+ if(rc_active_canvas < 0 || rc_active_canvas >= rc_canvas.size())
+ return -1;
+
+ if(rc_canvas[rc_active_canvas].type != RC_CANVAS_TYPE_SPRITE)
+ return -1;
+
+ if(spriteA < 0 || spriteA >= rc_sprite.size())
+ return -1;
+
+ if(spriteB < 0 || spriteB >= rc_sprite.size())
+ return -1;
+
+ if(!(rc_sprite[spriteA].active && rc_sprite[spriteB].active))
+ return -1;
+
+ int joint_id = -1;
+
+ for(int i = 0; i < rc_joint.size(); i++)
+ {
+ if(!rc_joint[i].active)
+ {
+ joint_id = i;
+ break;
+ }
+ }
+
+ if(joint_id < 0)
+ {
+ joint_id = rc_joint.size();
+ rc_b2Joint_obj joint;
+ rc_joint.push_back(joint);
+ }
+
+ rc_joint[joint_id].active = true;
+ rc_joint[joint_id].canvas = rc_active_canvas;
+
+ b2WheelJointDef joint_def;
+ joint_def.Initialize(rc_sprite[spriteA].physics.body, rc_sprite[spriteB].physics.body, b2Vec2(aX, aY), b2Vec2(axisX, axisY));
+ joint_def.collideConnected = collide_connected;
+
+ rc_joint[joint_id].joint = rc_canvas[rc_active_canvas].physics2D.world->CreateJoint(&joint_def);
+ rc_joint[joint_id].type = RC_JOINT_TYPE_WHEEL;
+
+ return joint_id;
+}
+
+void rc_deleteJoint(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ int j_canvas = rc_joint[joint_id].canvas;
+
+ rc_canvas[j_canvas].physics2D.world->DestroyJoint(rc_joint[joint_id].joint);
+ rc_joint[joint_id].joint = NULL;
+ rc_joint[joint_id].canvas = -1;
+ rc_joint[joint_id].active = false;
+}
+
+void rc_getJointWorldAnchorA(int joint_id, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ b2Vec2 anchor = rc_joint[joint_id].joint->GetAnchorA();
+ *x = anchor.x;
+ *y = anchor.y;
+}
+
+void rc_getJointWorldAnchorB(int joint_id, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ b2Vec2 anchor = rc_joint[joint_id].joint->GetAnchorB();
+ *x = anchor.x;
+ *y = anchor.y;
+}
+
+void rc_getJointReactionForce(int joint_id, double inv_dt, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ b2Vec2 v = rc_joint[joint_id].joint->GetReactionForce(inv_dt);
+ *x = v.x;
+ *y = v.y;
+}
+
+double rc_getJointReactionTorque(int joint_id, double inv_dt)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ return rc_joint[joint_id].joint->GetReactionTorque(inv_dt);
+}
+
+void rc_getJointLocalAnchorA(int joint_id, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ {
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorA();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_FRICTION:
+ {
+ b2FrictionJoint* j = (b2FrictionJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorA();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorA();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorA();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_WELD:
+ {
+ b2WeldJoint* j = (b2WeldJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorA();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorA();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ }
+}
+
+void rc_getJointLocalAnchorB(int joint_id, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ {
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorB();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_FRICTION:
+ {
+ b2FrictionJoint* j = (b2FrictionJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorB();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorB();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorB();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_WELD:
+ {
+ b2WeldJoint* j = (b2WeldJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorB();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ b2Vec2 anchor = j->GetLocalAnchorB();
+ *x = anchor.x;
+ *y = anchor.y;
+ }
+ break;
+
+ }
+}
+
+void rc_setJointLength(int joint_id, double jlen)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ j->SetLength(jlen);
+ break;
+ }
+}
+
+double rc_getJointLength(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ return j->GetLength();
+ }
+
+ return 0;
+}
+
+void rc_setJointMinLength(int joint_id, double jlen)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ j->SetMinLength(jlen);
+ break;
+ }
+}
+
+double rc_getJointMinLength(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ return j->GetMinLength();
+ }
+
+ return 0;
+}
+
+void rc_setJointMaxLength(int joint_id, double jlen)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ j->SetMaxLength(jlen);
+ }
+}
+
+double rc_getJointMaxLength(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ return j->GetMaxLength();
+ }
+
+ return 0;
+}
+
+double rc_getJointCurrentLength(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ return j->GetCurrentLength();
+ }
+
+ return 0;
+}
+
+void rc_setJointStiffness(int joint_id, double stiffness)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ {
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ j->SetStiffness(stiffness);
+ }
+ break;
+
+ case RC_JOINT_TYPE_WELD:
+ {
+ b2WeldJoint* j = (b2WeldJoint*)rc_joint[joint_id].joint;
+ j->SetStiffness(stiffness);
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ j->SetStiffness(stiffness);
+ }
+ break;
+ }
+}
+
+double rc_getJointStiffness(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ {
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ return j->GetStiffness();
+ }
+ break;
+
+ case RC_JOINT_TYPE_WELD:
+ {
+ b2WeldJoint* j = (b2WeldJoint*)rc_joint[joint_id].joint;
+ return j->GetStiffness();
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->GetStiffness();
+ }
+ break;
+ }
+
+ return 0;
+}
+
+void rc_setJointDamping(int joint_id, double damping)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ {
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ j->SetDamping(damping);
+ }
+ break;
+
+ case RC_JOINT_TYPE_WELD:
+ {
+ b2WeldJoint* j = (b2WeldJoint*)rc_joint[joint_id].joint;
+ j->SetDamping(damping);
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ j->SetDamping(damping);
+ }
+ break;
+ }
+}
+
+double rc_getJointDamping(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_DISTANCE:
+ {
+ b2DistanceJoint* j = (b2DistanceJoint*)rc_joint[joint_id].joint;
+ return j->GetDamping();
+ }
+ break;
+
+ case RC_JOINT_TYPE_WELD:
+ {
+ b2WeldJoint* j = (b2WeldJoint*)rc_joint[joint_id].joint;
+ return j->GetDamping();
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->GetDamping();
+ }
+ break;
+ }
+
+ return 0;
+}
+
+
+void rc_setJointMaxForce(int joint_id, double force)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_FRICTION:
+ {
+ b2FrictionJoint* j = (b2FrictionJoint*)rc_joint[joint_id].joint;
+ j->SetMaxForce(force);
+ }
+ break;
+
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ j->SetMaxForce(force);
+ }
+ break;
+ }
+}
+
+double rc_getJointMaxForce(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_FRICTION:
+ {
+ b2FrictionJoint* j = (b2FrictionJoint*)rc_joint[joint_id].joint;
+ return j->GetMaxForce();
+ }
+ break;
+
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ j->GetMaxForce();
+ }
+ break;
+ }
+
+ return 0;
+}
+
+void rc_setJointMaxTorque(int joint_id, double torque)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_FRICTION:
+ {
+ b2FrictionJoint* j = (b2FrictionJoint*)rc_joint[joint_id].joint;
+ j->SetMaxTorque(torque);
+ }
+ break;
+
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ j->SetMaxTorque(torque);
+ }
+ break;
+ }
+}
+
+double rc_getJointMaxTorque(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_FRICTION:
+ {
+ b2FrictionJoint* j = (b2FrictionJoint*)rc_joint[joint_id].joint;
+ return j->GetMaxTorque();
+ }
+ break;
+
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ return j->GetMaxTorque();
+ }
+ break;
+ }
+
+ return 0;
+}
+
+
+void rc_setJointCorrectionFactor(int joint_id, double factor)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ j->SetCorrectionFactor(factor);
+ }
+ break;
+ }
+}
+
+double rc_getJointCorrectionFactor(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ return j->GetCorrectionFactor();
+ }
+ break;
+ }
+
+ return 0;
+}
+
+
+void rc_setJointRatio(int joint_id, double j_ratio)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_GEAR:
+ {
+ b2GearJoint* j = (b2GearJoint*)rc_joint[joint_id].joint;
+ j->SetRatio(j_ratio);
+ }
+ break;
+ }
+}
+
+double rc_getJointRatio(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_GEAR:
+ {
+ b2GearJoint* j = (b2GearJoint*)rc_joint[joint_id].joint;
+ return j->GetRatio();
+ }
+ break;
+
+ case RC_JOINT_TYPE_PULLEY:
+ {
+ b2PulleyJoint* j = (b2PulleyJoint*)rc_joint[joint_id].joint;
+ return j->GetRatio();
+ }
+ break;
+ }
+
+ return 0;
+}
+
+
+void rc_setJointLinearOffset(int joint_id, double x, double y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ j->SetLinearOffset(b2Vec2(x, y));
+ }
+ break;
+ }
+}
+
+void rc_getJointLinearOffset(int joint_id, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ b2Vec2 v = j->GetLinearOffset();
+ *x = v.x;
+ *y = v.y;
+ }
+ break;
+ }
+}
+
+void rc_setJointAngularOffset(int joint_id, double angleOffset)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ angleOffset = rc_util_radians(angleOffset);
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ j->SetAngularOffset(angleOffset);
+ }
+ break;
+ }
+}
+
+double rc_getJointAngularOffset(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_MOTOR:
+ {
+ b2MotorJoint* j = (b2MotorJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetAngularOffset());
+ }
+ break;
+ }
+
+ return 0;
+}
+
+
+void rc_getJointLocalAxisA(int joint_id, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ b2Vec2 v = j->GetLocalAxisA();
+ *x = v.x;
+ *y = v.y;
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ b2Vec2 v = j->GetLocalAxisA();
+ *x = v.x;
+ *y = v.y;
+ }
+ break;
+
+ }
+}
+
+double rc_getJointReferenceAngle(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetReferenceAngle());
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetReferenceAngle());
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointTranslation(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->GetJointTranslation();
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->GetJointTranslation();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointSpeed(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->GetJointSpeed();
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetJointSpeed());
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+
+bool rc_jointIsLimitEnabled(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return false;
+
+ if(!rc_joint[joint_id].active)
+ return false;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->IsLimitEnabled();
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return j->IsLimitEnabled();
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->IsLimitEnabled();
+ }
+ break;
+
+ }
+
+ return false;
+}
+
+void rc_enableJointLimit(int joint_id, bool flag)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->EnableLimit(flag);
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return j->EnableLimit(flag);
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->EnableLimit(flag);
+ }
+ break;
+
+ }
+}
+
+double rc_getJointLowerLimit(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->GetLowerLimit();
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetLowerLimit());
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->GetLowerLimit();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointUpperLimit(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->GetUpperLimit();
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetUpperLimit());
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->GetUpperLimit();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+void rc_setJointLimits(int joint_id, double lower_limit, double upper_limit)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ j->SetLimits(lower_limit, upper_limit);
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ j->SetLimits(rc_util_radians(lower_limit), rc_util_radians(upper_limit));
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ j->SetLimits(lower_limit, upper_limit);
+ }
+ break;
+
+ }
+}
+
+bool rc_jointMotorIsEnabled(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return false;
+
+ if(!rc_joint[joint_id].active)
+ return false;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->IsMotorEnabled();
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return j->IsMotorEnabled();
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->IsMotorEnabled();
+ }
+ break;
+
+ }
+
+ return false;
+}
+
+void rc_enableJointMotor(int joint_id, bool flag)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ j->EnableMotor(flag);
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ j->EnableMotor(flag);
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ j->EnableMotor(flag);
+ }
+ break;
+
+ }
+}
+
+void rc_setJointMotorSpeed(int joint_id, double speed)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ j->SetMotorSpeed(speed);
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ j->SetMotorSpeed(rc_util_radians(speed));
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ j->SetMotorSpeed(rc_util_radians(speed));
+ }
+ break;
+
+ }
+}
+
+double rc_getJointMotorSpeed(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->GetMotorSpeed();
+ }
+ break;
+
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetMotorSpeed());
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetMotorSpeed());
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+void rc_setJointMaxMotorForce(int joint_id, double force)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ j->SetMaxMotorForce(force);
+ }
+ break;
+
+ }
+}
+
+double rc_getJointMaxMotorForce(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->GetMaxMotorForce();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointMotorForce(int joint_id, double inv_dt)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PRISMATIC:
+ {
+ b2PrismaticJoint* j = (b2PrismaticJoint*)rc_joint[joint_id].joint;
+ return j->GetMotorForce(inv_dt);
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+void rc_setJointMaxMotorTorque(int joint_id, double torque)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ j->SetMaxMotorTorque(torque);
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ j->SetMaxMotorTorque(torque);
+ }
+ break;
+
+ }
+}
+
+double rc_getJointMaxMotorTorque(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return j->GetMaxMotorTorque();
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->GetMaxMotorTorque();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointMotorTorque(int joint_id, double inv_dt)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return j->GetMotorTorque(inv_dt);
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->GetMotorTorque(inv_dt);
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+
+void rc_getJointGroundAnchorA(int joint_id, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PULLEY:
+ {
+ b2PulleyJoint* j = (b2PulleyJoint*)rc_joint[joint_id].joint;
+ b2Vec2 v = j->GetGroundAnchorA();
+ *x = v.x;
+ *y = v.y;
+ }
+ break;
+
+ }
+
+}
+
+void rc_getJointGroundAnchorB(int joint_id, double* x, double* y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PULLEY:
+ {
+ b2PulleyJoint* j = (b2PulleyJoint*)rc_joint[joint_id].joint;
+ b2Vec2 v = j->GetGroundAnchorB();
+ *x = v.x;
+ *y = v.y;
+ }
+ break;
+
+ }
+
+}
+
+double rc_getJointLengthA(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PULLEY:
+ {
+ b2PulleyJoint* j = (b2PulleyJoint*)rc_joint[joint_id].joint;
+ return j->GetLengthA();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointLengthB(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PULLEY:
+ {
+ b2PulleyJoint* j = (b2PulleyJoint*)rc_joint[joint_id].joint;
+ return j->GetLengthB();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointCurrentLengthA(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PULLEY:
+ {
+ b2PulleyJoint* j = (b2PulleyJoint*)rc_joint[joint_id].joint;
+ return j->GetCurrentLengthA();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointCurrentLengthB(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PULLEY:
+ {
+ b2PulleyJoint* j = (b2PulleyJoint*)rc_joint[joint_id].joint;
+ return j->GetCurrentLengthB();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+void rc_setJointOrigin(int joint_id, double x, double y)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return;
+
+ if(!rc_joint[joint_id].active)
+ return;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_PULLEY:
+ {
+ b2PulleyJoint* j = (b2PulleyJoint*)rc_joint[joint_id].joint;
+ j->ShiftOrigin(b2Vec2(x, y));
+ }
+ break;
+
+ }
+
+}
+
+double rc_getJointAngle(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_REVOLUTE:
+ {
+ b2RevoluteJoint* j = (b2RevoluteJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetJointAngle());
+ }
+ break;
+
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetJointAngle());
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointLinearSpeed(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return j->GetJointLinearSpeed();
+ }
+ break;
+
+ }
+
+ return 0;
+}
+
+double rc_getJointAngularSpeed(int joint_id)
+{
+ if(joint_id < 0 || joint_id >= rc_joint.size())
+ return 0;
+
+ if(!rc_joint[joint_id].active)
+ return 0;
+
+ switch(rc_joint[joint_id].type)
+ {
+ case RC_JOINT_TYPE_WHEEL:
+ {
+ b2WheelJoint* j = (b2WheelJoint*)rc_joint[joint_id].joint;
+ return rc_util_degrees(j->GetJointAngularSpeed());
+ }
+ break;
+ }
+
+ return 0;
+}
+
+#endif // RC_JOINTS_H_INCLUDED
diff --git a/rcbasic_runtime/rc_mesh.h b/rcbasic_runtime/rc_mesh.h
new file mode 100644
index 0000000..feb35f0
--- /dev/null
+++ b/rcbasic_runtime/rc_mesh.h
@@ -0,0 +1,270 @@
+#ifndef RC_MESH_H_INCLUDED
+#define RC_MESH_H_INCLUDED
+
+//load a mesh from a file
+int rc_loadMesh(std::string mesh_file)
+{
+ int mesh_id = -1;
+
+ rc_mesh_obj mesh_obj;
+ mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
+
+ irr::scene::IAnimatedMesh* mesh = SceneManager->getMesh(mesh_file.c_str());
+ mesh_obj.mesh = mesh;
+
+ if(!mesh)
+ return -1;
+
+ for(int i = 0; i < rc_mesh.size(); i++)
+ {
+ if(!rc_mesh[i].mesh)
+ {
+ mesh_id = i;
+ break;
+ }
+ }
+
+ if(mesh_id < 0)
+ {
+ mesh_id = rc_mesh.size();
+ rc_mesh.push_back(mesh_obj);
+ }
+ else
+ {
+ rc_mesh[mesh_id] = mesh_obj;
+ }
+
+ return mesh_id;
+}
+
+//load a mesh from an archive
+int rc_loadMeshFromArchive(std::string archive, std::string mesh_file)
+{
+ int mesh_id = -1;
+
+ device->getFileSystem()->addFileArchive(archive.c_str());
+ irr::scene::IAnimatedMesh *mesh = SceneManager->getMesh(mesh_file.c_str());
+ device->getFileSystem()->removeFileArchive((irr::u32) 0);
+
+ rc_mesh_obj mesh_obj;
+ mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
+ mesh_obj.mesh = mesh;
+
+ if(!mesh)
+ return -1;
+
+ for(int i = 0; i < rc_mesh.size(); i++)
+ {
+ if(!rc_mesh[i].mesh)
+ {
+ mesh_id = i;
+ break;
+ }
+ }
+
+ if(mesh_id < 0)
+ {
+ mesh_id = rc_mesh.size();
+ rc_mesh.push_back(mesh_obj);
+ }
+ else
+ {
+ rc_mesh[mesh_id] = mesh_obj;
+ }
+
+ return mesh_id;
+}
+
+int rc_loadAN8(std::string an8_file)
+{
+ int id = -1;
+
+ for(int i = 0; i < rc_an8.size(); i++)
+ {
+ if(!rc_an8[i].active)
+ {
+ id = i;
+ break;
+ }
+ }
+
+ if(id < 0)
+ {
+ id = rc_an8.size();
+ rc_an8_obj obj;
+ rc_an8.push_back(obj);
+ }
+
+ rc_an8[id].project = an8::loadAN8(an8_file);
+ if(rc_an8[id].project.exists)
+ {
+ rc_an8[id].active = true;
+ return id;
+ }
+
+ rc_an8[id].active = false;
+
+ return -1;
+}
+
+//load a mesh from an archive
+int rc_loadMeshFromAN8(int an8_id, std::string scene_name)
+{
+ int mesh_id = -1;
+
+ if(an8_id < 0 || an8_id >= rc_an8.size())
+ return -1;
+
+ if(!rc_an8[an8_id].active)
+ return -1;
+
+ rc_mesh_obj mesh_obj;
+ mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
+ mesh_obj.mesh = an8::loadAN8Scene(device, rc_an8[an8_id].project, scene_name);
+
+ if(!mesh_obj.mesh)
+ return -1;
+
+ for(int i = 0; i < rc_mesh.size(); i++)
+ {
+ if(!rc_mesh[i].mesh)
+ {
+ mesh_id = i;
+ break;
+ }
+ }
+
+ if(mesh_id < 0)
+ {
+ mesh_id = rc_mesh.size();
+ rc_mesh.push_back(mesh_obj);
+ }
+ else
+ {
+ rc_mesh[mesh_id] = mesh_obj;
+ }
+
+ return mesh_id;
+}
+
+int rc_getNumAN8Scenes(int an8_id)
+{
+ if(an8_id < 0 || an8_id >= rc_an8.size())
+ return 0;
+
+ if(!rc_an8[an8_id].active)
+ return 0;
+
+ return rc_an8[an8_id].project.scenes.size();
+}
+
+std::string rc_getAN8SceneName(int an8_id, int scene_num)
+{
+ if(an8_id < 0 || an8_id >= rc_an8.size())
+ return "";
+
+ if(!rc_an8[an8_id].active)
+ return "";
+
+ if(scene_num < 0 || scene_num >= rc_an8[an8_id].project.scenes.size())
+ return "";
+
+ return rc_an8[an8_id].project.scenes[scene_num].name;
+}
+
+//delete mesh
+void rc_deleteMesh(int mesh_id)
+{
+ if(mesh_id < 0 || mesh_id >= rc_mesh.size())
+ return;
+
+ if(rc_mesh[mesh_id].mesh)
+ rc_mesh[mesh_id].mesh->drop();
+
+ rc_mesh[mesh_id].mesh = NULL;
+ rc_mesh[mesh_id].mesh_type = 0;
+
+}
+
+//create mesh from geometry data [TODO]
+int rc_createMesh()
+{
+ irr::scene::ISkinnedMesh * mesh = SceneManager->createSkinnedMesh();
+
+ if(!mesh)
+ return -1;
+
+ int mesh_id = rc_mesh.size();
+ rc_mesh_obj mesh_obj;
+ mesh_obj.mesh = mesh;
+ mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
+
+ rc_mesh.push_back(mesh_obj);
+
+ return mesh_id;
+}
+
+int rc_createPlaneMesh(double w, double h, double tileCount_w, double tileCount_h)
+{
+ irr::scene::IAnimatedMesh* mesh = SceneManager->addHillPlaneMesh( "plane",
+ irr::core::dimension2d(w/tileCount_w, h/tileCount_h),
+ irr::core::dimension2d(tileCount_w, tileCount_h));
+
+ if(!mesh)
+ return -1;
+
+ int mesh_id = rc_mesh.size();
+ rc_mesh_obj mesh_obj;
+ mesh_obj.mesh = mesh;
+ mesh_obj.mesh_type = RC_MESH_TYPE_ANIMATED;
+
+ rc_mesh.push_back(mesh_obj);
+
+ return mesh_id;
+}
+
+
+//create mesh from geometry data [TODO]
+bool rc_addMeshBuffer(int mesh_id, int vertex_count, double* vertex_data, double* normal_data, double* uv_data, int index_count, double* index_data)
+{
+ irr::scene::ISkinnedMesh * mesh = (irr::scene::ISkinnedMesh*) rc_mesh[mesh_id].mesh;
+
+ irr::scene::SSkinMeshBuffer* mbuf = mesh->addMeshBuffer();
+
+ if(!mbuf)
+ {
+ mesh->drop();
+ return false;
+ }
+
+ irr::core::array vertices;
+ irr::core::array indices;
+
+ for(int i = 0; i < vertex_count; i++)
+ {
+ irr::video::S3DVertex v;
+ v.Pos = irr::core::vector3df( (irr::f32) vertex_data[i*3], (irr::f32) vertex_data[i*3+1], (irr::f32) vertex_data[i*3+2] );
+ v.Normal = irr::core::vector3df( (irr::f32) normal_data[i*3], (irr::f32) normal_data[i*3+1], (irr::f32) normal_data[i*3+2] );
+ v.TCoords = irr::core::vector2df( (irr::f32) uv_data[i*2], (irr::f32) uv_data[i*2+1] );
+ vertices.push_back(v);
+ }
+
+ for(int i = 0; i < index_count; i++)
+ {
+ indices.push_back( (irr::u16) index_data[i] );
+ }
+
+ if(indices.size() > 0)
+ {
+ for(int i = 0; i < vertices.size(); i++)
+ mbuf->Vertices_Standard.push_back(vertices[i]);
+
+ for(int i = 0; i < indices.size(); i++)
+ mbuf->Indices.push_back(indices[i]);
+
+ }
+
+ return true;
+}
+
+#endif // RC_MESH_H_INCLUDED
diff --git a/rcbasic_runtime/rc_os_defines.h b/rcbasic_runtime/rc_os_defines.h
index ef1e09e..ffa76c9 100755
--- a/rcbasic_runtime/rc_os_defines.h
+++ b/rcbasic_runtime/rc_os_defines.h
@@ -20,4 +20,16 @@
#define RC_MOBILE
#endif
+#define RC_PI 3.14159265359
+
+inline double rc_util_radians(double degrees)
+{
+ return degrees * (RC_PI/180);
+}
+
+inline double rc_util_degrees(double radians)
+{
+ return radians * (180/RC_PI);
+}
+
#endif // RC_OS_DEFINES_H_INCLUDED
diff --git a/rcbasic_runtime/rc_particles.h b/rcbasic_runtime/rc_particles.h
new file mode 100644
index 0000000..b7f1ac9
--- /dev/null
+++ b/rcbasic_runtime/rc_particles.h
@@ -0,0 +1,863 @@
+#ifndef RC_PARTICLES_H_INCLUDED
+#define RC_PARTICLES_H_INCLUDED
+
+int rc_getParticleType(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.particle_type;
+}
+
+void rc_startParticleEmitter(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+
+ bool everyMeshVertex = rc_actor[actor].particle_properties.everyMeshVertex;
+ irr::s32 mbNumber = rc_actor[actor].particle_properties.mbNumber;
+ irr::f32 normalDirectionModifier = rc_actor[actor].particle_properties.normalDirectionModifier;
+ bool useNormalDirection = rc_actor[actor].particle_properties.useNormalDirection;
+ irr::s32 mesh_id = rc_actor[actor].particle_properties.mesh_id;
+ irr::core::vector3df direction = rc_actor[actor].particle_properties.direction;
+ irr::u32 minParticlesPerSecond = rc_actor[actor].particle_properties.minParticlesPerSecond;
+ irr::u32 maxParticlesPerSecond = rc_actor[actor].particle_properties.maxParticlesPerSecond;
+ irr::video::SColor minStartColor = rc_actor[actor].particle_properties.minStartColor;
+ irr::video::SColor maxStartColor = rc_actor[actor].particle_properties.maxStartColor;
+ irr::u32 lifeTimeMin = rc_actor[actor].particle_properties.lifeTimeMin;
+ irr::u32 lifeTimeMax = rc_actor[actor].particle_properties.lifeTimeMax;
+ irr::s32 maxAngleDegrees = rc_actor[actor].particle_properties.maxAngleDegrees;
+ irr::core::dimension2df minStartSize = rc_actor[actor].particle_properties.minStartSize;
+ irr::core::dimension2df maxStartSize = rc_actor[actor].particle_properties.maxStartSize;
+ irr::core::vector3df center = rc_actor[actor].particle_properties.center;
+ irr::f32 radius = rc_actor[actor].particle_properties.radius;
+ irr::f32 ringThickness = rc_actor[actor].particle_properties.ringThickness;
+ irr::core::aabbox3df box = rc_actor[actor].particle_properties.box;
+ irr::core::vector3df normal = rc_actor[actor].particle_properties.normal;
+ irr::f32 length = rc_actor[actor].particle_properties.length;
+ bool outlineOnly = rc_actor[actor].particle_properties.outlineOnly;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*) rc_actor[actor].mesh_node;
+
+ irr::scene::IParticleEmitter* em = NULL;
+
+ switch(rc_actor[actor].particle_properties.particle_type)
+ {
+ case RC_PARTICLE_TYPE_POINT:
+ em = node->createPointEmitter(direction, minParticlesPerSecond, maxParticlesPerSecond,
+ minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
+ maxAngleDegrees, minStartSize, maxStartSize);
+ node->setEmitter(em);
+ em->drop();
+ break;
+
+ case RC_PARTICLE_TYPE_BOX:
+ em = node->createBoxEmitter(box, direction, minParticlesPerSecond, maxParticlesPerSecond,
+ minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
+ maxAngleDegrees, minStartSize, maxStartSize);
+ node->setEmitter(em);
+ em->drop();
+ break;
+
+ case RC_PARTICLE_TYPE_SPHERE:
+ em = node->createSphereEmitter(center, radius, direction,
+ minParticlesPerSecond, maxParticlesPerSecond,
+ minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
+ maxAngleDegrees, minStartSize, maxStartSize);
+ node->setEmitter(em);
+ em->drop();
+ break;
+
+ case RC_PARTICLE_TYPE_CYLINDER:
+ em = node->createCylinderEmitter(center, radius, normal, length, outlineOnly,
+ direction, minParticlesPerSecond, maxParticlesPerSecond,
+ minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
+ maxAngleDegrees, minStartSize, maxStartSize);
+ node->setEmitter(em);
+ em->drop();
+ break;
+
+ case RC_PARTICLE_TYPE_MESH:
+ if(mesh_id < 0 || mesh_id >= rc_mesh.size())
+ return;
+
+ if(!rc_mesh[mesh_id].mesh)
+ return;
+
+ em = node->createMeshEmitter(rc_mesh[mesh_id].mesh, useNormalDirection,
+ direction, normalDirectionModifier, mbNumber, everyMeshVertex,
+ minParticlesPerSecond, maxParticlesPerSecond,
+ minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
+ maxAngleDegrees, minStartSize, maxStartSize);
+ node->setEmitter(em);
+ em->drop();
+ break;
+
+ case RC_PARTICLE_TYPE_RING:
+ em = node->createRingEmitter(center, radius, ringThickness,
+ direction, minParticlesPerSecond, maxParticlesPerSecond,
+ minStartColor, maxStartColor, lifeTimeMin, lifeTimeMax,
+ maxAngleDegrees, minStartSize, maxStartSize);
+ node->setEmitter(em);
+ em->drop();
+ break;
+ }
+}
+
+void rc_stopParticleEmitter(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*) rc_actor[actor].mesh_node;
+ node->setEmitter(0);
+}
+
+void rc_setParticleDirection(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.direction.set(x, y, z);
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setDirection( rc_actor[actor].particle_properties.direction );
+}
+
+void rc_getParticleDirection(int actor, double* x, double* y, double* z)
+{
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ *x = rc_actor[actor].particle_properties.direction.X;
+ *y = rc_actor[actor].particle_properties.direction.Y;
+ *z = rc_actor[actor].particle_properties.direction.Z;
+}
+
+void rc_useParticleEveryMeshVertex(int actor, bool flag)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
+ return;
+
+ rc_actor[actor].particle_properties.everyMeshVertex = flag;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ {
+ irr::scene::IParticleMeshEmitter* em = (irr::scene::IParticleMeshEmitter*)node->getEmitter();
+ em->setEveryMeshVertex(rc_actor[actor].particle_properties.everyMeshVertex);
+ }
+}
+
+bool rc_particleIsUsingEveryMeshVertex(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return false;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return false;
+
+ if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
+ return false;
+
+ return rc_actor[actor].particle_properties.everyMeshVertex;
+
+}
+
+void rc_setParticleNormalDirectionMod(int actor, double mod)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
+ return;
+
+ rc_actor[actor].particle_properties.normalDirectionModifier = mod;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ {
+ irr::scene::IParticleMeshEmitter* em = (irr::scene::IParticleMeshEmitter*)node->getEmitter();
+ em->setNormalDirectionModifier(rc_actor[actor].particle_properties.normalDirectionModifier);
+ }
+}
+
+double rc_getParticleNormalDirectionMod(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
+ return 0;
+
+ return rc_actor[actor].particle_properties.normalDirectionModifier;
+}
+
+void rc_useParticleNormalDirection(int actor, bool flag)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
+ return;
+
+ rc_actor[actor].particle_properties.useNormalDirection = flag;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ {
+ irr::scene::IParticleMeshEmitter* em = (irr::scene::IParticleMeshEmitter*)node->getEmitter();
+ em->setUseNormalDirection(rc_actor[actor].particle_properties.useNormalDirection);
+ }
+}
+
+bool rc_particleIsUsingNormalDirection(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return false;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return false;
+
+ if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
+ return false;
+
+ return rc_actor[actor].particle_properties.useNormalDirection;
+}
+
+void rc_setParticleMesh(int actor, int mesh)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ if(rc_actor[actor].particle_properties.particle_type != RC_PARTICLE_TYPE_MESH)
+ return;
+
+ rc_actor[actor].particle_properties.mesh_id = mesh;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ {
+ if(mesh < 0 || mesh >= rc_mesh.size())
+ return;
+
+ if(!rc_mesh[mesh].mesh)
+ return;
+
+ irr::scene::IParticleMeshEmitter* em = (irr::scene::IParticleMeshEmitter*)node->getEmitter();
+ em->setMesh(rc_mesh[mesh].mesh);
+ }
+}
+
+void rc_setMinParticlesPerSecond(int actor, Uint32 minParticlesPerSecond)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.minParticlesPerSecond = minParticlesPerSecond;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMinParticlesPerSecond(minParticlesPerSecond);
+}
+
+Uint32 rc_getMinParticlesPerSecond(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.minParticlesPerSecond;
+}
+
+void rc_setMaxParticlesPerSecond(int actor, Uint32 maxParticlesPerSecond)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.maxParticlesPerSecond = maxParticlesPerSecond;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMaxParticlesPerSecond(maxParticlesPerSecond);
+}
+
+Uint32 rc_getMaxParticlesPerSecond(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.maxParticlesPerSecond;
+}
+
+void rc_setParticleMinStartColor(int actor, Uint32 color)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.minStartColor = irr::video::SColor(color);
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMinStartColor(rc_actor[actor].particle_properties.minStartColor);
+}
+
+Uint32 rc_getParticleMinStartColor(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.minStartColor.color;
+}
+
+void rc_setParticleMaxStartColor(int actor, Uint32 color)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.maxStartColor = irr::video::SColor(color);
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMaxStartColor(rc_actor[actor].particle_properties.maxStartColor);
+}
+
+Uint32 rc_getParticleMaxStartColor(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.maxStartColor.color;
+}
+
+void rc_setParticleMinLife(int actor, Uint32 minLife)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.lifeTimeMin = minLife;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMinLifeTime(rc_actor[actor].particle_properties.lifeTimeMin);
+}
+
+Uint32 rc_getParticleMinLife(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.lifeTimeMin;
+}
+
+void rc_setParticleMaxLife(int actor, Uint32 maxLife)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.lifeTimeMax = maxLife;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMaxLifeTime(rc_actor[actor].particle_properties.lifeTimeMax);
+}
+
+Uint32 rc_getParticleMaxLife(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.lifeTimeMax;
+}
+
+void rc_setParticleMaxAngle(int actor, int maxAngle)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.maxAngleDegrees = maxAngle;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMaxAngleDegrees(rc_actor[actor].particle_properties.maxAngleDegrees);
+}
+
+int rc_getParticleMaxAngle(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.maxAngleDegrees;
+}
+
+void rc_setParticleMinStartSize(int actor, double w, double h)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.minStartSize = irr::core::dimension2df(w, h);
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMinStartSize(rc_actor[actor].particle_properties.minStartSize);
+}
+
+void rc_getParticleMinStartSize(int actor, double* w, double* h)
+{
+ *w = 0;
+ *h = 0;
+
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ *w = rc_actor[actor].particle_properties.minStartSize.Width;
+ *h = rc_actor[actor].particle_properties.minStartSize.Height;
+}
+
+void rc_setParticleMaxStartSize(int actor, double w, double h)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.maxStartSize = irr::core::dimension2df(w, h);
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(node->getEmitter())
+ node->getEmitter()->setMaxStartSize(rc_actor[actor].particle_properties.maxStartSize);
+}
+
+void rc_getParticleMaxStartSize(int actor, double* w, double* h)
+{
+ *w = 0;
+ *h = 0;
+
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ *w = rc_actor[actor].particle_properties.maxStartSize.Width;
+ *h = rc_actor[actor].particle_properties.maxStartSize.Height;
+}
+
+void rc_setParticleCenter(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.center = irr::core::vector3df(x, y, z);
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(!node->getEmitter())
+ return;
+
+
+ switch(rc_actor[actor].particle_properties.particle_type)
+ {
+ case RC_PARTICLE_TYPE_SPHERE:
+ {
+ irr::scene::IParticleSphereEmitter* em = (irr::scene::IParticleSphereEmitter*)node->getEmitter();
+ em->setCenter(rc_actor[actor].particle_properties.center);
+ }
+ break;
+ case RC_PARTICLE_TYPE_CYLINDER:
+ {
+ irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
+ em->setCenter(rc_actor[actor].particle_properties.center);
+ }
+ break;
+ case RC_PARTICLE_TYPE_RING:
+ {
+ irr::scene::IParticleRingEmitter* em = (irr::scene::IParticleRingEmitter*)node->getEmitter();
+ em->setCenter(rc_actor[actor].particle_properties.center);
+ }
+ break;
+ }
+}
+
+void rc_getParticleCenter(int actor, double* x, double* y, double* z)
+{
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ *x = rc_actor[actor].particle_properties.center.X;
+ *y = rc_actor[actor].particle_properties.center.Y;
+ *z = rc_actor[actor].particle_properties.center.Z;
+}
+
+void rc_setParticleRadius(int actor, double radius)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.radius = radius;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(!node->getEmitter())
+ return;
+
+
+ switch(rc_actor[actor].particle_properties.particle_type)
+ {
+ case RC_PARTICLE_TYPE_SPHERE:
+ {
+ irr::scene::IParticleSphereEmitter* em = (irr::scene::IParticleSphereEmitter*)node->getEmitter();
+ em->setRadius(rc_actor[actor].particle_properties.radius);
+ }
+ break;
+ case RC_PARTICLE_TYPE_CYLINDER:
+ {
+ irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
+ em->setRadius(rc_actor[actor].particle_properties.radius);
+ }
+ break;
+ case RC_PARTICLE_TYPE_RING:
+ {
+ irr::scene::IParticleRingEmitter* em = (irr::scene::IParticleRingEmitter*)node->getEmitter();
+ em->setRadius(rc_actor[actor].particle_properties.radius);
+ }
+ break;
+ }
+}
+
+double rc_getParticleRadius(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.radius;
+}
+
+void rc_setParticleRingThickness(int actor, double ringThickness)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.ringThickness = ringThickness;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(!node->getEmitter())
+ return;
+
+
+ switch(rc_actor[actor].particle_properties.particle_type)
+ {
+ case RC_PARTICLE_TYPE_RING:
+ {
+ irr::scene::IParticleRingEmitter* em = (irr::scene::IParticleRingEmitter*)node->getEmitter();
+ em->setRingThickness(rc_actor[actor].particle_properties.ringThickness);
+ }
+ break;
+ }
+}
+
+double rc_getParticleRingThickness(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.ringThickness;
+}
+
+void rc_setParticleBox(int actor, double min_x, double min_y, double min_z, double max_x, double max_y, double max_z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.box = irr::core::aabbox3df(min_x, min_y, min_z, max_x, max_y, max_z);
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(!node->getEmitter())
+ return;
+
+
+ switch(rc_actor[actor].particle_properties.particle_type)
+ {
+ case RC_PARTICLE_TYPE_BOX:
+ {
+ irr::scene::IParticleBoxEmitter* em = (irr::scene::IParticleBoxEmitter*)node->getEmitter();
+ em->setBox(rc_actor[actor].particle_properties.box);
+ }
+ break;
+ }
+}
+
+void rc_getParticleBox(int actor, double* min_x, double* min_y, double* min_z, double* max_x, double* max_y, double* max_z)
+{
+ *min_x = 0;
+ *min_y = 0;
+ *min_z = 0;
+
+ *max_x = 0;
+ *max_y = 0;
+ *max_z = 0;
+
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ *min_x = rc_actor[actor].particle_properties.box.MinEdge.X;
+ *min_y = rc_actor[actor].particle_properties.box.MinEdge.Y;
+ *min_z = rc_actor[actor].particle_properties.box.MinEdge.Z;
+
+ *max_x = rc_actor[actor].particle_properties.box.MaxEdge.X;
+ *max_y = rc_actor[actor].particle_properties.box.MaxEdge.Y;
+ *max_z = rc_actor[actor].particle_properties.box.MaxEdge.Z;
+}
+
+void rc_setParticleNormal(int actor, double x, double y, double z)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.normal.set(x, y, z);
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(!node->getEmitter())
+ return;
+
+
+ switch(rc_actor[actor].particle_properties.particle_type)
+ {
+ case RC_PARTICLE_TYPE_CYLINDER:
+ {
+ irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
+ em->setNormal(rc_actor[actor].particle_properties.normal);
+ }
+ break;
+ }
+}
+
+void rc_getParticleNormal(int actor, double* x, double* y, double* z)
+{
+ *x = 0;
+ *y = 0;
+ *z = 0;
+
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ *x = rc_actor[actor].particle_properties.normal.X;
+ *y = rc_actor[actor].particle_properties.normal.Y;
+ *z = rc_actor[actor].particle_properties.normal.Z;
+}
+
+void rc_setParticleLength(int actor, double length)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.length = length;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(!node->getEmitter())
+ return;
+
+
+ switch(rc_actor[actor].particle_properties.particle_type)
+ {
+ case RC_PARTICLE_TYPE_CYLINDER:
+ {
+ irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
+ em->setLength(rc_actor[actor].particle_properties.length);
+ }
+ break;
+ }
+}
+
+double rc_getParticleLength(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return 0;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return 0;
+
+ return rc_actor[actor].particle_properties.length;
+}
+
+void rc_useParticleOutlineOnly(int actor, bool flag)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return;
+
+ rc_actor[actor].particle_properties.outlineOnly = flag;
+
+ irr::scene::IParticleSystemSceneNode* node = (irr::scene::IParticleSystemSceneNode*)rc_actor[actor].mesh_node;
+
+ if(!node->getEmitter())
+ return;
+
+
+ switch(rc_actor[actor].particle_properties.particle_type)
+ {
+ case RC_PARTICLE_TYPE_CYLINDER:
+ {
+ irr::scene::IParticleCylinderEmitter* em = (irr::scene::IParticleCylinderEmitter*)node->getEmitter();
+ em->setOutlineOnly(flag);
+ }
+ break;
+ }
+}
+
+bool rc_particleIsUsingOutlineOnly(int actor)
+{
+ if(actor < 0 || actor >= rc_actor.size())
+ return false;
+
+ if(rc_actor[actor].node_type != RC_NODE_TYPE_PARTICLE)
+ return false;
+
+ return rc_actor[actor].particle_properties.outlineOnly;
+}
+
+#endif // RC_PARTICLES_H_INCLUDED
diff --git a/rcbasic_runtime/rc_physics3D_base.h b/rcbasic_runtime/rc_physics3D_base.h
new file mode 100644
index 0000000..b2c613b
--- /dev/null
+++ b/rcbasic_runtime/rc_physics3D_base.h
@@ -0,0 +1,35 @@
+#ifndef RC_PHYSICS3D_BASE_H_INCLUDED
+#define RC_PHYSICS3D_BASE_H_INCLUDED
+
+#include "rc_gfx_core.h"
+
+//Set Gravity
+void rc_setGravity3D(double x, double y, double z)
+{
+ rc_physics3D.world->setGravity(irr::core::vector3d(x, y, z));
+}
+
+void rc_getGravity3D(double* x, double* y, double* z)
+{
+ btVector3 v = rc_physics3D.world->getPointer()->getGravity();
+ *x = v.getX();
+ *y = v.getY();
+ *z = v.getZ();
+}
+
+void rc_setWorld3DDeltaTime(double dt)
+{
+ rc_physics3D.DeltaTime = dt;
+}
+
+void rc_setWorld3DMaxSubSteps(double steps)
+{
+ rc_physics3D.maxSubSteps = steps;
+}
+
+void rc_setWorld3DTimeStep(double ts)
+{
+ rc_physics3D.fixedTimeStep = ts;
+}
+
+#endif // RC_PHYSICS3D_BASE_H_INCLUDED
diff --git a/rcbasic_runtime/rc_scene.h b/rcbasic_runtime/rc_scene.h
new file mode 100644
index 0000000..c493b3d
--- /dev/null
+++ b/rcbasic_runtime/rc_scene.h
@@ -0,0 +1,53 @@
+#ifndef RC_SCENE_H_INCLUDED
+#define RC_SCENE_H_INCLUDED
+
+void rc_addSceneSkyBox(int img_top, int img_bottom, int img_left, int img_right, int img_front, int img_back)
+{
+ if(!SceneManager)
+ return;
+
+ if(rc_scene_properties.sky)
+ return;
+
+ irr::video::ITexture* tp = rc_image[img_top].image;
+ irr::video::ITexture* bt = rc_image[img_bottom].image;
+ irr::video::ITexture* lf = rc_image[img_left].image;
+ irr::video::ITexture* rt = rc_image[img_right].image;
+ irr::video::ITexture* ft = rc_image[img_front].image;
+ irr::video::ITexture* bk = rc_image[img_back].image;
+ rc_scene_properties.sky = SceneManager->addSkyBoxSceneNode(tp, bt, lf, rt, ft, bk);
+}
+
+void rc_addSceneSkyDome(int img)
+{
+ if(!SceneManager)
+ return;
+
+ if(rc_scene_properties.sky)
+ return;
+
+ irr::video::ITexture* texture = rc_image[img].image;
+ rc_scene_properties.sky = SceneManager->addSkyDomeSceneNode(texture);
+}
+
+void rc_addSceneSkyDomeEx(int img, Uint32 horiRes, Uint32 vertRes, double txPercentage, double spherePercentage, double radius)
+{
+ if(!SceneManager)
+ return;
+
+ if(rc_scene_properties.sky)
+ return;
+
+ irr::video::ITexture* texture = rc_image[img].image;
+ rc_scene_properties.sky = SceneManager->addSkyDomeSceneNode(texture, horiRes, vertRes, txPercentage, spherePercentage, radius);
+}
+
+void rc_removeSceneSky()
+{
+ if(rc_scene_properties.sky)
+ rc_scene_properties.sky->remove();
+
+ rc_scene_properties.sky = NULL;
+}
+
+#endif // RC_SCENE_H_INCLUDED
diff --git a/rcbasic_runtime/rc_sprite2D.h b/rcbasic_runtime/rc_sprite2D.h
index 4b1e780..74b3a25 100644
--- a/rcbasic_runtime/rc_sprite2D.h
+++ b/rcbasic_runtime/rc_sprite2D.h
@@ -62,4 +62,26 @@ struct rc_sprite2D_obj
irr::core::array rc_sprite;
+#define RC_JOINT_TYPE_DISTANCE 1
+#define RC_JOINT_TYPE_FRICTION 2
+#define RC_JOINT_TYPE_GEAR 3
+#define RC_JOINT_TYPE_MOTOR 4
+#define RC_JOINT_TYPE_PRISMATIC 5
+#define RC_JOINT_TYPE_PULLEY 6
+#define RC_JOINT_TYPE_REVOLUTE 7
+#define RC_JOINT_TYPE_WELD 8
+#define RC_JOINT_TYPE_WHEEL 9
+
+struct rc_b2Joint_obj
+{
+ b2Joint* joint;
+
+ int type;
+ bool active;
+
+ int canvas;
+};
+
+irr::core::array rc_joint;
+
#endif // RC_SPRITE2D_H_INCLUDED
diff --git a/rcbasic_runtime/rc_sprite_physics.h b/rcbasic_runtime/rc_sprite_physics.h
new file mode 100644
index 0000000..000b011
--- /dev/null
+++ b/rcbasic_runtime/rc_sprite_physics.h
@@ -0,0 +1,367 @@
+#include "rc_sprite2D.h"
+
+void rc_getSpriteCenter(int spr_id, double* x, double* y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ *x = (double)rc_sprite[spr_id].physics.body->GetLocalCenter().x;
+ *y = (double)rc_sprite[spr_id].physics.body->GetLocalCenter().y;
+}
+
+void rc_setSpriteLinearVelocity(int spr_id, double x, double y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetLinearVelocity(b2Vec2(x, y));
+}
+
+void rc_getSpriteLinearVelocity(int spr_id, double* x, double* y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ *x = (double)rc_sprite[spr_id].physics.body->GetLinearVelocity().x;
+ *y = (double)rc_sprite[spr_id].physics.body->GetLinearVelocity().y;
+}
+
+void rc_setSpriteAngularVelocity(int spr_id, double av)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetAngularVelocity(av);
+}
+
+double rc_getSpriteAngularVelocity(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return 0;
+
+ if(!rc_sprite[spr_id].active)
+ return 0;
+
+ return (double)rc_sprite[spr_id].physics.body->GetAngularVelocity();
+}
+
+void rc_applySpriteForce(int spr_id, double fX, double fY, double pX, double pY)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->ApplyForce(b2Vec2(fX, fY), b2Vec2(pX, pY), true);
+}
+
+void rc_applySpriteCentralForce(int spr_id, double x, double y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->ApplyForceToCenter(b2Vec2(x, y), true);
+}
+
+void rc_applySpriteTorque(int spr_id, double torque)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->ApplyTorque(torque, true);
+}
+
+void rc_applySpriteLinearImpulse(int spr_id, double iX, double iY, double pX, double pY)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->ApplyLinearImpulse(b2Vec2(iX, iY), b2Vec2(pX, pY), true);
+}
+
+void rc_applySpriteAngularImpulse(int spr_id, double impulse)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->ApplyAngularImpulse(impulse, true);
+}
+
+double rc_getSpriteMass(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return 0;
+
+ if(!rc_sprite[spr_id].active)
+ return 0;
+
+ return rc_sprite[spr_id].physics.body->GetMass();
+}
+
+double rc_getSpriteInertia(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return 0;
+
+ if(!rc_sprite[spr_id].active)
+ return 0;
+
+ return rc_sprite[spr_id].physics.body->GetInertia();
+}
+
+void rc_getSpriteWorldPoint(int spr_id, double lX, double lY, double* x, double* y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ b2Vec2 wp = rc_sprite[spr_id].physics.body->GetWorldPoint(b2Vec2(lX, lY));
+ *x = wp.x;
+ *y = wp.y;
+}
+
+void rc_getSpriteWorldVector(int spr_id, double lX, double lY, double* x, double* y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ b2Vec2 wv = rc_sprite[spr_id].physics.body->GetWorldVector(b2Vec2(lX, lY));
+ *x = wv.x;
+ *y = wv.y;
+}
+
+void rc_getSpriteLocalPoint(int spr_id, double wX, double wY, double* x, double* y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ b2Vec2 lp = rc_sprite[spr_id].physics.body->GetLocalPoint(b2Vec2(wX, wY));
+ *x = lp.x;
+ *y = lp.y;
+}
+
+void rc_getSpriteLocalVector(int spr_id, double wX, double wY, double* x, double* y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ b2Vec2 lv = rc_sprite[spr_id].physics.body->GetLocalVector(b2Vec2(wX, wY));
+ *x = lv.x;
+ *y = lv.y;
+}
+
+void rc_getSpriteLinearVelocityFromLocalPoint(int spr_id, double pX, double pY, double* x, double* y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ b2Vec2 pos = rc_sprite[spr_id].physics.body->GetLinearVelocityFromLocalPoint(b2Vec2(pX, pY));
+ *x = pos.x;
+ *y = pos.y;
+}
+
+void rc_getSpriteLinearVelocityFromWorldPoint(int spr_id, double wX, double wY, double* x, double* y)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ b2Vec2 pos = rc_sprite[spr_id].physics.body->GetLinearVelocityFromWorldPoint(b2Vec2(wX, wY));
+ *x = pos.x;
+ *y = pos.y;
+}
+
+double rc_getSpriteLinearDamping(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return 0;
+
+ if(!rc_sprite[spr_id].active)
+ return 0;
+
+ return rc_sprite[spr_id].physics.body->GetLinearDamping();
+}
+
+void rc_setSpriteLinearDamping(int spr_id, double linearDamping)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetLinearDamping(linearDamping);
+}
+
+double rc_getSpriteAngularDamping(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return 0;
+
+ if(!rc_sprite[spr_id].active)
+ return 0;
+
+ return rc_sprite[spr_id].physics.body->GetAngularDamping();
+}
+
+void rc_setSpriteAngularDamping(int spr_id, double angularDamping)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetAngularDamping(angularDamping);
+}
+
+double rc_getSpriteGravityScale(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return 0;
+
+ if(!rc_sprite[spr_id].active)
+ return 0;
+
+ return rc_sprite[spr_id].physics.body->GetGravityScale();
+}
+
+void rc_setSpriteGravityScale(int spr_id, double g_scale)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetGravityScale(g_scale);
+}
+
+void rc_setSpriteBullet(int spr_id, bool flag)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetBullet(flag);
+}
+
+bool rc_spriteIsBullet(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return false;
+
+ if(!rc_sprite[spr_id].active)
+ return false;
+
+ return rc_sprite[spr_id].physics.body->IsBullet();
+}
+
+void rc_setSpriteSleepAllowed(int spr_id, bool flag)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetSleepingAllowed(flag);
+}
+
+bool rc_spriteSleepAllowed(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return false;
+
+ if(!rc_sprite[spr_id].active)
+ return false;
+
+ return rc_sprite[spr_id].physics.body->IsSleepingAllowed();
+}
+
+void rc_setSpriteAwake(int spr_id, bool flag)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetAwake(flag);
+}
+
+bool rc_spriteIsAwake(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return false;
+
+ if(!rc_sprite[spr_id].active)
+ return false;
+
+ return rc_sprite[spr_id].physics.body->IsAwake();
+}
+
+void rc_setSpriteFixedRotation(int spr_id, bool flag)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return;
+
+ if(!rc_sprite[spr_id].active)
+ return;
+
+ rc_sprite[spr_id].physics.body->SetFixedRotation(flag);
+}
+
+bool rc_spriteIsFixedRotation(int spr_id)
+{
+ if(spr_id < 0 || spr_id >= rc_sprite.size())
+ return false;
+
+ if(!rc_sprite[spr_id].active)
+ return false;
+
+ return rc_sprite[spr_id].physics.body->IsFixedRotation();
+}
diff --git a/rcbasic_runtime/rc_spritelib.h b/rcbasic_runtime/rc_spritelib.h
index 6118b14..9a4a491 100644
--- a/rcbasic_runtime/rc_spritelib.h
+++ b/rcbasic_runtime/rc_spritelib.h
@@ -10,6 +10,9 @@
#include "rc_sprite2D.h"
#include "rc_gfx_core.h"
+#include "rc_sprite_physics.h"
+#include "rc_joints.h"
+
#define RC_SPRITE_BASE_ANIMATION 0
int rc_createSpriteAnimation(int spr_id, int anim_length, double fps)
@@ -569,6 +572,9 @@ void rc_setSpriteRotation(int spr_id, double angle)
if(!rc_sprite[spr_id].active)
return;
+ //convert angle to radians
+ angle = rc_util_radians(angle);
+
rc_sprite[spr_id].physics.body->SetTransform(rc_sprite[spr_id].physics.body->GetPosition(), angle);
}
@@ -580,6 +586,9 @@ void rc_rotateSprite(int spr_id, double angle)
if(!rc_sprite[spr_id].active)
return;
+ //convert angle to radians
+ angle = rc_util_radians(angle);
+
float new_angle = rc_sprite[spr_id].physics.body->GetAngle() + angle;
rc_sprite[spr_id].physics.body->SetTransform(rc_sprite[spr_id].physics.body->GetPosition(), new_angle);
}
@@ -592,7 +601,7 @@ double rc_getSpriteRotation(int spr_id)
if(!rc_sprite[spr_id].active)
return 0;
- return rc_sprite[spr_id].physics.body->GetAngle();
+ return rc_util_degrees(rc_sprite[spr_id].physics.body->GetAngle());
}
void rc_setSpriteScale(int spr_id, double x, double y)
@@ -920,15 +929,6 @@ void drawSprites(int canvas_id)
VideoDriver->setRenderTarget(rc_canvas[0].texture, false, false);
}
-//NOTE TO TBIRD
-// 1. Each sprite has a Box2D body. You can look in "rc_sprite2D.h" to see how a sprite is structured.
-// 2. A box2D world is setup for each canvas. So a sprite will be attached to the canvas thats active when its created. When that canvas is destroyed, so is the sprite.
-// 3. By default, I have the sprite.physics_enabled attribute set to false. I feel like it makes sense to have a user intentionally enable physics since a user may not want physics for every sprite.
-// 4. The sprite.visible attribute only determines whether to draw the sprite. The physics simulation will still happen each frame unless physics are disabled.
-// 5. Don't change the value of sprite.active. Its used to check whether a sprite exists or not. I have an array of sprites in rc_sprite2D.h and if the active attribute is set to false, I reuse that slot to create a new sprite. If there is no inactive sprites in the array then I add a new sprite index to the array.
-// 6. The time step, velocity Iterations, and position iterations are part of the canvas.physics2D attribute. You will need to make functions to allow the user to change those.
-// 7. If you want to modify how sprites are rendered then you can just change the drawSprites() function above these notes.
-
//-----------------------------END OF SPRITE STUFF------------------------------------------------------------------------------
#endif // RC_SPRITELIB_H_INCLUDED
diff --git a/rcbasic_runtime/rc_stdlib.h b/rcbasic_runtime/rc_stdlib.h
index 0d45899..ba8ecb8 100755
--- a/rcbasic_runtime/rc_stdlib.h
+++ b/rcbasic_runtime/rc_stdlib.h
@@ -3,7 +3,7 @@
#include "rc_os_defines.h"
-#define RC_PI 3.14159265359
+//#define RC_PI 3.14159265359 //Moved to rc_os_defines.h
#ifdef RC_MAC
#define RC_GETCWD
diff --git a/rcbasic_runtime/rcbasic_runtime.cbp b/rcbasic_runtime/rcbasic_runtime.cbp
index b55c92b..9a529f7 100755
--- a/rcbasic_runtime/rcbasic_runtime.cbp
+++ b/rcbasic_runtime/rcbasic_runtime.cbp
@@ -36,6 +36,7 @@
+
@@ -84,8 +85,11 @@
+
+
+
diff --git a/rcbasic_runtime/rcbasic_runtime.depend b/rcbasic_runtime/rcbasic_runtime.depend
index 9a6039d..e7b9fa2 100755
--- a/rcbasic_runtime/rcbasic_runtime.depend
+++ b/rcbasic_runtime/rcbasic_runtime.depend
@@ -1,10 +1,11 @@
# depslib dependency file v1.0
-1726536727 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
+1729346052 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp
"rc_os_defines.h"
+
@@ -31,11 +32,11 @@
"rc_func130_cases.h"
-1714359665 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
+1728868528 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h
-1726536916 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
+1729472331 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h
-1726871849 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h
+1728937556 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_stdlib.h
"rc_os_defines.h"
@@ -106,9 +107,9 @@
"theoraplay.h"
-1714359665 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/theoraplay.h
+1694287822 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/theoraplay.h
-1726447734 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_matrix.h
+1729346052 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_matrix.h
@@ -124,15 +125,17 @@
"rc_matrix.h"
"rc_defines.h"
-1726446396 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_geometry.h
+1728937556 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_geometry.h
"rc_matrix.h"
-1714359665 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/theoraplay.c
+1728937556 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/theoraplay.c
+ "rc_os_defines.h"
+ "SDL.h"
"SDL2/SDL.h"
@@ -143,13 +146,16 @@
"theoraplay_cvtrgb.h"
"theoraplay_cvtrgb.h"
-1714359665 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/theoraplay_cvtrgb.h
+1694287822 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/theoraplay_cvtrgb.h
-1716017107 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/gui_freetype_font.cpp
+1727545973 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/gui_freetype_font.cpp
"gui_freetype_font.h"
-1716016724 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/gui_freetype_font.h
+1728937556 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/gui_freetype_font.h
+ "rc_os_defines.h"
+ "ft2build.h"
+ "freetype/freetype.h"
@@ -348,7 +354,7 @@
"vector3d.h"
"SIrrCreationParameters.h"
-1715920195 /home/n00b/Projects/RCIrrlicht/include/IrrCompileConfig.h
+1728771030 /home/n00b/Projects/RCIrrlicht/include/IrrCompileConfig.h
@@ -1234,15 +1240,19 @@
"matrix4.h"
"IVideoDriver.h"
-1725742730 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.cpp
+1727545973 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.cpp
"RealisticWater.h"
-1725749359 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/RealisticWater.h
-1726527026 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
+1729509412 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx.h
+ "SDL.h"
+
+
+
@@ -1255,11 +1265,17 @@
"rc_utf8.h"
"rc_sprite2D.h"
-
+ "rc_spritelib.h"
+ "rc_tilelib.h"
-1725932838 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
+1729472952 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx_core.h
+ "SDL.h"
+ "btBulletDynamicsCommon.h"
+ "BulletSoftBody/btSoftRigidDynamicsWorld.h"
+
+
@@ -1273,19 +1289,19 @@
"camera.h"
"rc_sprite2D.h"
-
-
+ "an8parser.h"
+
-1716144876 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_utf8.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_utf8.h
-1724983978 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/camera.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/camera.h
-1724001703 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_sprite2D.h
+1729472952 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_sprite2D.h
@@ -2172,8 +2188,13 @@
1686539631 /home/n00b/Projects/irrTheora/theoraplay.h
-1726534829 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx3D.h
+1729472952 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_gfx3D.h
+ "SDL.h"
+
+
+
+
@@ -2186,10 +2207,8 @@
"rc_gfx_core.h"
"rc_matrix.h"
"RealisticWater.h"
-
-
-1726526837 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_audio.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_audio.h
"rc_os_defines.h"
@@ -2210,7 +2229,7 @@
-1726527846 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_net.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_net.h
"rc_os_defines.h"
"SDL.h"
@@ -2238,11 +2257,11 @@
-1726441816 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_video.h
+1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_video.h
"rc_gfx_core.h"
-1726536916 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
+1729509662 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_func130_cases.h
1724469097 source:/home/n00b/Projects/irrBullet/src/irrBullet.cpp
"irrBullet.h"
@@ -2446,5 +2465,30 @@
1608686973 /usr/include/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h
"BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h"
-1726536152 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_test.h
+1728937556 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_test.h
+
+1728751611 /home/n00b/Projects/an8-parser/an8parser.h
+
+
+
+
+
+
+
+
+1729472952 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_spritelib.h
+ "SDL.h"
+
+ "rc_sprite2D.h"
+ "rc_gfx_core.h"
+
+1729524882 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_tilelib.h
+ "SDL.h"
+
+ "rc_tilemap.h"
+ "rc_gfx_core.h"
+
+1729520835 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_tilemap.h
+
+
diff --git a/rcbasic_runtime/rcbasic_runtime.layout b/rcbasic_runtime/rcbasic_runtime.layout
index d081ab9..777befb 100755
--- a/rcbasic_runtime/rcbasic_runtime.layout
+++ b/rcbasic_runtime/rcbasic_runtime.layout
@@ -1,35 +1,55 @@
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -37,39 +57,34 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
@@ -77,4 +92,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+