From ea986a826b838e7a5a956ec004f037c1337b466a Mon Sep 17 00:00:00 2001 From: n00b87 Date: Tue, 3 Mar 2026 19:29:04 -0600 Subject: [PATCH] Updated docs --- doc/doc_files/activefont.html | 30 + doc/doc_files/addcompositechild.html | 27 + doc/doc_files/addprojectoreffectactor.html | 27 + doc/doc_files/addspritechild.html | 21 + doc/doc_files/addvehiclewheel.html | 27 + doc/doc_files/applywheelengineforce.html | 21 + .../calculatecompositeprincipaltransform.html | 35 ++ doc/doc_files/clearposteffect.html | 18 + doc/doc_files/createcompositeactor.html | 24 + doc/doc_files/createvehicleactor.html | 21 + doc/doc_files/dotproduct.html | 18 + doc/doc_files/flipmeshsurfaces.html | 18 + .../generatecompositeaabbfromchildren.html | 18 + .../getactorboneabsolutetranform.html | 21 + doc/doc_files/getactorbonecount.html | 21 + doc/doc_files/getactorboneindex.html | 21 + doc/doc_files/getactorbonename.html | 21 + doc/doc_files/getactorboneposition.html | 21 + .../getactorbonerelativetranform.html | 21 + doc/doc_files/getactorbonerotation.html | 21 + doc/doc_files/getactorbonescale.html | 21 + doc/doc_files/getactortype.html | 62 ++ doc/doc_files/getbillboardsize.html | 18 + doc/doc_files/getcompositeaabb.html | 21 + doc/doc_files/getcompositechild.html | 18 + doc/doc_files/getcompositechildcount.html | 18 + doc/doc_files/getcompositechildindex.html | 18 + doc/doc_files/getcompositechildtransform.html | 18 + doc/doc_files/getcompositeupdaterevision.html | 18 + doc/doc_files/gethorizontalangle.html | 18 + doc/doc_files/getlineangle.html | 18 + doc/doc_files/getmeshbuffer.html | 21 + doc/doc_files/getmeshbuffercount.html | 18 + doc/doc_files/getmeshbufferindexcount.html | 18 + doc/doc_files/getmeshbuffervertexcount.html | 18 + doc/doc_files/getmeshpolygoncount.html | 18 + doc/doc_files/getphysics3d.html | 24 + doc/doc_files/getposteffectproperty.html | 18 + doc/doc_files/getposteffecttype.html | 44 ++ doc/doc_files/getprojectoreffectactor.html | 24 + .../getprojectoreffectactorcount.html | 18 + doc/doc_files/getprojectortexture.html | 21 + doc/doc_files/getrotationtotarget.html | 18 + doc/doc_files/getspriteanimationsource.html | 18 + doc/doc_files/getspritechildindex.html | 21 + doc/doc_files/getspriteworldcenter.html | 18 + doc/doc_files/getvehicleaxis.html | 29 + .../getvehiclechassisworldtransform.html | 18 + doc/doc_files/getvehiclecurrentspeed.html | 18 + doc/doc_files/getvehicleforwardvector.html | 18 + doc/doc_files/getvehiclepitchcontrol.html | 21 + .../getwheelactoroffsettransform.html | 27 + doc/doc_files/getwheelaxel.html | 21 + doc/doc_files/getwheelbrake.html | 21 + doc/doc_files/getwheelconnectionpoint.html | 21 + doc/doc_files/getwheelcount.html | 21 + doc/doc_files/getwheeldampingcompression.html | 22 + doc/doc_files/getwheeldampingrelaxation.html | 22 + doc/doc_files/getwheeldirection.html | 18 + doc/doc_files/getwheelengineforce.html | 21 + doc/doc_files/getwheelfrictionslip.html | 21 + .../getwheelinversecontactsuspension.html | 27 + .../getwheelmaxsuspensiontravel.html | 24 + doc/doc_files/getwheelradius.html | 21 + doc/doc_files/getwheelrollinfluence.html | 27 + doc/doc_files/getwheelrotation.html | 21 + doc/doc_files/getwheelrotationdelta.html | 21 + doc/doc_files/getwheelsteeringvalue.html | 21 + doc/doc_files/getwheelsuspensionlength.html | 21 + .../getwheelsuspensionstiffness.html | 29 + doc/doc_files/getwheelsuspensionvelocity.html | 24 + doc/doc_files/getwheelworldtransform.html | 24 + doc/doc_files/graphics2.html | 170 ++++++ doc/doc_files/graphics3.html | 180 ++++++ doc/doc_files/images/banner.png | Bin 0 -> 24968 bytes doc/doc_files/images/sprite_frames.aseprite | Bin 0 -> 32965 bytes doc/doc_files/images/sprite_frames.png | Bin 0 -> 16902 bytes doc/doc_files/interpolatevector.html | 18 + doc/doc_files/interpolatevectorq.html | 18 + doc/doc_files/makeplanartexturemap.html | 21 + doc/doc_files/matrixexists.html | 18 + doc/doc_files/normalizevector.html | 18 + doc/doc_files/pipeline_begin.html | 18 + doc/doc_files/pipeline_end.html | 18 + doc/doc_files/pipeline_render.html | 21 + doc/doc_files/posteffectisactive.html | 21 + doc/doc_files/recalculatecompositeaabb.html | 18 + doc/doc_files/recalculatemeshnormals.html | 18 + doc/doc_files/removecompositechild.html | 24 + doc/doc_files/removeprojectoreffectactor.html | 27 + doc/doc_files/removespritechild.html | 21 + doc/doc_files/resetvehiclesuspension.html | 18 + doc/doc_files/savebmp.html | 46 ++ doc/doc_files/setactorimpactmesh.html | 21 + doc/doc_files/setactorshapeex.html | 21 + doc/doc_files/setbillboardsize.html | 18 + doc/doc_files/setmeshbuffer.html | 21 + doc/doc_files/setphysics3d.html | 24 + doc/doc_files/setposteffect.html | 103 ++++ doc/doc_files/setposteffectactive.html | 21 + doc/doc_files/setposteffectproperty.html | 45 ++ doc/doc_files/setprojectortexture.html | 21 + doc/doc_files/setrendercirclepoints.html | 24 + doc/doc_files/setspritelayerpriority.html | 14 + doc/doc_files/setup.html | 11 - doc/doc_files/setvehiclepitchcontrol.html | 24 + .../setwheelactoroffsettransform.html | 24 + doc/doc_files/setwheelaxel.html | 24 + doc/doc_files/setwheelbrake.html | 21 + doc/doc_files/setwheelconnectionpoint.html | 21 + doc/doc_files/setwheeldampingcompression.html | 22 + doc/doc_files/setwheeldampingrelaxation.html | 22 + doc/doc_files/setwheeldirection.html | 24 + doc/doc_files/setwheelfrictionslip.html | 32 + .../setwheelinversecontactsuspension.html | 27 + .../setwheelmaxsuspensiontravel.html | 24 + doc/doc_files/setwheelradius.html | 21 + doc/doc_files/setwheelrollinfluence.html | 27 + doc/doc_files/setwheelrotation.html | 21 + doc/doc_files/setwheelsteeringvalue.html | 21 + doc/doc_files/setwheelsuspensionlength.html | 21 + .../setwheelsuspensionstiffness.html | 29 + doc/doc_files/setwheelsuspensionvelocity.html | 24 + doc/doc_files/sortspritelayer.html | 14 + doc/doc_files/stack_n_exists.html | 18 + doc/doc_files/stack_s_exists.html | 18 + .../updatecompositechildtransform.html | 18 + doc/doc_files/vectorisbetweenpoints.html | 18 + doc/doc_files/wheelisfront.html | 18 + rcbasic_build/rcbasic4_changes.ods | Bin 17860044 -> 17899194 bytes rcbasic_build/rcbasic_build.layout | 40 +- rcbasic_runtime/main.cpp | 19 +- rcbasic_runtime/rc_os_defines.h | 3 +- rcbasic_runtime/rcbasic_runtime.depend | 4 +- rcbasic_runtime/rcbasic_runtime.layout | 552 +++++++++--------- 135 files changed, 3466 insertions(+), 318 deletions(-) create mode 100644 doc/doc_files/activefont.html create mode 100644 doc/doc_files/addcompositechild.html create mode 100644 doc/doc_files/addprojectoreffectactor.html create mode 100644 doc/doc_files/addspritechild.html create mode 100644 doc/doc_files/addvehiclewheel.html create mode 100644 doc/doc_files/applywheelengineforce.html create mode 100644 doc/doc_files/calculatecompositeprincipaltransform.html create mode 100644 doc/doc_files/clearposteffect.html create mode 100644 doc/doc_files/createcompositeactor.html create mode 100644 doc/doc_files/createvehicleactor.html create mode 100644 doc/doc_files/dotproduct.html create mode 100644 doc/doc_files/flipmeshsurfaces.html create mode 100644 doc/doc_files/generatecompositeaabbfromchildren.html create mode 100644 doc/doc_files/getactorboneabsolutetranform.html create mode 100644 doc/doc_files/getactorbonecount.html create mode 100644 doc/doc_files/getactorboneindex.html create mode 100644 doc/doc_files/getactorbonename.html create mode 100644 doc/doc_files/getactorboneposition.html create mode 100644 doc/doc_files/getactorbonerelativetranform.html create mode 100644 doc/doc_files/getactorbonerotation.html create mode 100644 doc/doc_files/getactorbonescale.html create mode 100644 doc/doc_files/getactortype.html create mode 100644 doc/doc_files/getbillboardsize.html create mode 100644 doc/doc_files/getcompositeaabb.html create mode 100644 doc/doc_files/getcompositechild.html create mode 100644 doc/doc_files/getcompositechildcount.html create mode 100644 doc/doc_files/getcompositechildindex.html create mode 100644 doc/doc_files/getcompositechildtransform.html create mode 100644 doc/doc_files/getcompositeupdaterevision.html create mode 100644 doc/doc_files/gethorizontalangle.html create mode 100644 doc/doc_files/getlineangle.html create mode 100644 doc/doc_files/getmeshbuffer.html create mode 100644 doc/doc_files/getmeshbuffercount.html create mode 100644 doc/doc_files/getmeshbufferindexcount.html create mode 100644 doc/doc_files/getmeshbuffervertexcount.html create mode 100644 doc/doc_files/getmeshpolygoncount.html create mode 100644 doc/doc_files/getphysics3d.html create mode 100644 doc/doc_files/getposteffectproperty.html create mode 100644 doc/doc_files/getposteffecttype.html create mode 100644 doc/doc_files/getprojectoreffectactor.html create mode 100644 doc/doc_files/getprojectoreffectactorcount.html create mode 100644 doc/doc_files/getprojectortexture.html create mode 100644 doc/doc_files/getrotationtotarget.html create mode 100644 doc/doc_files/getspriteanimationsource.html create mode 100644 doc/doc_files/getspritechildindex.html create mode 100644 doc/doc_files/getspriteworldcenter.html create mode 100644 doc/doc_files/getvehicleaxis.html create mode 100644 doc/doc_files/getvehiclechassisworldtransform.html create mode 100644 doc/doc_files/getvehiclecurrentspeed.html create mode 100644 doc/doc_files/getvehicleforwardvector.html create mode 100644 doc/doc_files/getvehiclepitchcontrol.html create mode 100644 doc/doc_files/getwheelactoroffsettransform.html create mode 100644 doc/doc_files/getwheelaxel.html create mode 100644 doc/doc_files/getwheelbrake.html create mode 100644 doc/doc_files/getwheelconnectionpoint.html create mode 100644 doc/doc_files/getwheelcount.html create mode 100644 doc/doc_files/getwheeldampingcompression.html create mode 100644 doc/doc_files/getwheeldampingrelaxation.html create mode 100644 doc/doc_files/getwheeldirection.html create mode 100644 doc/doc_files/getwheelengineforce.html create mode 100644 doc/doc_files/getwheelfrictionslip.html create mode 100644 doc/doc_files/getwheelinversecontactsuspension.html create mode 100644 doc/doc_files/getwheelmaxsuspensiontravel.html create mode 100644 doc/doc_files/getwheelradius.html create mode 100644 doc/doc_files/getwheelrollinfluence.html create mode 100644 doc/doc_files/getwheelrotation.html create mode 100644 doc/doc_files/getwheelrotationdelta.html create mode 100644 doc/doc_files/getwheelsteeringvalue.html create mode 100644 doc/doc_files/getwheelsuspensionlength.html create mode 100644 doc/doc_files/getwheelsuspensionstiffness.html create mode 100644 doc/doc_files/getwheelsuspensionvelocity.html create mode 100644 doc/doc_files/getwheelworldtransform.html create mode 100644 doc/doc_files/graphics2.html create mode 100644 doc/doc_files/graphics3.html create mode 100755 doc/doc_files/images/banner.png create mode 100644 doc/doc_files/images/sprite_frames.aseprite create mode 100644 doc/doc_files/images/sprite_frames.png create mode 100644 doc/doc_files/interpolatevector.html create mode 100644 doc/doc_files/interpolatevectorq.html create mode 100644 doc/doc_files/makeplanartexturemap.html create mode 100644 doc/doc_files/matrixexists.html create mode 100644 doc/doc_files/normalizevector.html create mode 100644 doc/doc_files/pipeline_begin.html create mode 100644 doc/doc_files/pipeline_end.html create mode 100644 doc/doc_files/pipeline_render.html create mode 100644 doc/doc_files/posteffectisactive.html create mode 100644 doc/doc_files/recalculatecompositeaabb.html create mode 100644 doc/doc_files/recalculatemeshnormals.html create mode 100644 doc/doc_files/removecompositechild.html create mode 100644 doc/doc_files/removeprojectoreffectactor.html create mode 100644 doc/doc_files/removespritechild.html create mode 100644 doc/doc_files/resetvehiclesuspension.html create mode 100644 doc/doc_files/savebmp.html create mode 100644 doc/doc_files/setactorimpactmesh.html create mode 100644 doc/doc_files/setactorshapeex.html create mode 100644 doc/doc_files/setbillboardsize.html create mode 100644 doc/doc_files/setmeshbuffer.html create mode 100644 doc/doc_files/setphysics3d.html create mode 100644 doc/doc_files/setposteffect.html create mode 100644 doc/doc_files/setposteffectactive.html create mode 100644 doc/doc_files/setposteffectproperty.html create mode 100644 doc/doc_files/setprojectortexture.html create mode 100644 doc/doc_files/setrendercirclepoints.html create mode 100644 doc/doc_files/setspritelayerpriority.html create mode 100644 doc/doc_files/setvehiclepitchcontrol.html create mode 100644 doc/doc_files/setwheelactoroffsettransform.html create mode 100644 doc/doc_files/setwheelaxel.html create mode 100644 doc/doc_files/setwheelbrake.html create mode 100644 doc/doc_files/setwheelconnectionpoint.html create mode 100644 doc/doc_files/setwheeldampingcompression.html create mode 100644 doc/doc_files/setwheeldampingrelaxation.html create mode 100644 doc/doc_files/setwheeldirection.html create mode 100644 doc/doc_files/setwheelfrictionslip.html create mode 100644 doc/doc_files/setwheelinversecontactsuspension.html create mode 100644 doc/doc_files/setwheelmaxsuspensiontravel.html create mode 100644 doc/doc_files/setwheelradius.html create mode 100644 doc/doc_files/setwheelrollinfluence.html create mode 100644 doc/doc_files/setwheelrotation.html create mode 100644 doc/doc_files/setwheelsteeringvalue.html create mode 100644 doc/doc_files/setwheelsuspensionlength.html create mode 100644 doc/doc_files/setwheelsuspensionstiffness.html create mode 100644 doc/doc_files/setwheelsuspensionvelocity.html create mode 100644 doc/doc_files/sortspritelayer.html create mode 100644 doc/doc_files/stack_n_exists.html create mode 100644 doc/doc_files/stack_s_exists.html create mode 100644 doc/doc_files/updatecompositechildtransform.html create mode 100644 doc/doc_files/vectorisbetweenpoints.html create mode 100644 doc/doc_files/wheelisfront.html diff --git a/doc/doc_files/activefont.html b/doc/doc_files/activefont.html new file mode 100644 index 0000000..b95374b --- /dev/null +++ b/doc/doc_files/activefont.html @@ -0,0 +1,30 @@ + + + + + + ActiveFont [RCBasic Doc] + + + +

