|
|
|
SCRIPT OBJECT REFERENCE
OBJECT FUNCTIONS
void iObjectStart(OBJ_X)
Start the specified object. Note that the target object must provide some 'startable' action.
Please see target object's help file for details on the action it performs when started.
OBJ_X = object handle.
void iObjectStop(OBJ_X)
Stop the specified object. Note that the target object must support some 'stoppable' action.
Please see target object's help file for details on the action it performs.
OBJ_X = object handle.
void iObjectSwitch(OBJ_X)
Switch the specified object (start if stopped and vice-versa).
Note that the target object must provide some 'startable/stoppable' action.
Please see target object's help file for details on the action it performs.
OBJ_X = object handle.
void iObjectShow(OBJ_X)
Show the specified object.
OBJ_X = object handle.
void iObjectHide(OBJ_X)
Hide the specified object.
OBJ_X = object handle.
void iObjectShowHideSwitch(OBJ_X)
Switch the specified object (show if hidden and vice-versa).
OBJ_X = object handle.
void iObjectReset(OBJ_X)
Re-initialize the specified object completely, to its default state, as defined in the project.
OBJ_X = object handle.
void iObjectOrientation(OBJ_X,Quaternion)
Return the current orientation for the specified object.
OBJ_X = object handle.
Quaternion = when the function returns this variable contains
the specified object's orientation.
NOTE: if OBJ_X is an object supporting physics and made of multiple parts (like the Car object)
this function returns the orientation of the part which was selected when the Script object
was linked to the object.
void iObjectOrientationSet(OBJ_X,Quaternion)
Set the specified object orientation (defined as a quaternion).
OBJ_X = object handle.
Quaternion = orientation.
NOTE: this function will only work with objects that support dynamic orientation setting, like
SkinMesh, Particles, etc. Objects supporting physics do not usually work with this function.
For example, you should not use this function to progressively alter the orientation of a RigidBody or a Car,
to make it spin. You should use the Force object instead.
void iObjectOrientationReset(OBJ_X,Quaternion)
Re-initialize the specified object completely, also setting its orientation (defined as a quaternion).
OBJ_X = object handle.
Quaternion = reset orientation.
NOTE: this function should not be used to alter the orientation of objects while their
physics simulation is in progress, because this may affect simulation accuracy for them.
This function should only be used to initialize or reset object orientation.
NOTE: use iObjectPositionReset() if you want to also reset location.
void iObjectLocation(OBJ_X,Vector3)
Return the current location for the specified object.
OBJ_X = object handle.
Vector3 = when the function returns this variable contains
the specified object's location.
NOTE: if OBJ_X is an object supporting physics and made of multiple parts (like the Car object)
this function returns the location of the part which was selected when the Script object
was linked to the object.
void iObjectLocationSet(OBJ_X,Vector3)
Set the specified object to the specified position.
OBJ_X = object handle.
Vector3 = location.
NOTE: this function will only work with objects that support dynamic location setting, like
SkinMesh, Particles, etc. Objects supporting physics do not usually work with this function.
For example, you should not use this function to progressively alter the location of a RigidBody or a Car,
to make it move. You should use the Force object instead.
void iObjectLocationReset(OBJ_X,Vector3)
Re-initialize the specified object completely, also setting its location to the specified position.
OBJ_X = object handle.
Vector3 = reset location.
NOTE: this function should not be used to alter the location of objects while their
physics simulation is in progress, because this may affect simulation accuracy for them.
This function should only be used to initialize or reset object location.
NOTE: use iObjectPositionReset() if you want to also reset orientation.
void iObjectPositionReset(OBJ_X,Quaternion,Vector3)
Re-initialize the specified object completely, also setting its position (orientation and location).
OBJ_X = object handle.
Quaternion = reset orientation.
Vector3 = reset location.
NOTE: this function should not be used to alter the position of objects while their
physics simulation is in progress, because this may affect simulation accuracy for them.
This function should only be used to initialize or reset object position.
void iObjectScaleSet(OBJ_X,Vector3)
Set the specified object's scale.
OBJ_X = object handle.
Vector3 = scale.
NOTE: this function will only work with objects that support dynamic scaling setting, like
SkinMesh, Sprite, etc.
void iObjectScale(OBJ_X,Vector3)
Return the current scale for the specified SkinMesh object.
OBJ_X = SkinMesh object handle.
Vector3 = when the function returns this variable contains
the specified SkinMesh object's scale.
NOTE: this function only supports SkinMesh objects.
float iObjectKmh(OBJ_X)
Return the specified object speed, in kilometers per hour (KPH).
OBJ_X = object handle. Must be an object supporting physics, like RigidBody, Car, Ball.
NOTE: you can compute miles per hour with MPH = KPH*0.6215
To find meters per second use M/SEC = KPH*0.277778
iObjectVelocity(OBJ_X,Vector3)
Return the specified object velocity, in meters per second.
OBJ_X = object handle. Must be an object supporting physics, like RigidBody, Car, Ball.
Vector3 = velocity vector. Return data.
iObjectVelocitySet(OBJ_X,Vector3)
Set the specified object velocity, in meters per second.
OBJ_X = object handle. Must be an object supporting physics, like RigidBody, Car, Ball.
Vector3 = velocity vector.
NOTE: this function should not be used to alter the velocity of objects while their
physics simulation is in progress, because this may affect simulation accuracy for them.
This function should only be used to initialize or reset object velocity.
iObjectSpin(OBJ_X,Vector3)
Return the specified object spin.
OBJ_X = object handle
Vector3 = spin vector.
The vector direction is the axis of rotation (absolute).
The length of the vector is the rotation speed (spin), in degrees per second.
float iObjectPicked(OBJ_X,Vector3)
If the specified object is clicked by using any mouse button, this function returns the pick location distance from
the current camera (viewport). The function returns always zero if the object is a Sprite.
It returns a negative value if the specified object was not picked.
OBJ_X = object handle.
Vector3 = when the function returns, if the object was picked, then this variable contains
the world-relative coordinates of the pick location.
NOTE: when picking Sprite objects, please keep in mind that the whole original sprite-image is
used as a reference. Therefore any transparent pixels in the image can be picked.
NOTE: when picking an animated 3D object, please keep in mind that, because this function uses
the original, un-morphed geometry as a reference, picking may not be accurate.
int iObjectScan(OBJ_X,Vector3,Vector3,float,Vector3,Vector3)
Return true if the specified object was hit by the scan.
OBJ_X = object handle.
Vector3 = scan origin
Vector3 = scan direction. The length of this vector will be the length of the scanning capsule.
float = scan radius (capsule radius)
Vector3 = contact point (absolute coordinates). Return data.
Vector3 = contact normal (absolute orientation, outward from body surface). Return data.
NOTE: the scan is performed checking the specified capsule against the specified object, for
intersections. Only the intersection closer to origin is considered, in case the
capsule intersects the object at two or more points.
NOTE: this function will only work with objects supporting collision detection.
IMPORTANT: intersections within 'scan radius' from the 'scan origin' are not detected!
Make sure your scan starts 'radius' meters before the possible intersection area.
iObjectTextSet(OBJ_X,string)
Set the specified text for the specified object (for example the TextPrint object)
OBJ_X = object handle.
string = text
void iObjectRefresh(OBJ_X,string)
Change the resources (3d models, textures, etc) associated with the specified object.
This function is typically used to update SkinMesh, RigidBody, SkyBox or Sprite object
geometry/aspect run-time, for example after the new artwork has been downloaded from
a server (website) by using the iFileDownload() function.
For an example of usage, see the demo project called WebDownloadDemo.3dr
OBJ_X = object handle.
string = path to the new resource file. If a local path is specified (e.g. ".newModel.x") this is relative
to the current 3D Rad folder or your compiled project folder.
NOTE: if the object is a SkinMesh based on frame-by-frame animation, the new
assets must provide the same number of frames.
NOTE: this function doesn't work for RigidBody objects that use a bounding sphere
for collision detection.
int iObjectBonesCount(OBJ_X)
Return the number of bones in the specified object (usually a SkinMesh).
OBJ_X = object handle.
NOTE: depending on the software used to generate the .x skinned model, the returned
value may or may not include null bones, therefore returned bone count tends to be
bigger than the number of actual bones edited in the 3d modeling application.
void iObjectBoneOrientation(OBJ_X,int,Quaternion,int)
Return specified object's bone orientation.
OBJ_X = object handle.
int = index of the bone. This value must be between 0 (first bone) and iObjectBonesCount()-1.
Each bone in the model is indexed by the software used to generate the .x
skinned model. There is no easy way to predict what index will be assigned
to a particular bone.
Quaternion = orientation. Return data.
int = orientation type.
0 = world-relative.
1 = object-relative.
2 = parent-bone relative.
iObjectBoneLocation(OBJ_X,int,Vector3,int)
Return specified object's bone location.
OBJ_X = object handle.
int = index of the bone. This value must be between 0 (first bone) and iObjectBonesCount()-1.
Each bone in the model is indexed by the software used to generate the .x
skinned model. There is no easy way to predict what index will be assigned
to a particular bone.
Vector3 = location. Return data.
int = location type.
0 = world-relative.
1 = object-relative.
2 = parent-bone relative.
void iObjectBoneOrientationSet(OBJ_X,int,Quaternion,int)
Set specified object's bone orientation.
OBJ_X = object handle.
int = index of the bone. This value must be between 0 (first bone) and iObjectBonesCount()-1.
Each bone in the model is indexed by the software used to generate the .x
skinned model. There is no easy way to predict what index will be assigned
to a particular bone.
Quaternion = orientation.
int = orientation type.
0 = world-relative.
1 = object-relative.
2 = parent-bone relative.
NOTE: this function must be called at every script loop in order to work as expected.
NOTE: for an example of usage, please see the SkinMeshBoneControlDemo.3dr sample project.
iObjectBoneLocationSet(OBJ_X,int,Vector3)
Set specified object's bone location (parent-bone relative coordinates).
OBJ_X = object handle.
int = index of the bone. This value must be between 0 (first bone) and iObjectBonesCount()-1.
Each bone in the model is indexed by the software used to generate the .x
skinned model. There is no easy way to predict what index will be assigned
to a particular bone.
Vector3 = location (parent-bone relative).
NOTE: this function must be called at every script loop in order to work as expected.
iObjectBoneScaleSet(OBJ_X,int,Vector3)
Set specified object's bone scale.
OBJ_X = object handle.
int = index of the bone. This value must be between 0 (first bone) and iObjectBonesCount()-1.
Each bone in the model is indexed by the software used to generate the .x
skinned model. There is no easy way to predict what index will be assigned
to a particular bone.
Vector3 = scale.
NOTE: this function must be called at every script loop in order to work as expected.
iObjectImpostersCreate(OBJ_X,int)
Create the specified number of imposters for the object (must be SkinMesh).
Imposters are clones of the main SkinMesh object that can be placed by using the iObjectImposterSet() function.
They render faster than multiple identical SkinMesh objects because the video card doesn't have to re-load
the 3d model's data for each rendered item.
OBJ_X = SkinMesh object handle.
int = number of imposters to create.
NOTE: this function will currently only work with SkinMesh objects that have no bone-based animation.
iObjectImpostersDestroy(OBJ_X)
Remove all imposters for the specified SkinMesh object.
OBJ_X = SkinMesh object handle.
iObjectImposterSet(OBJ_X,int,Quaternion,Vector3)
Set orientation and location for the specified SkinMesh object's imposter.
OBJ_X = SkinMesh object handle.
int = imposter index
Quaternion = orientation.
Vector3 = location.
iObjectImposterScaleSet(OBJ_X,int,Vector3)
Set scaling for the specified SkinMesh object's imposter.
OBJ_X = SkinMesh object handle.
int = imposter index
Vector3 = scaling. X, Y, Z components of this vector are the local scaling factors. Original size is when the scaling factor is 1.0.
iObjectImposterHide(OBJ_X,int)
Hide the specified SkinMesh object's imposter.
OBJ_X = SkinMesh object handle.
int = imposter index
iObjectImposterShow(OBJ_X,int)
Show the specified SkinMesh object's imposter.
OBJ_X = SkinMesh object handle.
int = imposter index
iObjectImposterShadowEnable(OBJ_X,int,bool)
Enable/disable shadow casting for the specified SkinMesh object's imposter.
OBJ_X = SkinMesh object handle.
int = imposter index
bool = set this parameter to 'true' to enable shadows, 'false' to disable.
NOTE: calls to this function are ignored if the SkinMesh doesn't have a shadow caster itself.
NOTE: imposter shadows are faster than regular SkinMesh shadows, but they are still
a computationally expensive feature, slow for video cards with a poor fill-rate.
In some cases, enabling shadows defeats the purpose of using imposters.
CUSTOM SHADER FUNCTIONS
iShaderSet(OBJ_X,string)
Assign the specified shader to the specified SkinMesh object. After the call to this function,
the SkinMesh will be rendered by using the specified shader until the function is called again
with a different shader name as parameter.
OBJ_X = SkinMesh object handle.
string = shader name. Shaders are defined as HLSL code sections, delimited by '/*HLSLSTART name' and 'HLSLEND*/' tags,
usually at the beginning of your script code. The shader name is the string following the '/*HLSLSTART' keyword.
Please see http://www.3drad.com/custom-shaders.htm for more about writing your own shaders for 3D Rad.
IMPORTANT: the 'Use custom shaders' option, on the SkinMesh property dialog, must be
checked, before a custom shader can be applied to the SkinMesh by calling iShaderSet().
NOTE: the iShaderSet() function uses very little processing power and can be used to switch shader as frequently
as needed (for example to create special run-time visual effects).
iShaderFloatSet(OBJ_X,string,float)
Set a float variable for the HLSL shader associated with the specified SkinMesh object.
Note that this function should be called at every script loop to work properly. Failing to do
so may cause visual artifacts.
OBJ_X = SkinMesh object handle.
string = shader veriable name, as declared in the HLSL code header.
float = value to set
iShaderFloat2Set(OBJ_X,string,float,float)
Same as iShaderValueSet() but allowing you to set two values at a time. This is typically used
to set a 'float2' vector variable in your HLSL code.
iShaderFloat3Set(OBJ_X,string,float,float,float)
Same as iShaderValueSet() but allowing you to set 3 values at a time. This is typically used
to set a 'float3' vector variable in your HLSL code.
iShaderFloat4Set(OBJ_X,string,float,float,float,float)
Same as iShaderValueSet() but allowing you to set 4 values at a time. This is typically used
to set a 'float4' vector variable in your HLSL code.
iShaderFloat4x3Set(OBJ_X,string,float,float,float
,float,float,float,float,float,float,float,float,float)
Same as iShaderValueSet() but allowing you to set 12 values at a time. This is typically used
to set a 'float4x3' matrix variable in your HLSL code.
iShaderFloat4x4Set(OBJ_X,string,float,float,float
,float,float,float,float,float,float,float,float
,float,float,float,float,float)
Same as iShaderValueSet() but allowing you to set 16 values at a time. This is typically used
to set a 'float4x4' matrix variable in your HLSL code.
int iShaderTextureCreate(string)
Load the specified image file and return a handle to the texture object. See also iShaderTextureSet().
string = source image file name (bmp, dds, dib, jpg, png, tga).
NOTE: creating again and again the same texture (from the same source file) will not
waste memory, even if the call to this function happens in different Script objects.
3D Rad will re-use the data already in memory, if possible.
iShaderTextureDestroy(int)
int = texture object handle. See iShaderTextureCreate().
Destroying texture objects when your project no longer uses them is not necessary because 3D Rad will do it automatically on exit.
However designing your scripts so that they always remove textures that are no longer needed is good practice
because it frees memory that can be used by other reources in your project.
iShaderTextureSet(OBJ_X,string,int)
Set a texture to be used by the HLSL shader associated with the specified SkinMesh object.
SKINMESH* = skinmesh object
string = texture name, as declared in the HLSL code header.
int = texture object handle. See iShaderTextureCreate().
STRING FUNCTIONS
int iStringLen(string)
Return the length of the specified string, in characters
iStringUCase(string,string)
Convert a string its uppercase version.
string = result string
string = original string
NOTE: the two parameters can be the same string
iStringLCase(string,string)
Convert a string to its lowercase version.
string = result string
string = original string
NOTE: the two parameters can be the same string
iStringLeft(string,string,int)
Copy the first X characters from a string to another string.
string = result string
string = original string
int = number of characters to copy
NOTE: the first two parameters can be the same string
iStringRight(string,string,int)
Copy the last X characters from a string to another string.
string = result string
string = original string
int = number of characters to copy
NOTE: the first two parameters can be the same string
iStringMid(string,string,int,int)
Copy X characters from a string to another string, starting from the specified position.
string = result string
string = original string
int = position to start copying the characters from
int = number of characters to copy
NOTE: the first two parameters can be the same string
iStringStr(string,float,string)
Build a string converting the specified value to characters.
string = result string
float = value to convert
string = a string describing the format of the resulting string
Examples:
"%.0f" - any number of digits for the integer part, zero digits for the fraction part (e.g. 1321)
"%3.0f" - at least 3 digits for the integer part, zero digits for the fraction part (e.g. 321)
"%2.3f" - at least 2 digits for the integer part, 2 digits for the fraction part (e.g. 32.731)
"%05.1f" - at least 5 digits for the integer part, 1 digit for the fraction part. If the integer part has less than 5 digits, missing spaces are filled with zero's (e.g. 00321.3)
"%f" - any number of digits for the integer part and up to six digits for the fraction part (e.g. 1501.540)
"%g" - any number of digits for the integer part and for the fraction part (e.g. 1501.54)
"%.0f%%" - any number of digits for the integer part, zero digits for the fraction part. Also append a percent-symbol (%) to the value (e.g. 77%)
float iStringVal(string)
Return the value corresponding the value in the specified string
iStringFind(string,string,int,bool)
Return the position of a sub-string inside another string. Return -1 if the sub-string could not be found.
string = source string
string = sub-string to find
int = position to start searching from
bool = set this parameter to 'true' to make the search case-sensitive
NOTE: while this function can be used to compare strings, keep in mind that strings also support normal script expressions.
For example, 'if (myString == "foobar")...' is a valid usage. The <, >, != and + operators are also supported.
iStringReplace(string,string,string,string,bool)
Copy a string to another string also replacing all occurrence of a specified sub-string with a specified text.
string = result string
string = original string
string = sub-string to replace
string = text to use as replacement for any occurrence of sub-string found
bool = set this parameter to 'true' to make the search case-sensitive
NOTE: the first two parameters can be the same string
iPrint(string,float,float,OBJ_X)
Print the specified string by using the font and character settings as configured in the specified
TextPrint object
string = text (255 characters max). Multi-line text is supported (use '/r' to specify a new line character).
float,float = screen position. Note that resulting text location depends on source TextPrint object settings.
OBJ_X = TextPrint object handle.
NOTE: this function will only print the text once. In order to display a permanet text it must be executed
at every script loop.
MATH FUNCTIONS
float iFloatRand(float,float)
Return a random float between the two specified values.
float iFloatAbs(float)
Return absolute value of specified float.
float iFloatSin(float)
Return sine of specified angle.
float = angle, in degrees
float iFloatCos(float)
Return cosine of specified angle.
float = angle, in degrees
float iFloatSqrt(float)
Return squared root of specified float.
float iFloatInterpolate(float,float,float,float,float,bool)
Given an input value (interpolation factor), return its interpolated version between
dstmin and dstmax, after comparing it against srcmin and srcmax.
That is: result = dstmin + (dstmax-dstmin)*((input-srcmin)/(srcmax-srcmin))
float = interpolation factor
float = source minimum (srcmin)
float = source maximum (srcmax)
float = destination minimum (dstmin)
float = destination maximum (dstmax)
bool = set this to 'true' to clamp the returned value within destination min. and destination max.
float iFloatTendTo(float,float,float,float,int)
float = float variable to adjust, so that it tends to a certain value.
NOTE: this variable is usually the same used as destination for the
return value. E.g. VAR = iFloatTendTo(VAR,ref,target,speed,mode)
float = reference value. This is usually zero.
float = target value (value to tend to). Note, the value is never reached really.
float = speed, determines the time taken to reach the specified target value.
int = mode.
Use 0 to reduce variation speed when closer to the target value.
Use 1 to reduce variation speed when closer to the reference value.
Use 2 to reduce variation speed when closer to the reference and target values.
Use 3 to reduce variation speed when closer to the middle point between reference and target values.
NOTE: this function should be executed at every script loop in order to work properly
NOTE: see project called 'TutScript6_iFloatTendTo.3dr' for an example of usage.
float iFloatTrend(float,float,float,float,float,int)
float = float variable to adjust, so that it tends to a certain value.
NOTE: this variable is usually the same used as destination for the
return value. E.g. VAR = iFloatTrend(VAR,refMin,refMax,target,speed,mode)
float = minimum reference value.
float = maximum reference value.
float = target value (value to tend to). Must be between minimum and maximum reference values.
float = speed, determines the time taken to reach the specified target value.
int = mode.
Use 0 to reduce variation speed when closer to the target value.
Use 1 to reduce variation speed when closer to a reference value.
Use 2 to reduce variation speed when closer to a reference and target values.
Use 3 to reduce variation speed when closer to the middle point between reference and target values.
NOTE: this function should be executed at every script loop in order to work properly
NOTE: this function is similar to iFloatTendTo(), but the harmonic effects it produces are usually more
accurate as it relies on two reference values instead of one.
float iVectorLength(Vector3)
Return the length of the specified vector.
Vector3 = source vector
float iVectorLengthSq(Vector3)
Return the squared length of the specified vector.
Vector3 = source vector
iVectorLengthSet(Vector3,Vector3,float)
Force the length of a vector to the specified value, without changing its direction
Vector3 = transformed vector. Return data.
Vector3 = source vector
float = desired length. Set this value to 1.0f to 'normalize' a vector.
float iVectorDot(Vector3,Vector3)
Return the dot product of the specified 3d vectors.
Vector3 = first source vector
Vector3 = second source vector
iVectorCross(Vector3,Vector3,Vector3)
Return the cross product of the specified 3d vectors.
Vector3 = resulting vector. Return data.
Vector3 = first source vector
Vector3 = second source vector
iVectorRotate(Vector3,Vector3,Quaternion)
Vector3 = transformed coordinates (vector). Return data.
Vector3 = coordinates (vector) to rotate
Quaternion = quaternion representing the rotation to apply
iVectorEulerRotate(Vector3,Vector3,float,float,float,string)
Vector3 = transformed coordinates (vector). Return data.
Vector3 = coordinates (vector) to rotate
float = first rotation. See character string below.
float = second rotation.
float = third rotation.
string = 3-character string specifying the axes and the order in which to apply
the rotations.
For example, "xyz" (apply first rotation about X axis, then second rotation about
Y axis and then third rotation about Z axis), "xzx" and "xzy" are valid strings.
iVectorCompare(Vector3,Vector3,float)
Vector3 = first vector.
Vector3 = second vector.
float = threshold.
Set this value to zero for a strict comparison (the function returns true if the vectors are identical)
or specify a positive value to check if the difference between each vector component (X,Y,Z) is within a certain threshold.
iQuaternionFromAxisAngle(Quaternion,Vector3,float)
Quaternion = resulting quaternion. Return data.
Vector3 = orientation axis.
float = orientation angle.
NOTE: input orientation is expressed by an axis (the vector) and an angle of
rotation about that axis (float).
iQuaternionFromEulerAngles(Quaternion,float,float,float,string)
Quaternion = resulting quaternion. Return data.
float = first rotation. See character string below.
float = second rotation.
float = third rotation.
string = 3-character string specifying the axes and the order in which to apply
the rotations.
For example, "xyz" (apply first rotation about X axis, then second rotation about
Y axis and then third rotation about Z axis), "xzx" and "xzy" are valid strings.
iQuaternionToEulerAngles(Quaternion,float,float,float)
Quaternion = source quaternion.
float = orientation angle about world X axis. Return data.
float = orientation angle about world Y axis. Return data.
float = orientation angle about world Z axis. Return data.
NOTE: the three angles are computed so that they will define the original
orientation only if applied in the "xyz" order.
iQuaternionLookAt(Quaternion,Vector3,Vector3)
Quaternion = resulting quaternion. Return data.
It is the rotation required to orientate the Z+ vector
D3DXVECTOR3(0.0f,0.0f,1.0f) to the specified direction.
Vector3 = direction
Vector3 = up direction. For example Vector3(0,1,0)
NOTE: this function will not work properly if 'direction' and 'up'
vectors are parallel.
iQuaternionMultiply(Quaternion,Quaternion,Quaternion)
Return the orientation resulting from concatenating two given quaternion
orientations (rotations).
Quaternion = resulting orientation. Return data.
Quaternion = source orientation q1
Quaternion = source orientation q2
Imagine an unoriented object. That is, an object with its local Z+ axis parallel to
world's Z+ axis. Imagine applying to it the q2 orientation (rotating it by q2) and
then applying to it the q1 orientation. The resulting orientation is
returned in the quaternion specified as first parameter.
iQuaternionCompare(Quaternion,Quaternion)
Return true if the quaternions are identical.
Quaternion = first quaternion.
Quaternion = second quaternion.
FILE FUNCTIONS
int iFileReadOpen(string)
Open the specified file for reading. Return -1 if the file could not be opened.
string = path to the file. If a local path is specified (e.g. ".myFile.txt") this is relative
to the current 3D Rad folder or your compiled project folder.
int iFileWriteOpen(string)
Open the specified file for writing. Return -1 if the file could not be opened.
string = path to the file. If a local path is specified (e.g. ".myFile.txt") this is relative
to the current 3D Rad folder or your compiled project folder.
WARNING: this function permanently deletes the specified file. Before executing a script
including this function, double check that the file path does point to the intended file.
iFileClose(int)
Close the specified file.
int = file handle returned by iFileReadOpen() or iFileWriteOpen()
float iFileValueRead(int)
Read the next value from the specified file.
int = file handle returned by iFileReadOpen() or iFileWriteOpen()
iFileValueWrite(int,float,bool)
Write (appends) the specified value to the specified file.
int = file handle returned by iFileReadOpen() or iFileWriteOpen()
float = the value to write.
bool = if this value is 'true', a caret is added after the written value.
This is necessary if you want to be able to read the value from
the file afterwards by using iFileValueRead().
int iFileByteRead(int)
Read the next byte from the specified file.
int = file handle returned by iFileReadOpen() or iFileWriteOpen()
iFileByteWrite(int,int)
Write (appends) the specified byte to the specified file.
int = file handle returned by iFileReadOpen() or iFileWriteOpen()
int = the byte to write.
iFileStringRead(int,string)
Read the next string from the specified file.
int = file handle returned by iFileReadOpen() or iFileWriteOpen()
string = string to place the read text into.
iFileStringWrite(int,string,bool)
Write (appends) the specified string to the specified file.
int = file handle returned by iFileReadOpen() or iFileWriteOpen()
string = string to write.
bool = if this value is 'true', a caret is added after the written string.
This is necessary if you want to be able to read the string from
the file afterwards by using iFileStringRead().
bool iFileExists(string)
Return true if the specified file exists
string = name of file to check. If a local path is specified (e.g. ".myFile.txt") this is relative
to the current 3D Rad folder or your compiled project folder.
iFileCopy(string,string)
Copy a file.
string = source file name. If a local path is specified (e.g. ".myFile.txt") this is relative
to the current 3D Rad folder or your compiled project folder.
string = destination file name. If a local path is specified (e.g. ".myFile_bak.txt") this is relative
to the current 3D Rad folder or your compiled project folder.
iFileDelete(string)
Remove the specified file.
string = name of file to delete. If a local path is specified (e.g. ".myFile.txt") this is relative
to the current 3D Rad folder or your compiled project folder.
iFolderCreate(string)
Create a new folder.
string = name of folder to create. If a local path is specified (e.g. ".myFolder") this is relative
to the current 3D Rad folder or your compiled project folder.
iFolderDelete(string)
Remove the specified folder, if it is empty.
string = name of folder to delete. If a local path is specified (e.g. ".myFolder") this is relative
to the current 3D Rad folder or your compiled project folder.
int iFileDownload(string,string)
Downloads a file from the specified Web location to the local computer.
Return the size of the downloaded file, or -1 if an error occurred.
string = URL of the file to download (like for example 'http://www.3drad.com/index.htm').
string = destination file name. If a local path is specified (e.g. ".index.htm") this is relative
to the current 3D Rad folder or your compiled project folder.
NOTE: 3D Rad processing will stop until the download is completed or it was interrupted by the user (Esc key).
int iFileDownloadPB(string,string)
Same as iFileDownload(), but displaying a progress bar during the download.
NOTE: the progress bar is shown at the lower edge of all camera windows active on the screen when the function is called.
In your compiled projects, you can customize the progress bar aspect by modifying the .3DRad_ressystemprogressBarDL.dds file.
You can also use a different image format by opening the progressBarDL.x file with an ASCII editor and changing the
'progressBarDL.dds' name to your alternate image file (must be .dds, .png, .tga, .bmp or .jpg).
int iFileSize(string)
Return the size of the specified file, or -1 if the file could not be found.
string = path to the file. If a local path is specified (e.g. ".myFile.txt") this is relative
to the current 3D Rad folder or your compiled project folder.
iLocalFolder(string)
Place the path of the 3D Rad's installation folder (or your compiled project's folder)
into the specified string.
string = string to place the local folder into.
bool iFileOpenDialog(string,string,string)
Open the Windows file open dialog box allowing the user to browse the file system and
select a file. Return true if a file was selected, false if the dialog was canceled.
string = initial file path. When the function returns, it will be the file
path chosen by the user.
NOTE: the string must include the file name, with extension, or a generic
file name like "c:foobar*.txt". The extension must be the same as
the extension filter (see next parameter).
string = extension filter.
For example "txt" will allow only .txt files to be browsed.
Set this parameter to "*" to allow browsing of all file types.
string = dialog box title.
bool iFileSaveDialog(string,string,string)
Open the Windows' save-as dialog box allowing the user to browse the file system
and type a filename to save. Return true if a file was selected, false if the
dialog was canceled or an error occurred.
See also iFileOpenDialog().
KEYBOARD FUNCTIONS
bool iKeyDown(int)
Return true if the specified key is pressed
int = key code. Use the iKeyCode() function to find the key code for specific keyboard keys.
Set this value to -1 to check if any key is pressed
NOTE: not all keyboards allow for more than two simultaneous key presses to
be detected, unless one of them is [Ctrl] or [Alt].
int iKeyCode(string)
Return the key code corresponding to the specified description.
string = key code description (e.g. 'DIK_A', 'DIK_B', etc). The complete list of key code
descriptions can be found on the Web by searching for 'Keyboard Device Constants'.
int iTypedChar(bool)
Return the character (ASCII code) generated by the current keystroke. Return zero if
no key is pressed or there is no printable character associated with the pressed key.
Note however that it will return -1 if [Enter] is pressed and -2 if [Backspace] is pressed.
International, standard 256-code ASCII based keyboards are supported.
bool = if 'true', this function will return the character only once. It will then return
zero until the key is released. If 'false', it will keep returning the character
until the key is released.
MOUSE FUNCTIONS
float iMouseX()
Return mouse horizontal position, where 0.0 = left margin and a value
close to 1.0 = right margin.
Note that the output can be very close to 1.0, but always less than 1.0.
If necessary, you can compute screen coordinates for a Sprite object as follows:
x = iMouseX()*32.0-16.0;
y = 12.0-iMouseY()*24.0;
float iMouseY()
Return mouse vertical position, where 0.0f = top margin and a value
close to 1.0f = bottom margin.
Note that the output can be very close to 1.0f, but always less than 1.0f.
See iMouseX() for more.
float iMouseZ(bool)
Return mouse wheel position.
bool = whether to return relative wheel position changes since last call to this
function (true), or the absolute wheel position since last call to
iMouseZSet() function (false).
bool iMouseButtonDown(int)
Return true if the specified mouse button is pressed
int = mouse button codes can be 0=left, 1=right, 2=middle
bool iMouseButtonClick(int)
Return true if the specified mouse button is pressed
int = mouse button codes can be 0=left, 1=right, 2=middle
NOTE: this function will return true only once. It will no longer return true until the
button is released and pressed again.
NOTE: you cannot call iMouseButtonClick() more than once per project, in any script, for the same button.
If you do so, only one call will respond to key presses. All others will always return false.
float iMouseLookX()
Return the current pitch (X axis orientation, in degrees) for the current Script object's mouselook system.
The mouselook system keeps track of mouse movements and rotates accordingly.
See also iMouseLookY(), iMouseLookSet(), iMouseLookSpeedSet(), iMouseLookYRangeSet().
float iMouseLookY()
Return the current yaw (Y axis orientation, in degrees) for the current Script object's mouselook system.
See also iMouseLookX().
iMouseLookSet(float,float)
Set the current pitch and yaw (in degrees) for the current Script object's mouselook system.
See also iMouseLookX().
iMouseLookSpeedSet(float,float)
Set the sensitivity (response speed) for the current Script object's mouselook system.
See also iMouseLookX().
iMouseLookYRangeSet(float,float)
Set the pitch limits (minimum, maximum, in degrees) for the current Script object's mouselook system.
See also iMouseLookX().
JOYSTICK/GAMEPAD/STEERING-WHEEL FUNCTIONS
int iJoyCount()
Return the number of installed joysticks/gamepads/steering-wheels
bool iJoyButtonDown(int,int)
Return 'true' if the specified joystick/gamepads/steering-wheel button is pressed
int = joystick number
int = joystick button number (0-127)
float iJoyX(int)
Return position of X axis for the specified joystick/gamepads/steering-wheel.
Returned value is between -1.0 and 1.0.
int = joystick number
NOTE: never assume that the returned value is stable. For example, even if the joystick is
relaxed (centered), for some devices, the returned value may not be always zero.
See iJoyXAverage()
float iJoyY(int)
Return position of Y axis for the specified joystick. See iJoyX() for more.
float iJoyZ(int)
Return position of Z axis for the specified joystick. See iJoyX() for more.
float iJoyXAverage(int,float)
Return average position of X axis for the specified joystick/gamepads/steering-wheel.
int = joystick number
float = average computation period, in seconds. Basically, an average value is returned
after summing up direct values from the hardware for the specified period.
float iJoyYAverage(int,float)
Return average position of Y axis for the specified joystick. iJoyXAverage() for more
float iJoyZAverage(int,float)
Return average position of Z axis for the specified joystick. iJoyXAverage() for more
float iJoyU(int)
Return position of additional axis U for the specified joystick. See iJoyX() for more.
float iJoyV(int)
Return position of additional axis U for the specified joystick. See iJoyX() for more.
float iJoyPOV1/2/3/4(int)
Return direction controller state for the specified joystick. The value is in
in degrees from north (clockwise). Center position is -1.
NETWORK FUNCTIONS
bool iNetServerStart(string,string,int,int,int)
Start the network system as server for the local machine.
Return false if the system could not be started for some reason.
string = session name. Connecting users will see this name in the list of network
games to join, when the client network system is launched on their local
machine. See iNetClientStart() for more.
string = player name. The name identifying the server.
int = port number.
The system port to use for network input/output data. For example, 25857.
int = game identifier. This value is used to generate a globally unique identifier
for the game application. For example 9414234 and 372 are valid ids.
The id must be identical both for iNetServerStart() and iNetClientStart() calls.
int = network buffer size, in bytes.
This function allocates memory to be used as temporary buffer for data
exchanges. 100000 bytes is usually enough.
NOTE: after calling this function, you must stop the network system before exiting
the project by calling iNetStop()
bool iNetClientStart(string,string,int,int,string,int,int)
Start the network system as client for the local machine.
Return false if the system could not be started for some reason.
This functions allows you to either open a standard connection dialog box
or directly connect to a defined remote server.
string = server IP address. For example "64.64.64.64", or "64.64.64.64:8080"
if a port number is also required.
string = player name. The name identifying the local client machine.
int = game identifier. See iNetServerStart() for details.
int = network buffer size, in bytes. See iNetServerStart() for details.
string = optional dialog box title, or "" for no title.
int = remote game sequential number. If greater or equal to zero, the optional
dialog box is not shown. The specified sequential number indicates the game
to select from the list of available games on the remote server. The first
game in the list is 0, the second is 1 and so on.
NOTE: when hidden, the dialog box is still processed normally. Actually,
the system will simulate user actions, by automatically pressing the
'Search' button, selecting one game from the list and pressing 'Join'.
int = game searching timeout, in seconds (auto connect mode only).
NOTE: after calling this function, you must stop the network system before exiting
the game by calling iNetStop()
void iNetStop()
Stop the network system for the local machine, also releasing all memory resources
allocated by calls to iNetServerStart() or iNetClientStart().
void iNetStringSend(string,int,bool)
Send the specified string to one or all connected client machines.
string = string to send.
int = player identifier. Use zero to send to all players. See also iNetPlayerId().
bool = whether to send the data message as guaranteed (true) or not (false).
Guaranteed messages are ensured to arrive to the destination, even if the connection
is subject to lags and data loss, but they add overhead to the send process.
int iNetStringReceive(string)
Receive a string from the server. See iNetStringSend() for more.
Returns the number of characters received (string length + 1), or zero if nothing was received.
string = string to place the received text into.
IMPORTANT! if you call iNetStringSend() on the server you MUST call this function
at every script loop, on all client PCs.
void iNetFloatArraySendEx(int,int,bool)
Send the specified part of the global array of floats to one or all connected client machines.
The global array of floats is basically a list of values you can set by using iNetFloatArraySet()
before sending it to the clients by calling this function.
int = index of the first value of the array to send (see also next parameter).
int = number of values to send. For example, setting the previous value to 0 and this value to 7 will send the first 7 values in the array.
Another example: setting the previous value to 3 and this value to 7 will send the fourth value in the array and the 6 values following it.
int = player identifier. Use zero to send to all players. See also iNetPlayerId().
bool = whether to send the data message as guaranteed (true) or not (false).
Guaranteed messages are ensured to arrive to the destination, even if the connection
is subject to lags and data loss, but they add overhead to the send process.
NOTE: if this function is called on a client machine, the array will only be received by the server.
void iNetFloatArraySend(int,int,bool)
This function is obsolete. If called it actually calls iNetFloatArraySendEx() with the first parameter set to zero.
int iNetFloatArrayReceive()
Receive data from the server and updates the global array of floats accordingly.
See iNetFloatArraySend() for more.
Returns the number of array elements received, or zero if nothing was received.
IMPORTANT! if you call iNetFloatArraySend() on the server you MUST call this function
at every script loop, on all client PCs.
NOTE: this function can also be called on the server, to receive arrays from client machines.
void iNetFloatArraySet(int,float)
Set the value for the specified element in the global array of floats.
See iNetFloatArraySend() for more.
float iNetFloatArrayGet(int)
Read the value of the specified element in the global array of floats.
See iNetFloatArraySend() for more.
int iNetPlayersCount()
Return the current number of connected machines, including the server.
int iNetPlayerId(int)
Retrieve the player's unique ID assigned by the network system to the specified machine
and places it to the specified DWORD variable.
Return -99999 if the information couldn't be retrieved for some reason.
The return ID is required to send messages exclusively to specific players,
or to retrieve statistics data about specific machines.
int = machine to retrieve the player's ID for.
It must be a value between 0 and iNetPlayersCount()-1. Server's ID is always 0x00000000.
NOTE: all player IDs become invalid whenever a new player joins or a connected one leaves.
When this happens (i.e. when the value returned by iNetPlayersCount() changes),
if your code stores IDs to variables, you should call this function again for all
machines and update all variables.
int iNetLocalPlayerMachine()
Return the sequential number assigned by the network system to the local machine.
int iNetPlayerMachine(int)
Return the sequential number assigned by the network system to the machine associated
with the specified player.
int = player's unique identifier.
iNetClientDisconnect(int)
Disconnect the specified client machine.
int = machine's player ID. See iNetPlayerId() for details.
NOTE: calling this function on the client machine has no effect.
BOOL iNetSessionTerminated()
Return true if the connection with the server has been lost. The local machine
should then call iNetStop() to stop the network system and free resources.
If called on the server machine, this function will return true if the network
system was stopped.
BOOL iNetPlayersChanged()
Return true if one or more client machines joined or left the session.
float iNetLag(int)
Return the specified machine lag (ping), in seconds.
int = machine ID to retrieve the lag for.
Should be a valid player's ID, as returned by iNetPlayerId().
NOTE: if this function is called on a client machine, this parameter
is ignored, and the local machine lag is returned.
int iNetBPS(int)
Return the average number of bytes per second exchanged by the specified machine
with the network of connected machines.
int = machine ID to retrieve the information for.
Should be a valid player's ID, as returned by iNetPlayerId().
NOTE: if this function is called on a client machine, this parameter
is ignored, and the information is retrieved for the local machine.
int iNetBytesSent(int)
Return the total number of bytes sent by the specified machine.
int = machine ID. See iNetBPS() for details on this parameter.
int iNetBytesReceived(int)
Return the total number of bytes received by the specified machine.
int = machine ID. See iNetBPS() for details on this parameter.
EXTERNAL DLL FUNCTIONS
int iDLLLoad(string)
Load the specified DLL module ad make any exposed function in it available for calling.
Return a handle to the loaded DLL module, or zero if a problem occurred.
See iDLLCall() for more.
string = DLL module file.
iDLLUnload(int)
Release the specified DLL module.
int = DLL module handle. See iDLLLoad().
bool iDLLCall(int,string,int)
Calls the specified function in the specified DLL module, passing an array of float values as parameter.
int = DLL module handle. See iDLLLoad().
string = DLL function name.
int = index of the first element of the array of floats to pass to the user DLL function. This is usually zero.
For each Script object, the array of floats is defined by default and can be accessed by using iDLLArraySet() and iDLLArrayGet().
NOTE: please see the demo project called 'iDLLCall.3dr' ('Script_Functions_Usage_Examples' sub-folder) for an example of usage.
iDLLArraySet(int,float)
Set the value for the specified element in the array of floats.
See iDLLCall() for more.
int = index of the array element to set. Must be between 0 and 16383.
float iDLLArrayGet(int)
Return the value of the specified element in the array of floats.
See iDLLCall() for more.
int = index of the array element to get. Must be between 0 and 16383.
MISC FUNCTIONS
bool iInitializing()
Return true if the script is executed for the first time, after the project was launched.
This function also returns true at the next execution after the script object has been started or reset by another object.
bool iDeinitializing()
Return false if the script is executed for the last time, before terminating project execution.
This function also returns true at the last execution after the script object has been stopped by another object
or by a call to iScriptStop().
iScriptStop()
Stop the Script object, preventing any further execution of the code.
The Script object can only resume execution if started by another object.
NOTE: after this function is called, the script will execute once more.
Calling the iDeinitializing() function during this last execution,
will return true.
int iObjectHandle(int)
This special function lets you programmatically determine the OBJ_ value of a certain object from its
position in the 'Object HANDLE' window. The returned value can be passed to functions in place of the actual
OBJ_ variable.
int = index of the object to retrieve the handle for, as it appears in the 'Object HANDLE' window (Script editor),
with zero being the first item, 1 the second and so on. If this parameter is -1 the function returns the
total number of items in the 'Object HANDLE' window.
int iSystemTime(int)
Return system clock data.
int = identifier of the information to return, as follows:
0 - Year
1 - Month
2 - DayOfWeek
3 - Day
4 - Hour
5 - Minute
6 - Second
7 - Milliseconds
For example, iSystemTime(4) will return current hour.
int iDisplayWidth()
Return the current display width, in pixels.
NOTE: unless the project is compiled and running in full-screen, this function returns the Windows desktop width.
int iDisplayHeight()
Return the current display height, in pixels.
NOTE: unless the project is compiled and running in full-screen, this function returns the Windows desktop height.
iBoundingSphereFrustumCheckSet(bool)
Enable/disable quick exclusion of SkinMesh objects rendering if
their bounding spheres are outside the rendering window.
bool = 'false' to disable, 'true' to enable. Default is 'true'.
float iFrameRate(bool)
Return the current frame-rate (frames rendered per second).
bool = whether to return average frame-rate (true) or instant frame-rate (false).
NOTE: instant frame-rate is actually based on the time needed to process the last rendered frame.
To get the real instant frame-rate, clamp the returned value within 0 and 60.
iGammaSet(float,float,float,float,float,float)
Set the gamma for the full screen display (compiled project only).
float,float,float = Red, Green, Blue bias factor (> 0.0). Default brightness for each
rgb component is multiplied by the specified value. So, for example,
specifying 2.0 for all the three components will double the display
brightness. Default value is 1.0 (no bias).
float,float,float = Red, Green, Blue offset factor (between -1.0 and 1.0). The specified
value is added to the default brightness for each rgb component.
Default value is 0.0 (no offset).
NOTE: this function has no effect when called in windowed mode.
NOTE: this function is computationally expensive and should not be called at every script loop.
int iVertexShaderVersion(bool)
Return the vertex shader version supported by the hardware.
bool = set to 'false' to return the major version (e.g., return 2 if vs version is 2.0),
set to 'true' to return the minor version (e.g., return 0 if vs version is 2.0)
int iPixelShaderVersion(bool)
Return the pixel shader version supported by the hardware.
bool = set to 'false' to return the major version (e.g., return 2 if ps version is 2.0),
set to 'true' to return the minor version (e.g., return 0 if ps version is 2.0)
iRenderingEnable(bool)
bool = set to 'false' to disable the rendering of the scene, processing the simulation at the maximum speed allowed by the system.
This can be useful if you are only interested in the results of a simulation, and want to get them
as fast as possible.
Set this value to 'true' to restore rendering.
iShadowsEnable(bool)
bool = set to 'false' to disable rendering of volumetric shadows, which may dramatically improve framerate.
Set this value to 'true' to restore shadow rendering.
iEscKeyDisable()
Disable the Esc key, which normally stops a compiled project at any time and exit back to Windows.
Warning, when the Esc key is disabled, the only way to terminate a compiled project is by using
the ExitFade object.
Use iEscKeyEnable() to re-enable the Esc key.
NOTE: this function only works in a compiled project.
iSettingsDialogDisable()
Disable the startup dialog which is shown when the compiled version of your project is launched.
Note that this will only work the next time the compiled project is run.
Use iSettingsDialogEnable() to re-enable the startup dialog or to make sure it is shown, even if the user
selected 'Don't show this dialog again' on the dialog.
NOTE: this function only works in a compiled project.
iSimulationQualitySet(int)
Set physics simulation accuracy.
int = set this value to non-zero to enable reduced accuracy (typical value 20).
The lower the value, the lower the accuracy and the faster the
processing. Reduced accuracy will dramatically improve processing
speed where many joints are defined and many collisions are performed.
Set this parameter to zero to set maximum supported accuracy (default).
NOTE: setting the parameter to a negative value (eg -1) will use a additional
computation to make very fast sphere-group based RigidBody objects less likely
to go through polygonal-based RigidBody objects (like walls). This feature
is computationally expensive and may cause poor frame rates.
bool iCommand(string)
Executes the specified Windows command (CLI).
string = command to execute.
NOTE: control will only go back to 3D Rad after the command has been completed.
NOTE: this function opens an invisible CLI window, so, if you use it to directly
launch an application, the application may be invisible as well. The
workaround is launching a batch file instead, which in turn launches the application.
bool iCommandContinue(string)
Like iCommand(), except that control will return immediately to 3D Rad's script, with the
application working in the background, until it is closed by the user or it terminates by itself.
NOTE: if the launched application cannot terminate by itself, you must use the intermediate
batch file method (see iCommand() function above), otherwise closing it manually
will not be possible, being it an invisible background application.
iExitDocumentSet(string)
Open the specified file after the program is terminated.
The document is typically an .html file, for example the user manual for your compiled project.
string = path to the file to open.
NOTE: this function only works in a compiled project.
bool i3DPointVisible(OBJ_X,Vector3)
Return TRUE if the specified 3d point is within the specified camera window.
OBJ_X = camera object
Vector3 = 3d point location
bool iSphereVisible(OBJ_X,Vector3,float)
Return TRUE if the specified sphere is within the specified camera window.
OBJ_X = camera object
Vector3 = sphere center location
float = radius
NOTE: see SkinMeshImpostersVisible demo project for an example of usage.
i3DLocationToScreen(Vector3,Vector3,OBJ_X)
Vector3 = screen location. Return data.
Resulting coordinates specify a screen location using
the same convention used for iObjectLocationSet()
when the object is a Sprite, a ValuePrint or a TextPrint object.
NOTE: if the source 3d location is outside the viewing
frustum returned 2d coordinates will be outside the screen.
NOTE: if the source 3d location is behind the camera,
returned 2d coordinates will be both 1000000000.
Vector3 = source 3d location to convert to screen coordinates.
OBJ_X = camera object to be used as a reference.
iScreenRay(Vector3,Vector3,Vector3,OBJ_X)
Return a 3d vector with origin at the specified camera location and pointing toward
the 3d location indicated by the specified screen coordinates.
Vector3 = 3d ray origin, absolute coordinates. Return data.
Vector3 = 3d ray direction. Return data.
Note that the length of this vector is random. You will typically
need a specific length for your computation. You can set the length
of a vector with iVectorLengthSet()
Vector3 = screen coordinates defining a 3d point at infinite distance
from the camera, in the virtual space.
Coordinates specify a screen location using
the same convention used for iObjectLocationSet()
when the object is a Sprite, a ValuePrint or a TextPrint object.
OBJ_X = camera object (rendering window) to be used as a reference.
bool iSpherePicked(Vector3,float,OBJ_X,Vector3)
Return true if the specified sphere is pointed by the mouse.
Vector3 = sphere center, world-relative coordinates.
float = sphere radius
OBJ_X = camera object (rendering window) to be used as a reference.
Vector3 = when the function returns true, this variable contains
the world-relative coordinates of the point indicated by
the mouse, on the sphere surface.
int iSphereSegmentIntersect(Vector3,float,Vector3,Vector3,Vector3,Vector3)
Return the number of intersection points between the specified sphere and the specified segment.
Vector3 = sphere center, world-relative coordinates.
float = sphere radius
Vector3 = location of the first vertex for the 3d line segment, world-relative coordinates.
Vector3 = location of the second vertex for the 3d line segment, world-relative coordinates.
Vector3 = when the function returns non-zero, this variable contains
the world-relative coordinates of the first intersection point.
Vector3 = when the function returns 2, this variable contains
the world-relative coordinates of the second intersection point.
bool iScreenAreaPicked(float,float,float,float,bool)
Return 'true' if the specified screen area is pointed by the mouse.
float,float = coordinates of the upper-left corner of the pickable screen area.
float,float = coordinates of the lower-right corner of the pickable screen area.
bool = if set to 'true', the function will only return 'true' once, when the left
mouse button is clicked while the area is pointed by the mouse.
NOTE: coordinates specify a screen location using
the same convention used for iObjectLocationSet()
when the object is a Sprite, a ValuePrint or a TextPrint object
|
|
|
|
|
|
|
|
| | |