I wish all of you a belated happy new year 2026.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menu
TYPE element
*element // store the next element in the list..
ENDTYPE


_______________________________________
*** Configuration: ANDROID ***
precompiling:
GPC - GLBasic Precompiler V.10.037 SN:ea2d5b8f - 3D, NET
Wordcount:21984 commands
compile+link:
running glb_build.bat
Using ANDROID_TARGET="android-22"
You can use "C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\glb_android_build.bat" to change the API level and SDK path.
%ANDROIDSDK% not set. Using GLBasic's default target-22, Android 5.1 (Lollipop
ECHO ist ausgeschaltet (OFF).
androidmanifest.xml:
Make sure to check do a manual check for those.
android:minSdkVersion="10" android:targetSdkVersion="22"
ECHO ist ausgeschaltet (OFF).
AndroidIcons.exe [v21-3-2015] running...
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_36_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-ldpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_48_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-mdpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_72_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_72_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-hdpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_96_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-xhdpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_180_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-xxhdpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_192_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-xxxhdpi/icon.png
C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_ouya_AndroidExtras.png is missing (732x412 size)
the Ouya icon is not important, if you dont want to support the console
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_ouya_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-xhdpi/ouya_icon.png
Checked AdActivity (intersititals):
Does not uses a AdActivity
Android Extras version (SDLActivity.java):
* 2.11.2
Checking Icons Finished...
BUILD STAGE 2: Start compiler (android.bat)
SDK=Q:\Compiler\platform\android\bin\..\android-sdk-windows
Updated project.properties
Updated local.properties
Updated file C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\build.xml
Updated file C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\proguard-project.txt
Updated and renamed default.properties to project.properties
Updated local.properties
Added file C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\build.xml
Added file C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\proguard-project.txt
.
BUILD STAGE 3: Build a debug build
Buildfile: C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\build.xml
-set-mode-check:
-set-debug-files:
-check-env:
[checkenv] Android SDK Tools Revision 24.2.0
[checkenv] Installed at Q:\Compiler\platform\android\android-sdk-windows
-setup:
[echo] Project Name: glbasic
[gettype] Project Type: Application
-set-debug-mode:
-debug-obfuscation-check:
-pre-build:
-build-setup:
[getbuildtools] Using latest Build Tools: 21.1.2
[echo] Resolving Build Target for glbasic...
[gettarget] Project Target: Android 5.1.1
[gettarget] API level: 22
[echo] ----------
[echo] Creating output directories if needed...
[mkdir] Created dir: C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\rsObj
[mkdir] Created dir: C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\rsLibs
[echo] ----------
[echo] Resolving Dependencies for glbasic...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency]
[dependency] ------------------
[echo] ----------
[echo] Building Libraries with 'debug'...
[subant] No sub-builds to iterate on
-code-gen:
[mergemanifest] Found Deleted Target File
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
[echo] Handling aidl files...
[aidl] No AIDL files to compile.
[echo] ----------
[echo] Handling RenderScript files...
[echo] ----------
[echo] Handling Resources...
[aapt] Found Deleted Target File
[aapt] Generating resource IDs...
[echo] ----------
[echo] Handling BuildConfig class...
[buildconfig] Generating BuildConfig class.
-pre-compile:
-compile:
[javac] Compiling 30 source files to C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\classes
[javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
[javac] C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\gen\com\.reggieworld\R.java:8: error: illegal '.'
[javac] package com..reggieworld;
[javac] ^
[javac] C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\gen\com\reggieworld\BuildConfig.java:2: error: illegal '.'
[javac] package com..reggieworld;
[javac] ^
[javac] 2 errors
[javac] 3 warnings
BUILD FAILED
Q:\Compiler\platform\android\android-sdk-windows\tools\ant\build.xml:720: The following error occurred while executing this line:
Q:\Compiler\platform\android\android-sdk-windows\tools\ant\build.xml:734: Compile failed; see the compiler error output for details.
Total time: 6 seconds
.
BUILD STAGE 4: Build a release build
[subant] No sub-builds to iterate on
[javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
[javac] C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\gen\com\.reggieworld\R.java:8: error: illegal '.'
[javac] package com..reggieworld;
[javac] ^
[javac] C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\gen\com\reggieworld\BuildConfig.java:2: error: illegal '.'
[javac] package com..reggieworld;
[javac] ^
[javac] 2 errors
[javac] 3 warnings
BUILD FAILED
Q:\Compiler\platform\android\android-sdk-windows\tools\ant\build.xml:720: The following error occurred while executing this line:
Q:\Compiler\platform\android\android-sdk-windows\tools\ant\build.xml:734: Compile failed; see the compiler error output for details.
Total time: 1 second
Picked up _JAVA_OPTIONS: -Xms256m -Xmx512m
.
HOW TO INSTALL? Install by invoke this command:
"Q:\Compiler\platform\android\bin\..\android-sdk-windows\platform-tools\adb.exe" install -r "C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android/bin/glbasic-debug.apk"
.
HOW TO SIGN? Sign it by invoke this command:
"Q:\Compiler\platform\android\bin\glb_code_sign.bat" "C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android"
.
Android=C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android
erfolgreich
_______________________________________
*** Fertig ***
Dauer: 107.7 sek. Zeit: 20:07
Erstellen: 1 erfolgreich.
_______________________________________
*** Configuration: ANDROID ***
precompiling:
GPC - GLBasic Precompiler V.10.037 SN:ea2d5b8f - 3D, NET
Wordcount:21984 commands
compile+link:
running glb_build.bat
Using ANDROID_TARGET="android-22"
You can use "C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\glb_android_build.bat" to change the API level and SDK path.
%ANDROIDSDK% not set. Using GLBasic's default target-22, Android 5.1 (Lollipop
ECHO ist ausgeschaltet (OFF).
androidmanifest.xml:
Make sure to check do a manual check for those.
android:minSdkVersion="10" android:targetSdkVersion="22"
ECHO ist ausgeschaltet (OFF).
AndroidIcons.exe [v21-3-2015] running...
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_36_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-ldpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_48_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-mdpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_72_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_72_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-hdpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_96_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-xhdpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_180_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-xxhdpi/icon.png
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_192_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-xxxhdpi/icon.png
C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_ouya_AndroidExtras.png is missing (732x412 size)
the Ouya icon is not important, if you dont want to support the console
copy C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/icon_ouya_AndroidExtras.png to C:/Users/Nabz/Desktop/GLBasicProjects/GLBasic/reggieWorldMRewrite/distribute/Android/res/drawable-xhdpi/ouya_icon.png
Checked AdActivity (intersititals):
Does not uses a AdActivity
Android Extras version (SDLActivity.java):
* 2.11.2
Checking Icons Finished...
BUILD STAGE 2: Start compiler (android.bat)
SDK=Q:\Compiler\platform\android\bin\..\android-sdk-windows
Updated project.properties
Updated local.properties
Updated file C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\build.xml
Updated file C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\proguard-project.txt
Updated and renamed default.properties to project.properties
Updated local.properties
Added file C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\build.xml
Added file C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\proguard-project.txt
.
BUILD STAGE 3: Build a debug build
Buildfile: C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\build.xml
-set-mode-check:
-set-debug-files:
-check-env:
[checkenv] Android SDK Tools Revision 24.2.0
[checkenv] Installed at Q:\Compiler\platform\android\android-sdk-windows
-setup:
[echo] Project Name: glbasic
[gettype] Project Type: Application
-set-debug-mode:
-debug-obfuscation-check:
-pre-build:
-build-setup:
[getbuildtools] Using latest Build Tools: 21.1.2
[echo] Resolving Build Target for glbasic...
[gettarget] Project Target: Android 5.1.1
[gettarget] API level: 22
[echo] ----------
[echo] Creating output directories if needed...
[mkdir] Created dir: C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\rsObj
[mkdir] Created dir: C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\rsLibs
[echo] ----------
[echo] Resolving Dependencies for glbasic...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency]
[dependency] ------------------
[echo] ----------
[echo] Building Libraries with 'debug'...
[subant] No sub-builds to iterate on
-code-gen:
[mergemanifest] Found Deleted Target File
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
[echo] Handling aidl files...
[aidl] No AIDL files to compile.
[echo] ----------
[echo] Handling RenderScript files...
[echo] ----------
[echo] Handling Resources...
[aapt] Found Deleted Target File
[aapt] Generating resource IDs...
[echo] ----------
[echo] Handling BuildConfig class...
[buildconfig] Generating BuildConfig class.
-pre-compile:
-compile:
[javac] Compiling 30 source files to C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\bin\classes
[javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
[javac] C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\gen\com\.reggieworld\R.java:8: error: illegal '.'
[javac] package com..reggieworld;
[javac] ^
[javac] C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\gen\com\reggieworld\BuildConfig.java:2: error: illegal '.'
[javac] package com..reggieworld;
[javac] ^
[javac] 2 errors
[javac] 3 warnings
BUILD FAILED
Q:\Compiler\platform\android\android-sdk-windows\tools\ant\build.xml:720: The following error occurred while executing this line:
Q:\Compiler\platform\android\android-sdk-windows\tools\ant\build.xml:734: Compile failed; see the compiler error output for details.
Total time: 6 seconds
.
BUILD STAGE 4: Build a release build
[subant] No sub-builds to iterate on
[javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
[javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
[javac] C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\gen\com\.reggieworld\R.java:8: error: illegal '.'
[javac] package com..reggieworld;
[javac] ^
[javac] C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android\gen\com\reggieworld\BuildConfig.java:2: error: illegal '.'
[javac] package com..reggieworld;
[javac] ^
[javac] 2 errors
[javac] 3 warnings
BUILD FAILED
Q:\Compiler\platform\android\android-sdk-windows\tools\ant\build.xml:720: The following error occurred while executing this line:
Q:\Compiler\platform\android\android-sdk-windows\tools\ant\build.xml:734: Compile failed; see the compiler error output for details.
Total time: 1 second
Picked up _JAVA_OPTIONS: -Xms256m -Xmx512m
.
HOW TO INSTALL? Install by invoke this command:
"Q:\Compiler\platform\android\bin\..\android-sdk-windows\platform-tools\adb.exe" install -r "C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android/bin/glbasic-debug.apk"
.
HOW TO SIGN? Sign it by invoke this command:
"Q:\Compiler\platform\android\bin\glb_code_sign.bat" "C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android"
.
Android=C:\Users\Nabz\Desktop\GLBasicProjects\GLBasic\reggieWorldMRewrite\distribute\Android
erfolgreich
_______________________________________
*** Fertig ***
Dauer: 107.7 sek. Zeit: 20:07
Erstellen: 1 erfolgreich.

. Quote from: kanonet on 2015-Aug-21
Dam, instead of going to sleep you guys made me do this:FUNCTION DistanceBoxPoint#: cX# , cY# , cZ# , bXL# , bXR# , bYD# , bYU# , bZF# , bZB#
cX = IIF( cX<bXL, cX-bXL, IIF( cX>bXR, cX-bXR, 0 ) )
cY = IIF( cY<bYD, cY-bYD, IIF( cY>bYU, cY-bYU, 0 ) )
cZ = IIF( cZ<bZF, cZ-bZF, IIF( cZ>bZB, cZ-bZB, 0 ) )
RETURN cX * cX + cY * cY + cZ * cZ
ENDFUNCTION
Same interface as your function and should give the same results, while having obvious advantages. I love the fun of finding algorithms.
// cX = 3DPointX , cY = 3DPointY , cZ = 3DPointZ
// bXL (box left side, the smallest x coordinate of the box ) , bXR ( box right side, the greatest x coordinate of the box)
// bYD (box bottom side, the smallest y coordinate of the box ) , bYU ( box top side, the greatest y coordinate of the box)
// bZF (box front side, the smallest t coordinate of the box ) , bZB ( box back side, the greatest z coordinate of the box)
FUNCTION DistanceBoxPoint#: cX# , cY# , cZ# , bXL# , bXR# , bYD# , bYU# , bZF# , bZB#
LOCAL dist# , dist1# , dist2#
LOCAL distX# , distY# , distZ#
LOCAL boxYU# , boxYD# , boxXL# , boxXR# , checkX# , checkY#
distX = 0 ; distY = 0 ; distZ = 0
FOR i2 = 0 TO 2
IF i2 = 0 // x and z
checkX = cX ; checkY = cZ
boxYU = bZB ; boxYD = bZF ; boxXR = bXR ; boxXL = bXL
ENDIF
IF i2 = 1 // x and y
checkX = cX ; checkY = cY
boxYU = bYU ; boxYD = bYD ; boxXR = bXR ; boxXL = bXL
ENDIF
IF i2 = 2 // z and y
checkX = cZ ; checkY = cY
boxYU = bYU ; boxYD = bYD ; boxXR = bZB ; boxXL = bZF
ENDIF
dist1 = 0 ; dist2 = 0
IF checkX < boxXL AND checkY > boxYU // Left top area
dist1 = checkX - boxXL ; dist2 = checkY - boxYU
ENDIF
IF checkX >= boxXL AND checkX <= boxXR AND checkY > boxYU // top area
dist1 = 0 ; dist2 = checkY - boxYU
ENDIF
IF checkX > boxXR AND checkY > boxYU // Right top area
dist1 = checkX - boxXR ; dist2 = checkY - boxYU
ENDIF
IF checkY >= boxYD AND checkY <= boxYU AND checkX > boxXR // right area
dist1 = checkX - boxXR ; dist2 = 0
ENDIF
IF checkX > boxXR AND checkY < boxYD // Right down area
dist1 = checkX - boxXR ; dist2 = checkY - boxYD
ENDIF
IF checkX >= boxXL AND checkX <= boxXR AND checkY < boxYD // down area
dist1 = 0 ; dist2 = checkY - boxYD
ENDIF
IF checkX < boxXL AND checkY < boxYD // Left down area
dist1 = checkX - boxXL ; dist2 = checkY - boxYD
ENDIF
IF checkY >= boxYD AND checkY <= boxYU AND checkX < boxXL // left area
dist1 = checkX - boxXL ; dist2 = 0
ENDIF
IF dist1 <> 0
IF i2 = 0 ; distX = dist1 * dist1 ; ENDIF
IF i2 = 1 ; distX = dist1 * dist1 ; ENDIF
IF i2 = 2 ; distZ = dist1 * dist1 ; ENDIF
ENDIF
IF dist2 <> 0
IF i2 = 0 ; distZ = dist2 * dist2 ; ENDIF
IF i2 = 1 ; distY = dist2 * dist2 ; ENDIF
IF i2 = 2 ; distY = dist2 * dist2 ; ENDIF
ENDIF
NEXT
dist = ( distX + distY + distZ )
// return an not square rooted 3D distance ( if you want the real distance you have to use sqr() on the value this
// function returns )
RETURN dist
ENDFUNCTION
// --------------------------------- //
// Project: genericGlue
// Start: Wednesday, June 10, 2015
// IDE Version: 12.312
TYPE vec3D
x#
y#
z#
ENDTYPE
TYPE object
objID% // could store a previously loaded objects ID
x#
y#
z#
anX#
anY#
anZ#
glueDist#
glueInit%
rootGlueObjAnY#
myOldAny#
glueObjAnY#
glueObject%
ENDTYPE
GLOBAL Objects[] AS object
main()
FUNCTION main:
LOCAL ObjectMax% , finished%
ObjectMax = 10 ; finished = 0
DIM Objects[ObjectMax]
// create some objects
WHILE finished = 0
// you could change glueDist and glueObjAnY before the calculateglue() call for relative movements
calculateGlue()
// draw those objects here
WEND
ENDFUNCTION
FUNCTION calculateGlue:
LOCAL rotate AS vec3D
FOR i = 0 TO ObjectMax - 1 // parse through all objects
IF Objects[i].glueInit = 0 AND Objects[i].glueObject > -1 // initialise gluing
// get glue Dist by using pythagoras on the x and z difference between object A and object B
Objects[i].glueDist = SQR( ( POW( ( Objects[i].x - Objects[Objects[i].glueObject].x ) , 2 ) + POW( ( Objects[i].z - Objects[Objects[i].glueObject].z ) , 2 ) ) )
// get the original Y Angle of the object where object A is glued to ( of object B )
Objects[i].rootGlueObjAnY = Objects[Objects[i].glueObject].anY
// save the original Y Angle of tobject A
Objects[i].myOldAnY = Objects[i].anY
// get the Y Angle between Object A and Object B
Objects[i].GlueObjAnY = 360 - ( ATAN( ( Objects[i].z - Objects[Objects[i].glueObject].z ) , ( Objects[i].x - Objects[Objects[i].glueObject].x ) ) + 180 )
// get the Y difference between object A and object B
Objects[i].yDistRoot = Objects[i].y - Objects[Objects[i].linkEvent].y
// set glue initialisation variable
Objects[i].glueInit = 1
ENDIF
IF Objects[i].glueInit > 0 AND Objects[i].glueObject > -1 // calculate coordinates for a glueing initialised object
// calculate a vector which originates in ( 0 , 0 , 0 ) and has the Objects new X and Z positions as endcoordinates
rotate.x = Objects[i].glueDist * COS( 360 - ( Objects[i].glueObjAnY - ( Objects[i].rootGlueObjAnY - Objects[ Objects[i].glueObject].anY ) ) )
rotate.z = Objects[i].glueDist * SIN( 360 - ( Objects[i].glueObjAnY - ( Objects[i].rootGlueObjAnY - Objects[ Objects[i].glueObject].anY ) ) )
rotate.y = Objects[i].yDistRoot
// rotate the vector, which is stored as rotate ( the call order is important here )
RotateCoordAroundOrigin( 0 , 360 - ( Objects[ Objects[i].glueObject].anY + 180 ) , 0 , rotate )
RotateCoordAroundOrigin( 360 - ( Objects[ Objects[i].glueObject].anZ + 180 ) , 0 , 0 , rotate )
RotateCoordAroundOrigin( 0 , 0 , 360 - ( Objects[ Objects[i].glueObject].anX + 180 ) , rotate )
// add the rotated vector to the real origin ( the real origin is at the coordinates of object B )
Objects[i].x = Objects[Objects[i].glueObject].x + rotate.x
Objects[i].z = Objects[Objects[i].glueObject].z + rotate.z
Objects[i].y = Objects[Objects[i].glueObject].y + rotate.y
// finally also change X and Z angles of the object
Objects[i].anY = Events[eNr].myOldAnY - ( Events[eNr].rootGlueObjAnY - Events[Events[eNr].glueObject].anY )
Objects[i].anX = Events[Events[eNr].glueObject].anX
Objects[i].anZ = Events[Events[eNr].glueObject].anZ
ENDIF
NEXT
ENDFUNCTION
FUNCTION RotateCoordAroundOrigin: rotx# , roty# , rotz# , point AS coord // point is called by reference
LOCAL result AS vec3D
result = point
IF rotx > 0
result.y = point.y * COS(rotx) - point.z * SIN(rotx) ; result.z = point.y * SIN(rotx) + point.z * COS(rotx)
ENDIF
IF roty > 0
result.x = point.x * COS(roty) + point.z * SIN(roty) ; result.z = point.x * SIN(roty) + point.z * COS(roty)
ENDIF
IF rotz > 0
result.x = point.x * COS(rotz) - point.y * SIN(rotz) ; result.y = point.x * SIN(rotz) + point.y * COS(rotz)
ENDIF
point = result
ENDFUNCTION