Function ActiveFont()

+

+ Returns the current font that will be used with DrawText +

+

+ test_font = LoadFont("test_font.ttf"12) 
+ SetFont(test_font) 
+ If ActiveFont() = test_font Then 
+ Print "Test Font is active" 
+ End If 
+

+

Related: + LoadFont + SetFont + DrawText +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/addcompositechild.html b/doc/doc_files/addcompositechild.html new file mode 100644 index 0000000..6f78325 --- /dev/null +++ b/doc/doc_files/addcompositechild.html @@ -0,0 +1,27 @@ + + + + + + AddCompositeChild [RCBasic Doc] + + + +

Function AddCompositeChild(actor, child_actor, t_matrix)

+

+ Adds a child Actor to a composite actor. +

+

+ Returns the child index in the composite actor. +

+

+ NOTE: Reference the included Composite Demo for an example +

+

Related: + CreateCompositeActor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/addprojectoreffectactor.html b/doc/doc_files/addprojectoreffectactor.html new file mode 100644 index 0000000..4cf5773 --- /dev/null +++ b/doc/doc_files/addprojectoreffectactor.html @@ -0,0 +1,27 @@ + + + + + + AddProjectorEffectActor [RCBasic Doc] + + + +

Function AddProjectorEffectActor(actor, tgt_actor)

+

+ Add an effect actor from a projector. +

+

+ Returns the index of the effect actor in the projector. +

+

+ Refer to the included Projector Demo for an example +

+

Related: + RemoveProjectorEffectActor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/addspritechild.html b/doc/doc_files/addspritechild.html new file mode 100644 index 0000000..8c0dff8 --- /dev/null +++ b/doc/doc_files/addspritechild.html @@ -0,0 +1,21 @@ + + + + + + AddSpriteChild [RCBasic Doc] + + + +

Function AddSpriteChild(sprite, child_sprite, x, y)

+

+ Adds a sprite as a child to another sprite. Child sprite is offset by given position. +

+

Related: + RemoveSpriteChild +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/addvehiclewheel.html b/doc/doc_files/addvehiclewheel.html new file mode 100644 index 0000000..240b93e --- /dev/null +++ b/doc/doc_files/addvehiclewheel.html @@ -0,0 +1,27 @@ + + + + + + AddVehicleWheel [RCBasic Doc] + + + +

Function AddVehicleWheel( actor, wheel_actor, is_front_wheel )

+

+ Add a wheel to a vehicle actor +

+

+ is_front_wheel sets whether it should be considered a front wheel for physics and control +

+

+ NOTE: Once an actor is set as a wheel, the vehicle controls all transforms for the actor +

+

Related: + CreateVehicleActor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/applywheelengineforce.html b/doc/doc_files/applywheelengineforce.html new file mode 100644 index 0000000..3dc970a --- /dev/null +++ b/doc/doc_files/applywheelengineforce.html @@ -0,0 +1,21 @@ + + + + + + ApplyWheelEngineForce [RCBasic Doc] + + + +

Sub ApplyWheelEngineForce( actor, wheel, force )

+

+ Apply force to a wheel. +

+

+ NOTE: For movement, you can apply force to a vehicle the same way you apply it to any actor. Refer to the actor physics section for documentation on that. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/calculatecompositeprincipaltransform.html b/doc/doc_files/calculatecompositeprincipaltransform.html new file mode 100644 index 0000000..7caf9fa --- /dev/null +++ b/doc/doc_files/calculatecompositeprincipaltransform.html @@ -0,0 +1,35 @@ + + + + + + CalculateCompositePrincipalTransform [RCBasic Doc] + + + +

Sub CalculateCompositePrincipalTransform(actor, ByRef masses, principal_matrix, ByRef x, ByRef y, ByRef z)

+

+ Calculates the center of mass and principal intertia axes for a composite actor. +

+

+ Parameters: +

+ +

Related: + CreateCompositeActor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/clearposteffect.html b/doc/doc_files/clearposteffect.html new file mode 100644 index 0000000..16dd4dc --- /dev/null +++ b/doc/doc_files/clearposteffect.html @@ -0,0 +1,18 @@ + + + + + + ClearPostEffect [RCBasic Doc] + + + +

Sub ClearPostEffect( c_num )

+

+ Removes the current post effect from the canvas. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/createcompositeactor.html b/doc/doc_files/createcompositeactor.html new file mode 100644 index 0000000..c3d6bf2 --- /dev/null +++ b/doc/doc_files/createcompositeactor.html @@ -0,0 +1,24 @@ + + + + + + CreateCompositeActor [RCBasic Doc] + + + +

Function CreateCompositeActor()

+

+ Creates a composite actor +

+

+ Refer to the included Composite Demo for an example +

+

Related: + AddCompositeChild +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/createvehicleactor.html b/doc/doc_files/createvehicleactor.html new file mode 100644 index 0000000..846bbcc --- /dev/null +++ b/doc/doc_files/createvehicleactor.html @@ -0,0 +1,21 @@ + + + + + + CreateVehicleActor [RCBasic Doc] + + + +

Function CreateVehicleActor( chassis_actor )

+

+ Creates a vehicle actor. The chassis_actor is another actor that will be attached as the main body of the vehicle. +

+

Related: + AddVehicleWheel +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/dotproduct.html b/doc/doc_files/dotproduct.html new file mode 100644 index 0000000..74ea766 --- /dev/null +++ b/doc/doc_files/dotproduct.html @@ -0,0 +1,18 @@ + + + + + + DotProduct [RCBasic Doc] + + + +

Function DotProduct(x1, y1, z1, x2, y2, z2)

+

+ Returns the dot product from 2 vectors +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/flipmeshsurfaces.html b/doc/doc_files/flipmeshsurfaces.html new file mode 100644 index 0000000..abfaf2d --- /dev/null +++ b/doc/doc_files/flipmeshsurfaces.html @@ -0,0 +1,18 @@ + + + + + + FlipMeshSurfaces [RCBasic Doc] + + + +

Sub FlipMeshSurfaces( mesh )

+

+ Changes the facing direction of triangles in a mesh +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/generatecompositeaabbfromchildren.html b/doc/doc_files/generatecompositeaabbfromchildren.html new file mode 100644 index 0000000..2e9ee4f --- /dev/null +++ b/doc/doc_files/generatecompositeaabbfromchildren.html @@ -0,0 +1,18 @@ + + + + + + GenerateCompositeAABBFromChildren [RCBasic Doc] + + + +

Sub GenerateCompositeAABBFromChildren(actor)

+

+ Generates a bounding box based on the child actors +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactorboneabsolutetranform.html b/doc/doc_files/getactorboneabsolutetranform.html new file mode 100644 index 0000000..6d1cae2 --- /dev/null +++ b/doc/doc_files/getactorboneabsolutetranform.html @@ -0,0 +1,21 @@ + + + + + + GetActorBoneAbsoluteTranform [RCBasic Doc] + + + +

Function GetActorBoneAbsoluteTranform( actor, bone_index, t_matrix )

+

+ Stores the absolute transform of a bone in t_matrix +

+

+ NOTE: This is only for actors that use skeletal animation (ie. *.b3d, *.x, *.ms3d, and actors created from Anim8or files) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactorbonecount.html b/doc/doc_files/getactorbonecount.html new file mode 100644 index 0000000..cb76cd0 --- /dev/null +++ b/doc/doc_files/getactorbonecount.html @@ -0,0 +1,21 @@ + + + + + + GetActorBoneCount [RCBasic Doc] + + + +

Function GetActorBoneCount( actor )

+

+ Returns the number of bones in an actor +

+

+ NOTE: This is only for actors that use skeletal animation (ie. *.b3d, *.x, *.ms3d, and actors created from Anim8or files) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactorboneindex.html b/doc/doc_files/getactorboneindex.html new file mode 100644 index 0000000..f4f19e6 --- /dev/null +++ b/doc/doc_files/getactorboneindex.html @@ -0,0 +1,21 @@ + + + + + + GetActorBoneIndex [RCBasic Doc] + + + +

Function GetActorBoneIndex( actor, bone_name$ )

+

+ Returns a bone index based on its name +

+

