entity = handle of Loaded or Created Entity global = True for Global coordinates, False for Local. Optional, defaults to False. |
The Y-coordinate of the entity. If the global flag is set to False then the parent's local coordinate system is used. See dxEntityX() for an overview of Local and Global coordinates. |
; dxEntityX / dxEntityY / dxEntityZ example. ; Escape quits, other keys move or pause the display. Const width = 640, height = 480 Const KEY_ESC = 1, KEY_LEFT = 203, KEY_RIGHT = 205 dxGraphics3D 640, 480 dxAmbientLight 50, 50, 50 Global isMoving = False ; used to pause/resume movement Global count ; how many updates have been done ; Set up a camera, light and three entities... cam = dxCreateCamera() dxPositionEntity cam, 0, 2, -50 dxCameraZoom cam, 4 lt = dxCreateLight() : dxTurnEntity lt, 30, 40, 0 Global oSphere, pCone, cSphere oSphere = dxCreateSphere() dxEntityColor oSphere, 250, 50, 0 ; Orange = Origin, parent of cone pCone = dxCreateCone( 8, True, oSphere) ; will be a parent of small sphere dxScaleEntity pCone, .8, 2.0, .8 dxPositionEntity pCone, 8, 0, 0 dxEntityColor pCone, 255, 255, 0 cSphere = dxCreateSphere( 8, pCone ) ; child of the cone dxEntityColor cSphere, 150, 150, 0 dxScaleEntity cSphere, .4/.8, .4/2.0, .4/.8 ; try commenting out this dxLine dxPositionEntity cSphere, 0, 2, 0 ; above parent ; ... and we are ready run. While Not dxKeyDown( KEY_ESC ) UpdateEverything dxRenderWorld ShowInfo dxFlip Wend End Function UpdateEverything( ) ; Nothing moves relative to its parent, so local coordinates are constant. ; Try uncommenting the dxPositionEntity command to change this. If GetKey() Then isMoving = Not isMoving If isMoving dxTurnEntity oSphere, 0, .5, 0 dxTurnEntity pCone, .2, 0, 0 count = count + 1 a# = count Mod 360 ; dxPositionEntity cSphere, 0, 2 + Sin( a ), 0 ; experiment with this End If End Function Function ShowInfo( ) ; global and local coordinates for all entities Local x$, y$, z$ dxColor 255, 255, 255 dxText 185, 20, "Global" dxText 495, 20, "Local" dxColor 250, 50, 0 dxText 20, 50, "oSphere: " + XYZ( oSphere, True ) dxText 400, 50, XYZ( oSphere, False ) dxColor 255, 255, 0 dxText 20, 75, " pCone: " + XYZ( pCone, True ) dxText 400, 75, XYZ( pCone, False ) dxColor 150, 150, 0 dxText 20, 100, "cSphere: " + XYZ( cSphere, True ) dxText 400, 100, XYZ( cSphere, False ) End Function ; ****************************************************************** ; These two functions just format the dxText display. ; Without them there are too many numbers crowding the screen. Function Round#( x#, m# ) ; returns x rounded to multiple of m If m < 0.0 Then m = -m s# = Sgn( x ) If x < 0.0 Then x = -x diff# = x Mod m If diff < .5 * m Return ( x - diff ) * s Else Return ( m + x - diff ) * s End If End Function Function XYZ$( entity, globalFlag ) ex# = Round( dxEntityX( entity, globalFlag ), .001 ) ey# = Round( dxEntityY( entity, globalFlag ), .001 ) ez# = Round( dxEntityZ( entity, globalFlag ), .001 ) Return RSet( ex, 8 ) + RSet( ey, 8 ) + RSet( ez, 8 ) End Function |