+ NOTE: This is only for actors that use skeletal animation (ie. *.b3d, *.x, *.ms3d, and actors created from Anim8or files) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactorbonename.html b/doc/doc_files/getactorbonename.html new file mode 100644 index 0000000..3b9c7e7 --- /dev/null +++ b/doc/doc_files/getactorbonename.html @@ -0,0 +1,21 @@ + + + + + + GetActorBoneName$ [RCBasic Doc] + + + +

Function GetActorBoneName$( actor, bone_index )

+

+ Returns an actor's bone name +

+

+ NOTE: This is only for actors that use skeletal animation (ie. *.b3d, *.x, *.ms3d, and actors created from Anim8or files) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactorboneposition.html b/doc/doc_files/getactorboneposition.html new file mode 100644 index 0000000..fbcac35 --- /dev/null +++ b/doc/doc_files/getactorboneposition.html @@ -0,0 +1,21 @@ + + + + + + GetActorBonePosition [RCBasic Doc] + + + +

Function GetActorBonePosition( actor, bone_index, ByRef x, ByRef y, ByRef z )

+

+ Gets an actor's bone position +

+

+ NOTE: This is only for actors that use skeletal animation (ie. *.b3d, *.x, *.ms3d, and actors created from Anim8or files) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactorbonerelativetranform.html b/doc/doc_files/getactorbonerelativetranform.html new file mode 100644 index 0000000..a0be9a2 --- /dev/null +++ b/doc/doc_files/getactorbonerelativetranform.html @@ -0,0 +1,21 @@ + + + + + + GetActorBoneRelativeTranform [RCBasic Doc] + + + +

Function GetActorBoneRelativeTranform( actor, bone_index, t_matrix )

+

+ Stores the local transform of a bone in t_matrix +

+

+ NOTE: This is only for actors that use skeletal animation (ie. *.b3d, *.x, *.ms3d, and actors created from Anim8or files) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactorbonerotation.html b/doc/doc_files/getactorbonerotation.html new file mode 100644 index 0000000..4880110 --- /dev/null +++ b/doc/doc_files/getactorbonerotation.html @@ -0,0 +1,21 @@ + + + + + + GetActorBoneRotation [RCBasic Doc] + + + +

Function GetActorBoneRotation( actor, bone_index, ByRef x, ByRef y, ByRef z )

+

+ Gets an actor's bone rotation +

+

+ NOTE: This is only for actors that use skeletal animation (ie. *.b3d, *.x, *.ms3d, and actors created from Anim8or files) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactorbonescale.html b/doc/doc_files/getactorbonescale.html new file mode 100644 index 0000000..cc42a80 --- /dev/null +++ b/doc/doc_files/getactorbonescale.html @@ -0,0 +1,21 @@ + + + + + + GetActorBoneScale [RCBasic Doc] + + + +

Function GetActorBoneScale( actor, bone_index, ByRef x, ByRef y, ByRef z )

+

+ Returns the scale transform for an actor's bone +

+

+ NOTE: This is only for actors that use skeletal animation (ie. *.b3d, *.x, *.ms3d, and actors created from Anim8or files) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getactortype.html b/doc/doc_files/getactortype.html new file mode 100644 index 0000000..10779b1 --- /dev/null +++ b/doc/doc_files/getactortype.html @@ -0,0 +1,62 @@ + + + + + + GetActorType [RCBasic Doc] + + + +

Function GetActorType( actor )

+

+ Returns an actor's type +

+

+ Actor Types +

+ +

+ NOTE: Cube and Sphere actors both return ACTOR_TYPE_PRIMITIVE +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getbillboardsize.html b/doc/doc_files/getbillboardsize.html new file mode 100644 index 0000000..6c70f75 --- /dev/null +++ b/doc/doc_files/getbillboardsize.html @@ -0,0 +1,18 @@ + + + + + + GetBillboardSize [RCBasic Doc] + + + +

Sub GetBillboardSize(actor, ByRef w, ByRef h)

+

+ Gets the width and height of a billboard. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getcompositeaabb.html b/doc/doc_files/getcompositeaabb.html new file mode 100644 index 0000000..dbde9d7 --- /dev/null +++ b/doc/doc_files/getcompositeaabb.html @@ -0,0 +1,21 @@ + + + + + + GetCompositeAABB [RCBasic Doc] + + + +

Function GetCompositeAABB(actor, t_matrix, ByRef min_x, ByRef min_y, ByRef min_z, ByRef max_x, ByRef max_y, ByRef max_z)

+

+ Returns the bounding box of a composite actor +

+

+ t_matrix will store the transform for the bounding box +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getcompositechild.html b/doc/doc_files/getcompositechild.html new file mode 100644 index 0000000..e2d288c --- /dev/null +++ b/doc/doc_files/getcompositechild.html @@ -0,0 +1,18 @@ + + + + + + GetCompositeChild [RCBasic Doc] + + + +

Function GetCompositeChild(actor, child_index)

+

+ Returns the actor stored as the child actor at a given index in a composite actor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getcompositechildcount.html b/doc/doc_files/getcompositechildcount.html new file mode 100644 index 0000000..afaef77 --- /dev/null +++ b/doc/doc_files/getcompositechildcount.html @@ -0,0 +1,18 @@ + + + + + + GetCompositeChildCount [RCBasic Doc] + + + +

Function GetCompositeChildCount(actor)

+

+ Returns the number of child actors in a composite actor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getcompositechildindex.html b/doc/doc_files/getcompositechildindex.html new file mode 100644 index 0000000..4647744 --- /dev/null +++ b/doc/doc_files/getcompositechildindex.html @@ -0,0 +1,18 @@ + + + + + + GetCompositeChildIndex [RCBasic Doc] + + + +

Function GetCompositeChildIndex(actor, child_actor)

+

+ Returns the index an actor is stored at in a composite actor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getcompositechildtransform.html b/doc/doc_files/getcompositechildtransform.html new file mode 100644 index 0000000..0102850 --- /dev/null +++ b/doc/doc_files/getcompositechildtransform.html @@ -0,0 +1,18 @@ + + + + + + GetCompositeChildTransform [RCBasic Doc] + + + +

Function GetCompositeChildTransform(actor, child_index, t_matrix)

+

+ Stores the transform from composite actor to the child index shape in t_matrix +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getcompositeupdaterevision.html b/doc/doc_files/getcompositeupdaterevision.html new file mode 100644 index 0000000..2b40c22 --- /dev/null +++ b/doc/doc_files/getcompositeupdaterevision.html @@ -0,0 +1,18 @@ + + + + + + GetCompositeUpdateRevision [RCBasic Doc] + + + +

Function GetCompositeUpdateRevision(actor)

+

+ Returns a counter that increments when the composite actor shape is modifed +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/gethorizontalangle.html b/doc/doc_files/gethorizontalangle.html new file mode 100644 index 0000000..7c22a2f --- /dev/null +++ b/doc/doc_files/gethorizontalangle.html @@ -0,0 +1,18 @@ + + + + + + GetHorizontalAngle [RCBasic Doc] + + + +

Sub GetHorizontalAngle(x, y, z, ByRef hx, ByRef hy, ByRef hz)

+

+ Get the rotation vector that would make a (0,0,1) direction vector point in the same direction as the given direction vector +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getlineangle.html b/doc/doc_files/getlineangle.html new file mode 100644 index 0000000..27bad07 --- /dev/null +++ b/doc/doc_files/getlineangle.html @@ -0,0 +1,18 @@ + + + + + + GetLineAngle [RCBasic Doc] + + + +

Function GetLineAngle(x1, y1, x2, y2)

+

+ Gets an angle between 2 points +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getmeshbuffer.html b/doc/doc_files/getmeshbuffer.html new file mode 100644 index 0000000..68e619a --- /dev/null +++ b/doc/doc_files/getmeshbuffer.html @@ -0,0 +1,21 @@ + + + + + + GetMeshBuffer [RCBasic Doc] + + + +

Function GetMeshBuffer( mesh_id, buffer_index, ByRef vertex_data, ByRef normal_data, ByRef uv_data, ByRef index_data )

+

+ Gets the data in a mesh buffer. +

+

+ Returns TRUE if successful and FALSE if not. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getmeshbuffercount.html b/doc/doc_files/getmeshbuffercount.html new file mode 100644 index 0000000..fc5c260 --- /dev/null +++ b/doc/doc_files/getmeshbuffercount.html @@ -0,0 +1,18 @@ + + + + + + GetMeshBufferCount [RCBasic Doc] + + + +

Function GetMeshBufferCount( mesh_id )

+

+ Returns the number of mesh buffers in a mesh. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getmeshbufferindexcount.html b/doc/doc_files/getmeshbufferindexcount.html new file mode 100644 index 0000000..1af6c5d --- /dev/null +++ b/doc/doc_files/getmeshbufferindexcount.html @@ -0,0 +1,18 @@ + + + + + + GetMeshBufferIndexCount [RCBasic Doc] + + + +

Function GetMeshBufferIndexCount( mesh_id, buffer_index )

+

+ Returns the number of indices in a mesh buffer +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getmeshbuffervertexcount.html b/doc/doc_files/getmeshbuffervertexcount.html new file mode 100644 index 0000000..6415bea --- /dev/null +++ b/doc/doc_files/getmeshbuffervertexcount.html @@ -0,0 +1,18 @@ + + + + + + GetMeshBufferVertexCount [RCBasic Doc] + + + +

Function GetMeshBufferVertexCount( mesh_id, buffer_index )

+

+ Returns the number of vertices in a mesh buffer. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getmeshpolygoncount.html b/doc/doc_files/getmeshpolygoncount.html new file mode 100644 index 0000000..bf6741a --- /dev/null +++ b/doc/doc_files/getmeshpolygoncount.html @@ -0,0 +1,18 @@ + + + + + + GetMeshPolygonCount [RCBasic Doc] + + + +

Function GetMeshPolygonCount( mesh )

+

+ Returns the number of polygons in a mesh +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getphysics3d.html b/doc/doc_files/getphysics3d.html new file mode 100644 index 0000000..62d087c --- /dev/null +++ b/doc/doc_files/getphysics3d.html @@ -0,0 +1,24 @@ + + + + + + GetPhysics3D [RCBasic Doc] + + + +

Function GetPhysics3D( )

+

+ Return if the physics engine is enabled +

+

+ NOTE: While the physics engine is disabled, actor collisions won't be able to be checked. +

+

Related: + SetPhysics3D +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getposteffectproperty.html b/doc/doc_files/getposteffectproperty.html new file mode 100644 index 0000000..6737d7a --- /dev/null +++ b/doc/doc_files/getposteffectproperty.html @@ -0,0 +1,18 @@ + + + + + + GetPostEffectProperty [RCBasic Doc] + + + +

Function GetPostEffectProperty( c_num, property)

+

+ Returns the value of the property on the current canvas post effect. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getposteffecttype.html b/doc/doc_files/getposteffecttype.html new file mode 100644 index 0000000..1e51454 --- /dev/null +++ b/doc/doc_files/getposteffecttype.html @@ -0,0 +1,44 @@ + + + + + + GetPostEffectType [RCBasic Doc] + + + +

Function GetPostEffectType( c_num )

+

+ Returns the type of post effect set on the given canvas. +

+

+ Possible Effect Types +

+ +

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getprojectoreffectactor.html b/doc/doc_files/getprojectoreffectactor.html new file mode 100644 index 0000000..f823da1 --- /dev/null +++ b/doc/doc_files/getprojectoreffectactor.html @@ -0,0 +1,24 @@ + + + + + + GetProjectorEffectActor [RCBasic Doc] + + + +

Function GetProjectorEffectActor(actor, tgt_index)

+

+ Returns the effect actor at tgt_index in a projector +

+

+ Refer to the included Projector Demo for an example +

+

Related: + AddProjectorEffectActor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getprojectoreffectactorcount.html b/doc/doc_files/getprojectoreffectactorcount.html new file mode 100644 index 0000000..c8490bb --- /dev/null +++ b/doc/doc_files/getprojectoreffectactorcount.html @@ -0,0 +1,18 @@ + + + + + + GetProjectorEffectActorCount [RCBasic Doc] + + + +

Function GetProjectorEffectActorCount(actor)

+

+ Returns the number of effect actors on a projector +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getprojectortexture.html b/doc/doc_files/getprojectortexture.html new file mode 100644 index 0000000..702c794 --- /dev/null +++ b/doc/doc_files/getprojectortexture.html @@ -0,0 +1,21 @@ + + + + + + GetProjectorTexture [RCBasic Doc] + + + +

Function GetProjectorTexture(actor)

+

+ Returns the image currently being projected by the projector +

+

Related: + SetProjectorTexture +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getrotationtotarget.html b/doc/doc_files/getrotationtotarget.html new file mode 100644 index 0000000..cba75fd --- /dev/null +++ b/doc/doc_files/getrotationtotarget.html @@ -0,0 +1,18 @@ + + + + + + GetRotationToTarget [RCBasic Doc] + + + +

Sub GetRotationToTarget(x, y, z, tgt_x, tgt_y, tgt_z, ByRef rx, ByRef ry, ByRef rz)

+

+ Gets a rotation vector to a target from an origin point +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getspriteanimationsource.html b/doc/doc_files/getspriteanimationsource.html new file mode 100644 index 0000000..658a666 --- /dev/null +++ b/doc/doc_files/getspriteanimationsource.html @@ -0,0 +1,18 @@ + + + + + + GetSpriteAnimationSource [RCBasic Doc] + + + +

Function GetSpriteAnimationSource(sprite, animation)

+

+ Returns the image associated with the given sprite animation. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getspritechildindex.html b/doc/doc_files/getspritechildindex.html new file mode 100644 index 0000000..093dc5f --- /dev/null +++ b/doc/doc_files/getspritechildindex.html @@ -0,0 +1,21 @@ + + + + + + GetSpriteChildIndex [RCBasic Doc] + + + +

Function GetSpriteChildIndex(sprite, child_sprite)

+

+ Returns the index a child_sprite is stored at in a parent sprite +

+

+ Returns -1 if child_sprite is not a child of sprite +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getspriteworldcenter.html b/doc/doc_files/getspriteworldcenter.html new file mode 100644 index 0000000..2d63cfd --- /dev/null +++ b/doc/doc_files/getspriteworldcenter.html @@ -0,0 +1,18 @@ + + + + + + GetSpriteWorldCenter [RCBasic Doc] + + + +

Sub GetSpriteWorldCenter( spr_id, ByRef x, ByRef y )

+

+ Gets the center of a sprite's shape as world coordinates. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getvehicleaxis.html b/doc/doc_files/getvehicleaxis.html new file mode 100644 index 0000000..4767e5b --- /dev/null +++ b/doc/doc_files/getvehicleaxis.html @@ -0,0 +1,29 @@ + + + + + + GetVehicleAxis [RCBasic Doc] + + + +

Sub GetVehicleAxis( actor, ByRef x, ByRef y, ByRef z )

+

+ Gets the axis used to define a vehicles orientation. +

+ + + + + +
DirectionAxisMeaning
XRight AxisWheel axle direction
YUp AxisSuspension direction
ZForward AxisDriving direction
+

Related: + SetWheelAxel + SetSuspensionLength + SetWheelDirection +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getvehiclechassisworldtransform.html b/doc/doc_files/getvehiclechassisworldtransform.html new file mode 100644 index 0000000..da4c808 --- /dev/null +++ b/doc/doc_files/getvehiclechassisworldtransform.html @@ -0,0 +1,18 @@ + + + + + + GetVehicleChassisWorldTransform [RCBasic Doc] + + + +

Sub GetVehicleChassisWorldTransform( actor, t_matrix )

+

+ Stores the world transform of the chassis actor in a vehicle +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getvehiclecurrentspeed.html b/doc/doc_files/getvehiclecurrentspeed.html new file mode 100644 index 0000000..55eaacf --- /dev/null +++ b/doc/doc_files/getvehiclecurrentspeed.html @@ -0,0 +1,18 @@ + + + + + + GetVehicleCurrentSpeed [RCBasic Doc] + + + +

Function GetVehicleCurrentSpeed( actor )

+

+ Returns the current speed set on the vehicle +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getvehicleforwardvector.html b/doc/doc_files/getvehicleforwardvector.html new file mode 100644 index 0000000..9d90487 --- /dev/null +++ b/doc/doc_files/getvehicleforwardvector.html @@ -0,0 +1,18 @@ + + + + + + GetVehicleForwardVector [RCBasic Doc] + + + +

Sub GetVehicleForwardVector( actor, ByRef x, ByRef y, ByRef z )

+

+ Gets the forward vector of a vehicle +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getvehiclepitchcontrol.html b/doc/doc_files/getvehiclepitchcontrol.html new file mode 100644 index 0000000..28e9658 --- /dev/null +++ b/doc/doc_files/getvehiclepitchcontrol.html @@ -0,0 +1,21 @@ + + + + + + GetVehiclePitchControl [RCBasic Doc] + + + +

Function GetVehiclePitchControl( actor )

+

+ Returns the pitch control for a vehicle +

+

Related: + SetVehiclePitchControl +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelactoroffsettransform.html b/doc/doc_files/getwheelactoroffsettransform.html new file mode 100644 index 0000000..af6f253 --- /dev/null +++ b/doc/doc_files/getwheelactoroffsettransform.html @@ -0,0 +1,27 @@ + + + + + + GetWheelActorOffsetTransform [RCBasic Doc] + + + +

Sub GetWheelActorOffsetTransform( actor, wheel, t_matrix )

+

+ Stores the local offset transform for the wheel actor in t_matrix. +

+

+ This is mainly for when the actors local transform does not line up with the axis for the vehicle. +

+

+ Refer to the Vehicle demo to see an example of this. +

+

Related: + SetWheelActorOffsetTransform +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelaxel.html b/doc/doc_files/getwheelaxel.html new file mode 100644 index 0000000..9a787d6 --- /dev/null +++ b/doc/doc_files/getwheelaxel.html @@ -0,0 +1,21 @@ + + + + + + GetWheelAxel [RCBasic Doc] + + + +

Sub GetWheelAxel( actor, wheel, ByRef x, ByRef y, ByRef z )

+

+ Get the axel direction of a wheel on a vehicle +

+

Related: + SetWheelAxel +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelbrake.html b/doc/doc_files/getwheelbrake.html new file mode 100644 index 0000000..de6c81c --- /dev/null +++ b/doc/doc_files/getwheelbrake.html @@ -0,0 +1,21 @@ + + + + + + GetWheelBrake [RCBasic Doc] + + + +

Function GetWheelBrake( actor, wheel )

+

+ Returns the brake value of a wheel on a vehicle +

+

Related: + SetWheelBrake +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelconnectionpoint.html b/doc/doc_files/getwheelconnectionpoint.html new file mode 100644 index 0000000..4d2f545 --- /dev/null +++ b/doc/doc_files/getwheelconnectionpoint.html @@ -0,0 +1,21 @@ + + + + + + GetWheelConnectionPoint [RCBasic Doc] + + + +

Sub GetWheelConnectionPoint( actor, wheel, ByRef x, ByRef y, ByRef z)

+

+ Gets the point in local space that a wheel is connected to a vehicle at +

+

Related: + SetWheelConnectionPoint +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelcount.html b/doc/doc_files/getwheelcount.html new file mode 100644 index 0000000..d29cd7f --- /dev/null +++ b/doc/doc_files/getwheelcount.html @@ -0,0 +1,21 @@ + + + + + + GetWheelCount [RCBasic Doc] + + + +

Function GetWheelCount( actor )

+

+ Returns the number of wheels on a vehicle +

+

Related: + AddVehicleWheel +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheeldampingcompression.html b/doc/doc_files/getwheeldampingcompression.html new file mode 100644 index 0000000..a4652c6 --- /dev/null +++ b/doc/doc_files/getwheeldampingcompression.html @@ -0,0 +1,22 @@ + + + + + + GetWheelDampingCompression [RCBasic Doc] + + + +

Function GetWheelDampingCompression( actor, wheel )

+

+ Returns the damping compression of a wheel +

+

Related: + GetWheelDampingRelaxation + SetWheelDampingCompression +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheeldampingrelaxation.html b/doc/doc_files/getwheeldampingrelaxation.html new file mode 100644 index 0000000..1c3489f --- /dev/null +++ b/doc/doc_files/getwheeldampingrelaxation.html @@ -0,0 +1,22 @@ + + + + + + GetWheelDampingRelaxation [RCBasic Doc] + + + +

Function GetWheelDampingRelaxation( actor, wheel )

+

+ Returns the damping relaxation of a wheel +

+

Related: + GetWheelDampingCompression + SetWheelDampingRelaxation +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheeldirection.html b/doc/doc_files/getwheeldirection.html new file mode 100644 index 0000000..87218a2 --- /dev/null +++ b/doc/doc_files/getwheeldirection.html @@ -0,0 +1,18 @@ + + + + + + GetWheelDirection [RCBasic Doc] + + + +

Sub GetWheelDirection( actor, wheel, ByRef x, ByRef y, ByRef z )

+

+ Gets the direction of a wheel on a vehicle +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelengineforce.html b/doc/doc_files/getwheelengineforce.html new file mode 100644 index 0000000..1ece551 --- /dev/null +++ b/doc/doc_files/getwheelengineforce.html @@ -0,0 +1,21 @@ + + + + + + GetWheelEngineForce [RCBasic Doc] + + + +

Function GetWheelEngineForce( actor, wheel )

+

+ Returns the engine force currently applied to a wheel +

+

Related: + SetWheelEngineForce +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelfrictionslip.html b/doc/doc_files/getwheelfrictionslip.html new file mode 100644 index 0000000..aa0f0df --- /dev/null +++ b/doc/doc_files/getwheelfrictionslip.html @@ -0,0 +1,21 @@ + + + + + + GetWheelFrictionSlip [RCBasic Doc] + + + +

Function GetWheelFrictionSlip( actor, wheel )

+

+ Returns the friction slip of a wheel +

+

Related: + SetWheelFrictionSlip +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelinversecontactsuspension.html b/doc/doc_files/getwheelinversecontactsuspension.html new file mode 100644 index 0000000..6daa3b0 --- /dev/null +++ b/doc/doc_files/getwheelinversecontactsuspension.html @@ -0,0 +1,27 @@ + + + + + + GetWheelInverseContactSuspension [RCBasic Doc] + + + +

Function GetWheelInverseContactSuspension( actor, wheel )

+

+ Returns the clipped inverse contact dot suspension. +

+

+ This value is a stability factor used to adjust suspension force when the ground contact surface is tilted. +

+

+ It prevents suspension forces from exploding when the wheel contacts steep surfaces. +

+

Related: + SetWheelInverseContactSuspension +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelmaxsuspensiontravel.html b/doc/doc_files/getwheelmaxsuspensiontravel.html new file mode 100644 index 0000000..51e1082 --- /dev/null +++ b/doc/doc_files/getwheelmaxsuspensiontravel.html @@ -0,0 +1,24 @@ + + + + + + GetWheelMaxSuspensionTravel [RCBasic Doc] + + + +

Function GetWheelMaxSuspensionTravel( actor, wheel )

+

+ Returns the max suspension travel distance. +

+

+ This value is the maximum distance the suspension is allowed to extend or compress from its rest length set with SetSuspensionLength(). +

+

Related: + SetWheelMaxSuspension +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelradius.html b/doc/doc_files/getwheelradius.html new file mode 100644 index 0000000..f7a2932 --- /dev/null +++ b/doc/doc_files/getwheelradius.html @@ -0,0 +1,21 @@ + + + + + + GetWheelRadius [RCBasic Doc] + + + +

Function GetWheelRadius( actor, wheel )

+

+ You will never guess what this returns +

+

Related: + SetWheelRadius +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelrollinfluence.html b/doc/doc_files/getwheelrollinfluence.html new file mode 100644 index 0000000..1a41e8e --- /dev/null +++ b/doc/doc_files/getwheelrollinfluence.html @@ -0,0 +1,27 @@ + + + + + + GetWheelRollInfluence [RCBasic Doc] + + + +

Function GetWheelRollInfluence( actor, wheel )

+

+ Returns the roll_influence for a wheel. +

+

+ Roll influence controls how much a wheel’s suspension force contributes to the vehicle’s body roll (sideways tipping). +

+

+ It’s essentially a stability scaling factor. +

+

Related: + SetWheelRollInfluence +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelrotation.html b/doc/doc_files/getwheelrotation.html new file mode 100644 index 0000000..6a431d9 --- /dev/null +++ b/doc/doc_files/getwheelrotation.html @@ -0,0 +1,21 @@ + + + + + + GetWheelRotation [RCBasic Doc] + + + +

Function GetWheelRotation( actor, wheel )

+

+ Returns a wheel's spin rotation. +

+

Related: + SetWheelRotation +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelrotationdelta.html b/doc/doc_files/getwheelrotationdelta.html new file mode 100644 index 0000000..fc348c9 --- /dev/null +++ b/doc/doc_files/getwheelrotationdelta.html @@ -0,0 +1,21 @@ + + + + + + GetWheelRotationDelta [RCBasic Doc] + + + +

Function GetWheelRotationDelta( actor, wheel )

+

+ Returns how much the wheels spin angle changed since the last frame. +

+

Related: + SetWheelRotationDelta +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelsteeringvalue.html b/doc/doc_files/getwheelsteeringvalue.html new file mode 100644 index 0000000..bf2901c --- /dev/null +++ b/doc/doc_files/getwheelsteeringvalue.html @@ -0,0 +1,21 @@ + + + + + + GetWheelSteeringValue [RCBasic Doc] + + + +

Function GetWheelSteeringValue( actor, wheel )

+

+ Returns the steering value for a wheel +

+

Related: + SetWheelSteeringValue +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelsuspensionlength.html b/doc/doc_files/getwheelsuspensionlength.html new file mode 100644 index 0000000..7e6cdc9 --- /dev/null +++ b/doc/doc_files/getwheelsuspensionlength.html @@ -0,0 +1,21 @@ + + + + + + GetWheelSuspensionLength [RCBasic Doc] + + + +

Function GetWheelSuspensionLength( actor, wheel )

+

+ Returns the suspsension rest length of a wheel +

+

Related: + SetWheelSuspensionLength +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelsuspensionstiffness.html b/doc/doc_files/getwheelsuspensionstiffness.html new file mode 100644 index 0000000..9f2ac2a --- /dev/null +++ b/doc/doc_files/getwheelsuspensionstiffness.html @@ -0,0 +1,29 @@ + + + + + + GetWheelSuspensionStiffness [RCBasic Doc] + + + +

Function GetWheelSuspensionStiffness( actor, wheel )

+

+ Returns the suspension stiffness of a wheel. +

+ +

Related: + SetWheelSuspensionStiffness +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelsuspensionvelocity.html b/doc/doc_files/getwheelsuspensionvelocity.html new file mode 100644 index 0000000..129e2bd --- /dev/null +++ b/doc/doc_files/getwheelsuspensionvelocity.html @@ -0,0 +1,24 @@ + + + + + + GetWheelSuspensionVelocity [RCBasic Doc] + + + +

Function GetWheelSuspensionVelocity( actor, wheel )

+

+ Returns the suspension velocity. +

+

+ This value is the speed that the suspension compresses or extends at. +

+

Related: + SetWheelSuspensionVelocity +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/getwheelworldtransform.html b/doc/doc_files/getwheelworldtransform.html new file mode 100644 index 0000000..1f27e96 --- /dev/null +++ b/doc/doc_files/getwheelworldtransform.html @@ -0,0 +1,24 @@ + + + + + + GetWheelWorldTransform [RCBasic Doc] + + + +

Sub GetWheelWorldTransform( actor, wheel, t_matrix )

+

+ Returns the world transform of a wheel on a vehicle. +

+

+ NOTE: This will not be the world tranform of the actor if an offset transform has been set. In that case you will need to multiply the offset by the world transform. +

+

Related: + SetWheelWorldTransform +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/graphics2.html b/doc/doc_files/graphics2.html new file mode 100644 index 0000000..0dccc58 --- /dev/null +++ b/doc/doc_files/graphics2.html @@ -0,0 +1,170 @@ + + + + + + RCBasic Sprites [RCBasic Doc] + + + +

SPRITES

+

+ The last section was a basic overview of graphics so in this section, I am going to go more indepth on sprites. In RCBasic, sprites are 2D objects with animation and physics properties. Sprite physics and animations are updated each time Update() is called. +

+

+ To create a sprite, you must have a sprite canvas as your active canvas. Here is a quick explanation of how to open a new sprite canvas. +

+

+ pos_x = 0 
+ pos_y = 0 
+ viewport_width = 640 
+ viewport_height = 480 
+   
+ sprite_canvas = OpenCanvasSpriteLayer(pos_x, pos_y, viewport_width, viewport_height) 
+

+

+ Sprite canvases are opened with OpenCanvasSpriteLayer(). You only need to pass the position in the window where the viewport starts at and the size of the viewport. Sprite canvases don't have a fixed size since it only renders the part of the canvas that is visible. +

+

+ Once you have opened a sprite canvas, use the Canvas() function to set the sprite canvas as active. +

+

+ Canvas(sprite_canvas) 
+

+

+ Now you are ready to create a sprite. To create a sprite, normally you would need a sprite sheet. The sprite sheet is a image file that contains all the animations for your sprite. +

+

+ spriteSheet = LoadImage("graizor.png") 
+   
+ frame_width = 32 
+ frame_height = 32 
+   
+ mySprite = CreateSprite(spriteSheet, frame_width, frame_height) 
+

+

+ Sprites are created with the CreateSprite() function. Sprites have a default animation that is 1 frame in length and set as the first frame in the sprite sheet. The frames in a sprite sheet start at 0 and increase going from left to right and continue incrementing down each row. So if each row as 4 frames then the first row would have frames 0 to 3 and the second row would start at 4 and continue until the end of the last row. +

+

+

+ To animate our sprite, we have to create an animation for it. You can create an animation with the CreateSpriteAnimation() function. +

+

+ walk_left_animation = CreateSpriteAnimation(mySprite, 412) 
+ SetSpriteAnimationFrame(mySprite, walk_left_animation, 028) 
+ SetSpriteAnimationFrame(mySprite, walk_left_animation, 129) 
+ SetSpriteAnimationFrame(mySprite, walk_left_animation, 230) 
+ SetSpriteAnimationFrame(mySprite, walk_left_animation, 331) 
+

+

+ CreateSpriteAnimation() takes 3 parameters +

+ +

+ SetSpriteAnimationFrame() takes 4 parameters +

+ +

+ Now to play the animation, we just set the animation on the sprite. +

+

+ SetSpriteAnimation(mySprite, walk_left_animation, -1) 
+

+

+ SetSpriteAnimation() takes the sprite, the animation, and the last parameter is the number of times to loop the animation. Setting it to a value less than 0 will cause it to loop infinitely. +

+

+ Thats the basics of sprite animation. Next lets go over sprite physics. By default, a sprite is non-solid which means it won't collide with anything. To change our sprite to solid, we just call the SetSpriteSolid() function. +

+

+ SetSpriteSolid(mySprite, TRUE) 
+

+

+ To have the sprite fall, we need to set gravity for our sprite canvas. We do that with SetGravity2D(). +

+

+ SetGravity2D(030) 
+

+

+ SetGravity2D() takes an x and y value for the direction gravity pulls in. We just want gravity pulling down on our sprite. This would have our sprite falling forever since there is no ground for the sprite to collide with. So we need to create another sprite for the ground. +

+

+ ground = CreateSprite(-1640100) 
+ SetSpriteSolid(ground, TRUE) 
+ SetSpritePosition(ground, 0380) 
+ SetSpriteType(ground, SPRITE_TYPE_STATIC) 
+

+

+ There is a few things to go over with how the ground was created. First, we use -1 instead of an image for the ground. If you use a value less than 0 when creating a sprite, it will just create a physics object without any animation. This works well for a ground since we can draw an image on a paint canvas or draw a tile map. +

+

+ On the next 2 lines we are setting the ground as solid and setting the grounds position to the bottom of our screen. +

+

+ The last line is setting the ground sprite as static. This sets the ground as an unmovable object. +

+

+ Since the ground does not have an image associated with it, we can just open a paint canvas over the sprite layer and draw a rectangle covering the area where our ground physics object is. +

+

+ paint_canvas = OpenCanvas(640480006404801) 
+ SetCanvasZ(paint_canvas, 1) 
+

+

+ We use OpenCanvas() from the last section to open a paint canvas here. Setting the last parameter in OpenCanvas() to 1 will make the canvas background clear so we can see the sprite canvas behind it. +

+

+ SetCanvasZ() changes the render order for the canvas. Canvases with a higher Z order are drawn on top of canvases with lower Z order. Now we can switch to the paint canvas to draw a rectangle using the functions from the last section. +

+

+ SetColor( RGB(20000) )  'Sets the drawing color to red
+ RectFill(0380640100)    'Draws a filled rectangle with the current draw color
+

+

+ We are drawing our rectangle at the location where we positioned our ground sprite above with the size that we made our ground sprite object. That will make our sprite ground visible for us to land on. +

+

+ The last thing we will do is make our sprite move when we press a key. +

+

+ If Key(K_RIGHT) Then 
+ SetSpriteLinearVelocity(mySprite, 300) 
+ End If 
+

+

+ Key() returns true if the key code parameter is pressed. You can see a list of all the key codes in the Key Codes section in the Appendix. +

+

+ We use SetSpriteLinearVelocity() to move the sprite instead of SetSpritePosition() because we don't want to directly move a sprite that we want physics to be applied to. There are a few functions for applying forces to a sprite that you can find under the Sprite Physics section in the manual. +

+

+ And that is it for our simple overview of sprites. To see a full working example of the concepts covered here, try out the Sprite Test example in the examples folder. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/graphics3.html b/doc/doc_files/graphics3.html new file mode 100644 index 0000000..502db35 --- /dev/null +++ b/doc/doc_files/graphics3.html @@ -0,0 +1,180 @@ + + + + + + RCBasic Sprites [RCBasic Doc] + + + +

3D Graphics

+

+ This last section will cover how 3D graphics work in RCBasic. We can render the scene with a 3D canvas which is opened with OpenCanvas3D() +

+

+ viewport_width = 640 
+ viewport_height = 480 
+ scene_canvas = OpenCanvas3D(00, viewport_width, viewport_height, 1) 
+

+

+ OpenCanvas3D takes some of the same parameters as OpenCanvas. It will open a canvas to view the 3D scene. You can open multiple 3D canvases to view the 3D scene from different camera angles but there is only one 3D scene. +

+

+ Next, lets go over actors. Actors are objects in our 3D scene and similiar to what sprites are on a sprite canvas. There are different types of actors that we can create and each one serves a different purpose. For now lets just create an animated actor. +

+

+ hero_mesh = LoadMesh("char.ms3d")       ' Load a 3D model from a file
+ hero = CreateAnimatedActor(hero_mesh)   ' Create an animated object in our scene from the 3D model
+

+

+ We use LoadMesh() to load a 3D model into our program. If we want to make multiple actors in our scene from this 3D model, we only need to load the model once. +

+

+ After we load the model, we use CreateAnimatedActor() to create an object in our scene using the 3D model. Animated actors function like 3D version of sprites since they have animation and physics. Adding animation to our animated actor is a similiar process to adding animation to our sprite from the last section. +

+

+ RUN_ANIMATION = CreateActorAnimation(hero, 133630) 
+

+

+ CreateActorAnimation() takes 4 parameters. +

+ +

+ Now that we have an animation, we can set the actor's animation in the same way we set the sprite's animation in the last section. +

+

+ SetActorAnimation(hero, RUN_ANIMATION, -1) 
+

+

+ SetActorAnimation() works the same way that SetSpriteAnimation() does. It takes the actor, the animation, and number of animation loops. We can set it to a value less than 0 to loop infinitely just like we did with our sprite in the last section. +

+

+ Currently, the actor will not have any color. We need to add a texture to the actor. We will also disable lighting for the actor for now so that it just renders with the texture applied. +

+

+ hero_material = GetActorMaterial(hero, 0) 
+   
+ SetMaterialLighting(hero_material, FALSE) 
+   
+ hero_texture = LoadImage("hero.png") 
+ SetMaterialTexture(hero_material, 0, hero_texture) 
+

+

+ First, we get a reference to our actors material with GetActorMaterial(). We use this reference to set properties for the actor's material. The material determines how the actor is rendered. +

+

+ Next, we disable lighting for the material. This means that lighting will not determine how light or dark the texture will be rendered at. +

+

+ Finally, we load an image and set it to the first texture slot on the material with SetMaterialTexture(). +

+

+ This now puts our actor in our scene with our texture applied. But just like in the sprite section, our actor needs to have physics applied to it. So lets make the actor solid and set our scene gravity. +

+

+ SetActorSolid(cube, TRUE) 
+ SetGravity3D(0, -100) 
+

+

+ SetActorSolid() functions just like SetSpriteSolid() does. SetGravity3D() is like SetGravity2D() but it adds a 3rd dimension to it. +

+

+ Now we need a ground plane. Lets create a plane mesh and then create an octree actor from it to serve as our ground. Octree actors are actors with meshes that have optimizations for large scenes. +

+

+ plane_mesh = CreatePlaneMesh(10001000100100100100) 
+ plane = CreateOctreeActor(plane_mesh) 
+

+

+ CreatePlaneMesh() is used to create a plane mesh rather than use LoadMesh() to load it from an external file like we did earlier. +

+

+ CreateOctreeActor() will create an octree actor rather than an animated actor. +

+

+ Next we will set a solid color material for our plane rather than load another texture. +

+

+ plane_material = CreateMaterial() 
+ SetMaterialType(plane_material, FX_MATERIAL_TYPE_PLASTIC) 
+ SetActorMaterial(plane, 0, plane_material) 
+

+

+ We are using an FX material here which is a special type of material with separate properties from a normal material. This time we had to use CreateMaterial() to make a new material. To make FX materials, you must create a new material since you can not set any of the FX material types on a material attached to an actor. +

+

+ Then we just set our material type with SetMaterialType() and set the material on the actor with SetActorMaterial(). +

+

+ Now lets set our physics properties for our plane. +

+

+ SetActorSolid(plane, TRUE) 
+ SetActorShape(plane, ACTOR_SHAPE_TRIMESH, 0) 
+

+

+ Yet again, we are using SetActorSolid() to set our actor solid. We use SetActorShape() to change the shape of the plane to ACTOR_SHAPE_TRIMESH. By default, actors shapes are ACTOR_SHAPE_BOX. Boxes are fine for our actor's hit box but we want a shape with more geometry for our ground usually. +

+

+ Just like what we did with our sprites in the last lesson, lets have the actor move when a key is pressed. +

+

+ If Key(K_RIGHT) Then 
+ SetActorLinearVelocityLocal(hero, 0020) 
+ End If 
+

+

+ This looks very similiar to our code for moving the sprite in the last lesson. SetActorLinearVelocityLocal() has a little bit longer name. It has a companion function called SetActorLinearVelocityWorld() which applies a transform based on world instead of local space. +

+

+ Before moving on, I want to quickly explain the difference between local transforms and world transforms. +

+ +

+ Before ending this lesson, lets do a quick overview of how to set the camera. Each 3D canvas has its own camera. To set the camera for a 3D canvas you must make sure you set the 3D canvas active with Canvas(). +

+

+ Canvas(scene_canvas) 
+   
+ SetCameraPosition(030, -100)  'Set the camera position
+ SetCameraRotation(2000)     'Set the camera rotation
+

+

+ SetCameraPosition() and SetCameraRotation() do exactly what you think they do. There are also other functions to set camera FOV(field of view), aspect ratio, etc. Look in the camera section for more info. +

+

+ Refer to the Intro to 3D demo for the complete code for this lesson. +

+

+ RCBasic has several functions for graphics, physics, etc., so if you can't find it in the manual then feel free to ask a question on the forum. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/images/banner.png b/doc/doc_files/images/banner.png new file mode 100755 index 0000000000000000000000000000000000000000..c19dea3d0fde2d5cdc04033423ea5a1d97464ebc GIT binary patch literal 24968 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 bW+5H*1~d6EzN5U@0noo=e7i==HuC=gMtlxf literal 0 HcmV?d00001 diff --git a/doc/doc_files/interpolatevector.html b/doc/doc_files/interpolatevector.html new file mode 100644 index 0000000..ef342a7 --- /dev/null +++ b/doc/doc_files/interpolatevector.html @@ -0,0 +1,18 @@ + + + + + + InterpolateVector [RCBasic Doc] + + + +

Sub InterpolateVector(x1, y1, z1, x2, y2, z2, distance, ByRef ix, ByRef iy, ByRef iz)

+

+ Gets an interpolated vector a given distance along a line starting at (x1, y1, z1) and ending at (x2, y2, z2) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/interpolatevectorq.html b/doc/doc_files/interpolatevectorq.html new file mode 100644 index 0000000..a389a78 --- /dev/null +++ b/doc/doc_files/interpolatevectorq.html @@ -0,0 +1,18 @@ + + + + + + InterpolateVectorQ [RCBasic Doc] + + + +

Sub InterpolateVectorQ(x1, y1, z1, x2, y2, z2, x3, y3, z3, distance, ByRef ix, ByRef iy, ByRef iz)

+

+ Gets a quadratic interpolated vector based on a distance between 3 vectors +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/makeplanartexturemap.html b/doc/doc_files/makeplanartexturemap.html new file mode 100644 index 0000000..a2a3693 --- /dev/null +++ b/doc/doc_files/makeplanartexturemap.html @@ -0,0 +1,21 @@ + + + + + + MakePlanarTextureMap [RCBasic Doc] + + + +

Sub MakePlanarTextureMap( mesh, resolution )

+

+ Makes a planar texture map for the mesh. +

+

+ Resolution is a ratio of the world space to texture space NOTE: Value should be between 0 and 1, a recommended value to start with is 0.001 +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/matrixexists.html b/doc/doc_files/matrixexists.html new file mode 100644 index 0000000..b7d848d --- /dev/null +++ b/doc/doc_files/matrixexists.html @@ -0,0 +1,18 @@ + + + + + + MatrixExists [RCBasic Doc] + + + +

Function MatrixExists( mA )

+

+ Returns TRUE if a matrix exists and FALSE if not. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/normalizevector.html b/doc/doc_files/normalizevector.html new file mode 100644 index 0000000..b5b9d74 --- /dev/null +++ b/doc/doc_files/normalizevector.html @@ -0,0 +1,18 @@ + + + + + + NormalizeVector [RCBasic Doc] + + + +

Sub NormalizeVector(x, y, z, ByRef nx, ByRef ny, ByRef nz)

+

+ Returns a normalized vector from (x,y,z) +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/pipeline_begin.html b/doc/doc_files/pipeline_begin.html new file mode 100644 index 0000000..c4f35d0 --- /dev/null +++ b/doc/doc_files/pipeline_begin.html @@ -0,0 +1,18 @@ + + + + + + Pipeline_Begin [RCBasic Doc] + + + +

Sub Pipeline_Begin()

+

+ Begins a custom rendering process. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/pipeline_end.html b/doc/doc_files/pipeline_end.html new file mode 100644 index 0000000..5352e22 --- /dev/null +++ b/doc/doc_files/pipeline_end.html @@ -0,0 +1,18 @@ + + + + + + Pipeline_End [RCBasic Doc] + + + +

Sub Pipeline_End()

+

+ Ends a custom rendering process. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/pipeline_render.html b/doc/doc_files/pipeline_render.html new file mode 100644 index 0000000..c39c0fa --- /dev/null +++ b/doc/doc_files/pipeline_render.html @@ -0,0 +1,21 @@ + + + + + + Pipeline_Render [RCBasic Doc] + + + +

Sub Pipeline_Render()

+

+ Render the active canvas. +

+

+ NOTE: Must be used between Pipeline_Begin() and Pipeline_End(). +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/posteffectisactive.html b/doc/doc_files/posteffectisactive.html new file mode 100644 index 0000000..79700ed --- /dev/null +++ b/doc/doc_files/posteffectisactive.html @@ -0,0 +1,21 @@ + + + + + + PostEffectIsActive [RCBasic Doc] + + + +

Function PostEffectIsActive( c_num )

+

+ Returns TRUE if an effect is active on the canvas and FALSE if not. +

+

Related: + SetPostEffectActive +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/recalculatecompositeaabb.html b/doc/doc_files/recalculatecompositeaabb.html new file mode 100644 index 0000000..3bbf7ca --- /dev/null +++ b/doc/doc_files/recalculatecompositeaabb.html @@ -0,0 +1,18 @@ + + + + + + RecalculateCompositeAABB [RCBasic Doc] + + + +

Sub RecalculateCompositeAABB(actor)

+

+ Recalculates the bounding box for a composite actor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/recalculatemeshnormals.html b/doc/doc_files/recalculatemeshnormals.html new file mode 100644 index 0000000..502957e --- /dev/null +++ b/doc/doc_files/recalculatemeshnormals.html @@ -0,0 +1,18 @@ + + + + + + ReCalculateMeshNormals [RCBasic Doc] + + + +

Sub ReCalculateMeshNormals( mesh )

+

+ Calculates the facing direction of the normals in a mesh +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/removecompositechild.html b/doc/doc_files/removecompositechild.html new file mode 100644 index 0000000..c485688 --- /dev/null +++ b/doc/doc_files/removecompositechild.html @@ -0,0 +1,24 @@ + + + + + + RemoveCompositeChild [RCBasic Doc] + + + +

Sub RemoveCompositeChild(actor, child_index)

+

+ Removes the actor stored as a child at the given index in a composite actor +

+

+ NOTE: This will change the index of all the remaining child actors +

+

Related: + AddCompositeChild +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/removeprojectoreffectactor.html b/doc/doc_files/removeprojectoreffectactor.html new file mode 100644 index 0000000..b79ed31 --- /dev/null +++ b/doc/doc_files/removeprojectoreffectactor.html @@ -0,0 +1,27 @@ + + + + + + RemoveProjectorEffectActor [RCBasic Doc] + + + +

Sub RemoveProjectorEffectActor(actor, tgt_index)

+

+ Removes an effect actor from a projector. +

+

+ NOTE: Removing an effect actor will change the order of other effect actors so you will need to get the new index for other effect actors. +

+

+ Refer to the included Projector Demo for an example +

+

Related: + AddProjectorEffectActor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/removespritechild.html b/doc/doc_files/removespritechild.html new file mode 100644 index 0000000..a92add5 --- /dev/null +++ b/doc/doc_files/removespritechild.html @@ -0,0 +1,21 @@ + + + + + + RemoveSpriteChild [RCBasic Doc] + + + +

Sub RemoveSpriteChild(sprite, child_index)

+

+ Removes the child at the given index from the parent sprite +

+

Related: + AddSpriteChild +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/resetvehiclesuspension.html b/doc/doc_files/resetvehiclesuspension.html new file mode 100644 index 0000000..e9fffe7 --- /dev/null +++ b/doc/doc_files/resetvehiclesuspension.html @@ -0,0 +1,18 @@ + + + + + + ResetVehicleSuspension [RCBasic Doc] + + + +

Sub ResetVehicleSuspension( actor )

+

+ Sets the suspension of a vehicle back to its base length. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/savebmp.html b/doc/doc_files/savebmp.html new file mode 100644 index 0000000..6fb2e4a --- /dev/null +++ b/doc/doc_files/savebmp.html @@ -0,0 +1,46 @@ + + + + + + SaveBMP [RCBasic Doc] + + + +

Function SaveBMP(img, file$)

+

+ Save an image to a *.bmp file +

+

+ title$ = "Sprite Test" 
+ w = 640 
+ h = 480 
+ fullscreen = FALSE 
+ vsync = FALSE 
+   
+ OpenWindow( title$, w, h, fullscreen, vsync ) 
+   
+ my_canvas = OpenCanvas(w, h, 00, w, h, 1) 
+   
+ Canvas(my_canvas) 
+   
+ SetColor(RGB(255,0, 0)) 
+ CircleFill(505025) 
+   
+ SetColor(RGB(02550)) 
+ CircleFill(5905025) 
+   
+ SetColor(RGB(00255)) 
+ CircleFill(59043025) 
+   
+ img = CanvasClip(00640480) 
+ SaveBMP(img, "test.bmp") 
+   
+ Update() 
+ WaitKey() 
+

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setactorimpactmesh.html b/doc/doc_files/setactorimpactmesh.html new file mode 100644 index 0000000..fc1c94d --- /dev/null +++ b/doc/doc_files/setactorimpactmesh.html @@ -0,0 +1,21 @@ + + + + + + SetActorImpactMesh [RCBasic Doc] + + + +

Sub SetActorImpactMesh( actor, mesh, mass )

+

+ Sets the collision mesh for an actor with a shape type of ACTOR_SHAPE_IMPACT_MESH +

+

Related: + SetActorShape +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setactorshapeex.html b/doc/doc_files/setactorshapeex.html new file mode 100644 index 0000000..b05ffd6 --- /dev/null +++ b/doc/doc_files/setactorshapeex.html @@ -0,0 +1,21 @@ + + + + + + SetActorShapeEx [RCBasic Doc] + + + +

Sub SetActorShapeEx( actor, shape_type, mass, radius)

+

+ Sets actor shape and radius for capsule, cone, and sphere shapes +

+

Related: + SetActorShape +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setbillboardsize.html b/doc/doc_files/setbillboardsize.html new file mode 100644 index 0000000..81db3fa --- /dev/null +++ b/doc/doc_files/setbillboardsize.html @@ -0,0 +1,18 @@ + + + + + + SetBillboardSize [RCBasic Doc] + + + +

Sub SetBillboardSize(actor, w, h)

+

+ Sets the size of a billboard. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setmeshbuffer.html b/doc/doc_files/setmeshbuffer.html new file mode 100644 index 0000000..73fee20 --- /dev/null +++ b/doc/doc_files/setmeshbuffer.html @@ -0,0 +1,21 @@ + + + + + + SetMeshBuffer [RCBasic Doc] + + + +

Function SetMeshBuffer( mesh_id, buffer_num, vertex_count, ByRef vertex_data, ByRef normal_data, ByRef uv_data, index_count, ByRef index_data )

+

+ Sets the contents of a mesh buffer. Buffer_num must already exists in mesh. +

+

+ Returns TRUE if successful and FALSE if not +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setphysics3d.html b/doc/doc_files/setphysics3d.html new file mode 100644 index 0000000..dc363fb --- /dev/null +++ b/doc/doc_files/setphysics3d.html @@ -0,0 +1,24 @@ + + + + + + SetPhysics3D [RCBasic Doc] + + + +

Sub SetPhysics3D( flag )

+

+ Enables or disables the physics engine. +

+

+ NOTE: While the physics engine is disabled, actor collisions won't be able to be checked. +

+

Related: + GetPhysics3D +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setposteffect.html b/doc/doc_files/setposteffect.html new file mode 100644 index 0000000..dd3cd1d --- /dev/null +++ b/doc/doc_files/setposteffect.html @@ -0,0 +1,103 @@ + + + + + + SetPostEffect [RCBasic Doc] + + + +

Function SetPostEffect( c_num, effect_type )

+

+ Sets a post effect on an canvas. +

+

+ Returns TRUE if successful and FALSE if not. +

+

+ NOTE: Post Effects only apply to 3D canvases. +

+

+ Possible Effects and there properties: +

+
    +
  • + POST_EFFECT_TYPE_BLOOM +
      +
    • + POST_EFFECT_PROPERTY_STRENGTH +
    • +
    • + POST_EFFECT_PROPERTY_DISTANCE +
    • +
    • + POST_EFFECT_PROPERTY_MULTIPLIER +
    • +
    +
  • +
  • + POST_EFFECT_TYPE_BLUR +
      +
    • + POST_EFFECT_PROPERTY_DISTANCE +
    • +
    +
  • +
  • + POST_EFFECT_TYPE_MOTION_BLUR +
      +
    • + POST_EFFECT_PROPERTY_STRENGTH +
    • +
    +
  • +
  • + POST_EFFECT_TYPE_RADIAL_BLUR +
      +
    • + POST_EFFECT_PROPERTY_STRENGTH +
    • +
    • + POST_EFFECT_PROPERTY_DISTANCE +
    • +
    +
  • +
  • + POST_EFFECT_TYPE_COLORIZE +
      +
    • + POST_EFFECT_PROPERTY_STRENGTH +
    • +
    • + POST_EFFECT_PROPERTY_SATURATION +
    • +
    • + POST_EFFECT_PROPERTY_COLOR +
    • +
    +
  • +
  • + POST_EFFECT_TYPE_INVERT +
      +
    • + NONE +
    • +
    +
  • +
  • + POST_EFFECT_TYPE_MINERAL +
      +
    • + POST_EFFECT_PROPERTY_STRENGTH +
    • +
    +
  • +
+

Related: + ClearPostEffect +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setposteffectactive.html b/doc/doc_files/setposteffectactive.html new file mode 100644 index 0000000..f614597 --- /dev/null +++ b/doc/doc_files/setposteffectactive.html @@ -0,0 +1,21 @@ + + + + + + SetPostEffectActive [RCBasic Doc] + + + +

Sub SetPostEffectActive( c_num, flag )

+

+ Enables or Disables currently set effect +

+

Related: + PostEffectIsActive +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setposteffectproperty.html b/doc/doc_files/setposteffectproperty.html new file mode 100644 index 0000000..5131773 --- /dev/null +++ b/doc/doc_files/setposteffectproperty.html @@ -0,0 +1,45 @@ + + + + + + SetPostEffectProperty [RCBasic Doc] + + + +

Sub SetPostEffectProperty( c_num, property, property_value )

+

+ Sets the value of a post effect property for a canvas. +

+

+ Possible Properties: +

+
    +
  • + POST_EFFECT_PROPERTY_STRENGTH +
  • +
  • + POST_EFFECT_PROPERTY_DISTANCE +
  • +
  • + POST_EFFECT_PROPERTY_MULTIPLIER +
  • +
  • + POST_EFFECT_PROPERTY_SATURATION +
  • +
  • + POST_EFFECT_PROPERTY_COLOR +
  • +
+

+ Reference SetPostEffect() for which properties apply to each effect +

+

Related: + GetPostEffectProperty + SetPostEffect +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setprojectortexture.html b/doc/doc_files/setprojectortexture.html new file mode 100644 index 0000000..7c0e339 --- /dev/null +++ b/doc/doc_files/setprojectortexture.html @@ -0,0 +1,21 @@ + + + + + + SetProjectorTexture [RCBasic Doc] + + + +

Sub SetProjectorTexture(actor, img_id)

+

+ Sets the texture that is projected by a projector. +

+

Related: + CreateProjectorActor +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setrendercirclepoints.html b/doc/doc_files/setrendercirclepoints.html new file mode 100644 index 0000000..a82a424 --- /dev/null +++ b/doc/doc_files/setrendercirclepoints.html @@ -0,0 +1,24 @@ + + + + + + SetRenderCirclePoints [RCBasic Doc] + + + +

Sub SetRenderCirclePoints(num_points)

+

+ Sets the number of points used to draw circles with Circle, CircleFill, Ellipse, and EllipseFill +

+

Related: + Circle + CircleFill + Ellipse + EllipseFill +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setspritelayerpriority.html b/doc/doc_files/setspritelayerpriority.html new file mode 100644 index 0000000..259822b --- /dev/null +++ b/doc/doc_files/setspritelayerpriority.html @@ -0,0 +1,14 @@ + + + + + + SetSpriteLayerPriority [RCBasic Doc] + + + +

Function SetSpriteLayerPriority( c_num, priority, order )

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setup.html b/doc/doc_files/setup.html index af26f53..7e66804 100644 --- a/doc/doc_files/setup.html +++ b/doc/doc_files/setup.html @@ -14,17 +14,6 @@

RCBasic also comes with a 2D level editor called Nirvana and a 3D level editor called Serenity. If you are on linux there is a start up script for each one in the main folder where RCBasic is extracted. On Windows, just go into each folder and start up the exe for the editor you want to use.

-

- There is a video going over the basics of each editor here: -

-

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.

diff --git a/doc/doc_files/setvehiclepitchcontrol.html b/doc/doc_files/setvehiclepitchcontrol.html new file mode 100644 index 0000000..dccce47 --- /dev/null +++ b/doc/doc_files/setvehiclepitchcontrol.html @@ -0,0 +1,24 @@ + + + + + + SetVehiclePitchControl [RCBasic Doc] + + + +

Sub SetVehiclePitchControl( actor, pitch )

+

+ Sets a vehicles pitch control. +

+

+ Pitch control is a tuning parameter that adds an extra torque to the chassis based on engine force to control how much the vehicle tilts forward or backward under acceleration and braking. +

+

Related: + GetVehiclePitchControl +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelactoroffsettransform.html b/doc/doc_files/setwheelactoroffsettransform.html new file mode 100644 index 0000000..1d4d818 --- /dev/null +++ b/doc/doc_files/setwheelactoroffsettransform.html @@ -0,0 +1,24 @@ + + + + + + SetWheelActorOffsetTransform [RCBasic Doc] + + + +

Sub SetWheelActorOffsetTransform( actor, wheel, t_matrix )

+

+ Sets an local offset transform for the wheel actor. This is mainly for when the actors local transform does not line up with the axis for the vehicle. +

+

+ Refer to the Vehicle demo to see an example of this. +

+

Related: + GetWheelActorOffsetTransform +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelaxel.html b/doc/doc_files/setwheelaxel.html new file mode 100644 index 0000000..03a5271 --- /dev/null +++ b/doc/doc_files/setwheelaxel.html @@ -0,0 +1,24 @@ + + + + + + SetWheelAxel [RCBasic Doc] + + + +

Sub SetWheelAxel( actor, wheel, x, y, z )

+

+ Sets the wheel axel direction. +

+

+ The axel is the axis the wheel rotates around. +

+

Related: + GetWheelAxel +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelbrake.html b/doc/doc_files/setwheelbrake.html new file mode 100644 index 0000000..301fd9a --- /dev/null +++ b/doc/doc_files/setwheelbrake.html @@ -0,0 +1,21 @@ + + + + + + SetWheelBrake [RCBasic Doc] + + + +

Sub SetWheelBrake( actor, wheel, brake )

+

+ Sets the brake value for a wheel +

+

Related: + GetWheelBrake +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelconnectionpoint.html b/doc/doc_files/setwheelconnectionpoint.html new file mode 100644 index 0000000..0869456 --- /dev/null +++ b/doc/doc_files/setwheelconnectionpoint.html @@ -0,0 +1,21 @@ + + + + + + SetWheelConnectionPoint [RCBasic Doc] + + + +

Sub SetWheelConnectionPoint( actor, wheel, x, y, z )

+

+ Sets the point in local space where the wheel connects to the chassis +

+

Related: + GetWheelConnectionPoint +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheeldampingcompression.html b/doc/doc_files/setwheeldampingcompression.html new file mode 100644 index 0000000..ff66bb1 --- /dev/null +++ b/doc/doc_files/setwheeldampingcompression.html @@ -0,0 +1,22 @@ + + + + + + SetWheelDampingCompression [RCBasic Doc] + + + +

Sub SetWheelDampingCompression( actor, wheel, dcomp_value )

+

+ Sets a wheels damping compression +

+

Related: + SetWheelDampingRelaxation + GetWheelDampingCompression +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheeldampingrelaxation.html b/doc/doc_files/setwheeldampingrelaxation.html new file mode 100644 index 0000000..838240a --- /dev/null +++ b/doc/doc_files/setwheeldampingrelaxation.html @@ -0,0 +1,22 @@ + + + + + + SetWheelDampingRelaxation [RCBasic Doc] + + + +

Sub SetWheelDampingRelaxation( actor, wheel, drel_value )

+

+ Sets a wheels damping relaxation +

+

Related: + GetWheelDampingRelaxation + SetWheelDampingCompression +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheeldirection.html b/doc/doc_files/setwheeldirection.html new file mode 100644 index 0000000..709eeaf --- /dev/null +++ b/doc/doc_files/setwheeldirection.html @@ -0,0 +1,24 @@ + + + + + + SetWheelDirection [RCBasic Doc] + + + +

Sub SetWheelDirection( actor, wheel, x, y, z )

+

+ Sets a wheel's direction +

+

+ This direction is the direction the suspension of the wheel extends to and not the direction the wheel rolls. Basically, if the suspension is pointing straight down then the direction would be (0, -1, 0). +

+

Related: + GetWheelDirection +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelfrictionslip.html b/doc/doc_files/setwheelfrictionslip.html new file mode 100644 index 0000000..1384c3b --- /dev/null +++ b/doc/doc_files/setwheelfrictionslip.html @@ -0,0 +1,32 @@ + + + + + + SetWheelFrictionSlip [RCBasic Doc] + + + +

Sub SetWheelFrictionSlip( actor, wheel, fslip_value )

+

+ Sets the friction slip value for a wheel. +

+

+ This value determines how much grip a wheel has before it starts sliding +

+
    +
  • + Lower value - more slippery +
  • +
  • + Higher value - more firm grip +
  • +
+

Related: + GetWheelFrictionSlip +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelinversecontactsuspension.html b/doc/doc_files/setwheelinversecontactsuspension.html new file mode 100644 index 0000000..cdb5491 --- /dev/null +++ b/doc/doc_files/setwheelinversecontactsuspension.html @@ -0,0 +1,27 @@ + + + + + + SetWheelInverseContactSuspension [RCBasic Doc] + + + +

Sub SetWheelInverseContactSuspension( actor, wheel, c_value )

+

+ Sets the clipped inverse contact dot suspension. +

+

+ This value is a stability factor used to adjust suspension force when the ground contact surface is tilted. +

+

+ It prevents suspension forces from exploding when the wheel contacts steep surfaces. +

+

Related: + GetWheelInverseContactSuspension +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelmaxsuspensiontravel.html b/doc/doc_files/setwheelmaxsuspensiontravel.html new file mode 100644 index 0000000..262be28 --- /dev/null +++ b/doc/doc_files/setwheelmaxsuspensiontravel.html @@ -0,0 +1,24 @@ + + + + + + SetWheelMaxSuspensionTravel [RCBasic Doc] + + + +

Sub SetWheelMaxSuspensionTravel( actor, wheel, max_travel )

+

+ Sets the max suspension travel distance. +

+

+ This value is the maximum distance the suspension is allowed to extend or compress from its rest length set with SetSuspensionLength(). +

+

Related: + GetWheelMaxSuspension +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelradius.html b/doc/doc_files/setwheelradius.html new file mode 100644 index 0000000..4681735 --- /dev/null +++ b/doc/doc_files/setwheelradius.html @@ -0,0 +1,21 @@ + + + + + + SetWheelRadius [RCBasic Doc] + + + +

Sub SetWheelRadius( actor, wheel, radius )

+

+ Sets the radius of a wheel +

+

Related: + GetWheelRadius +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelrollinfluence.html b/doc/doc_files/setwheelrollinfluence.html new file mode 100644 index 0000000..1eaf1d1 --- /dev/null +++ b/doc/doc_files/setwheelrollinfluence.html @@ -0,0 +1,27 @@ + + + + + + SetWheelRollInfluence [RCBasic Doc] + + + +

Sub SetWheelRollInfluence( actor, wheel, roll_influence )

+

+ Sets the roll_influence for a wheel. +

+

+ Roll influence controls how much a wheel’s suspension force contributes to the vehicle’s body roll (sideways tipping). +

+

+ It’s essentially a stability scaling factor. +

+

Related: + GetWheelRollInfluence +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelrotation.html b/doc/doc_files/setwheelrotation.html new file mode 100644 index 0000000..9a637e6 --- /dev/null +++ b/doc/doc_files/setwheelrotation.html @@ -0,0 +1,21 @@ + + + + + + SetWheelRotation [RCBasic Doc] + + + +

Sub SetWheelRotation( actor, wheel, rot )

+

+ Sets a wheel's spin rotation. +

+

Related: + GetWheelRotation +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelsteeringvalue.html b/doc/doc_files/setwheelsteeringvalue.html new file mode 100644 index 0000000..c07e46a --- /dev/null +++ b/doc/doc_files/setwheelsteeringvalue.html @@ -0,0 +1,21 @@ + + + + + + SetWheelSteeringValue [RCBasic Doc] + + + +

Sub SetWheelSteeringValue( actor, wheel, steering )

+

+ Sets the steering value for a wheel +

+

Related: + GetWheelSteeringValue +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelsuspensionlength.html b/doc/doc_files/setwheelsuspensionlength.html new file mode 100644 index 0000000..11f2533 --- /dev/null +++ b/doc/doc_files/setwheelsuspensionlength.html @@ -0,0 +1,21 @@ + + + + + + SetWheelSuspensionLength [RCBasic Doc] + + + +

Sub SetWheelSuspensionLength( actor, wheel, s_length )

+

+ Sets the suspsension rest length of a wheel +

+

Related: + GetWheelSuspensionLength +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelsuspensionstiffness.html b/doc/doc_files/setwheelsuspensionstiffness.html new file mode 100644 index 0000000..8e44e67 --- /dev/null +++ b/doc/doc_files/setwheelsuspensionstiffness.html @@ -0,0 +1,29 @@ + + + + + + SetWheelSuspensionStiffness [RCBasic Doc] + + + +

Sub SetWheelSuspensionStiffness( actor, wheel, stiffness )

+

+ Sets the suspension stiffness of a wheel. +

+
    +
  • + Higher stiffness - stronger upward force for the same compression +
  • +
  • + Lower stiffness - softer suspension +
  • +
+

Related: + GetWheelSuspensionStiffness +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/setwheelsuspensionvelocity.html b/doc/doc_files/setwheelsuspensionvelocity.html new file mode 100644 index 0000000..6efd87c --- /dev/null +++ b/doc/doc_files/setwheelsuspensionvelocity.html @@ -0,0 +1,24 @@ + + + + + + SetWheelSuspensionVelocity [RCBasic Doc] + + + +

Sub SetWheelSuspensionVelocity( actor, wheel, velocity )

+

+ Sets the suspension velocity. +

+

+ This value is the speed that the suspension compresses or extends at. +

+

Related: + GetWheelSuspensionVelocity +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/sortspritelayer.html b/doc/doc_files/sortspritelayer.html new file mode 100644 index 0000000..445cbc5 --- /dev/null +++ b/doc/doc_files/sortspritelayer.html @@ -0,0 +1,14 @@ + + + + + + SortSpriteLayer [RCBasic Doc] + + + +

Function SortSpriteLayer( c_num, sort_option )

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/stack_n_exists.html b/doc/doc_files/stack_n_exists.html new file mode 100644 index 0000000..96b5f63 --- /dev/null +++ b/doc/doc_files/stack_n_exists.html @@ -0,0 +1,18 @@ + + + + + + Stack_N_Exists [RCBasic Doc] + + + +

Function Stack_N_Exists( num_stack )

+

+ Returns TRUE if the given number stack exists and FALSE if not. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/stack_s_exists.html b/doc/doc_files/stack_s_exists.html new file mode 100644 index 0000000..77c7db8 --- /dev/null +++ b/doc/doc_files/stack_s_exists.html @@ -0,0 +1,18 @@ + + + + + + Stack_S_Exists [RCBasic Doc] + + + +

Function Stack_S_Exists( str_stack )

+

+ Returns TRUE if the given string stack exists and FALSE if not. +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/updatecompositechildtransform.html b/doc/doc_files/updatecompositechildtransform.html new file mode 100644 index 0000000..0eeb8ca --- /dev/null +++ b/doc/doc_files/updatecompositechildtransform.html @@ -0,0 +1,18 @@ + + + + + + UpdateCompositeChildTransform [RCBasic Doc] + + + +

Sub UpdateCompositeChildTransform(actor, child_index, t_matrix, recalc_flag)

+

+ Sets a new child transform and updates dynamic AABB tree +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/vectorisbetweenpoints.html b/doc/doc_files/vectorisbetweenpoints.html new file mode 100644 index 0000000..a8a8842 --- /dev/null +++ b/doc/doc_files/vectorisbetweenpoints.html @@ -0,0 +1,18 @@ + + + + + + VectorIsBetweenPoints [RCBasic Doc] + + + +

Function VectorIsBetweenPoints(x, y, z, start_x, start_y, start_z, end_x, end_y, end_z)

+

+ Returns TRUE if a vector is between 2 points +

+

+

+ + + \ No newline at end of file diff --git a/doc/doc_files/wheelisfront.html b/doc/doc_files/wheelisfront.html new file mode 100644 index 0000000..e599cae --- /dev/null +++ b/doc/doc_files/wheelisfront.html @@ -0,0 +1,18 @@ + + + + + + WheelIsFront [RCBasic Doc] + + + +

Function WheelIsFront( actor, wheel )

+

+ Returns TRUE if a wheel is set as a front wheel +

+

+

+ + + \ No newline at end of file diff --git a/rcbasic_build/rcbasic4_changes.ods b/rcbasic_build/rcbasic4_changes.ods index 1ce48eb863d00a50784e0eb5c0560ec2b2c7f3f6..03b8f981afb63dd2b33119440c6159cf8bcbbf1c 100644 GIT binary patch delta 59886 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

H~FMa1vF21P{;slvDc~N2-&j&Mu7rZ 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 delta 20476 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 - + - + + + + + + + + + + + @@ -20,19 +30,19 @@ - + - + - + - + - + - + @@ -40,19 +50,9 @@ - + - - - - - - - - - - - + diff --git a/rcbasic_runtime/main.cpp b/rcbasic_runtime/main.cpp index 9126c6f..b5adceb 100755 --- a/rcbasic_runtime/main.cpp +++ b/rcbasic_runtime/main.cpp @@ -679,17 +679,19 @@ double readDouble() void dbg_1(uint32_t dbg_fn, uint64_t arg1, uint64_t arg2) { - #ifdef RCBASIC_DEBUG - output_debug_message(); + //#ifdef RCBASIC_DEBUG + //output_debug_message(); switch(dbg_fn) { case 0: - current_src_file = arg1; - current_src_line = arg2; + //current_src_file = arg1; + //current_src_line = arg2; + std::cout << "file: " << arg1 << " line: " << arg2 << std::endl; break; - } - #endif // RCBASIC_DEBUG + } + + //#endif // RCBASIC_DEBUG } void mov_32(int n1, int n2) @@ -4455,9 +4457,10 @@ int main(int argc, char * argv[]) //ogles2 test #ifdef RC_TESTING - rc_intern_dirChange("/home/n00b/Music/Testing_Stuff"); + rc_intern_dirChange("/home/n00b/GameDev/Ambient/Ambient_Project"); //rc_intern_dirChange(""); - rc_filename = "main.cbc"; + //rc_filename = "main.cbc"; + rc_filename = "debug.cbc"; //rc_intern_dirChange("/home/n00b/Pictures/UNTITLED"); //rc_filename = "nv_test.cbc"; diff --git a/rcbasic_runtime/rc_os_defines.h b/rcbasic_runtime/rc_os_defines.h index 928b6d4..1b52d19 100755 --- a/rcbasic_runtime/rc_os_defines.h +++ b/rcbasic_runtime/rc_os_defines.h @@ -2,7 +2,8 @@ #define RC_OS_DEFINES_H_INCLUDED //USED FOR TESTING ONLY -//#define RC_TESTING +#define RC_TESTING +//#define RCBASIC_DEBUG //I am checking Android first since I think it also defines __linux__ diff --git a/rcbasic_runtime/rcbasic_runtime.depend b/rcbasic_runtime/rcbasic_runtime.depend index 3e62ce1..62663d0 100755 --- a/rcbasic_runtime/rcbasic_runtime.depend +++ b/rcbasic_runtime/rcbasic_runtime.depend @@ -1,5 +1,5 @@ # depslib dependency file v1.0 -1772055470 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp +1772262651 source:/home/n00b/Projects/RCBASIC4/rcbasic_runtime/main.cpp "rc_os_defines.h" @@ -35,7 +35,7 @@ "rc_func130_cases.h" -1772097843 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h +1772262632 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_os_defines.h 1772139384 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_defines.h diff --git a/rcbasic_runtime/rcbasic_runtime.layout b/rcbasic_runtime/rcbasic_runtime.layout index 44b91a3..a61eaa3 100755 --- a/rcbasic_runtime/rcbasic_runtime.layout +++ b/rcbasic_runtime/rcbasic_runtime.layout @@ -2,93 +2,9 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -96,44 +12,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + @@ -141,39 +52,29 @@ - + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - + @@ -202,144 +103,19 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -347,9 +123,43 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -357,24 +167,44 @@ - + - + + + + + + + + + + + - + + + + + + + + + + + - + - + @@ -382,9 +212,44 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -392,9 +257,89 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -402,14 +347,34 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + @@ -417,14 +382,49 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +