DxDrawLine3D: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
Jaysds1 (talk | contribs)
m No need for the section as this is already a client function.
FileEX (talk | contribs)
m Legacy version
 
(11 intermediate revisions by 8 users not shown)
Line 3: Line 3:
This function draws a 3D line between two points in the 3D world - rendered for '''one''' frame.  This should be used in conjunction with [[onClientRender]] in order to display continuously.
This function draws a 3D line between two points in the 3D world - rendered for '''one''' frame.  This should be used in conjunction with [[onClientRender]] in order to display continuously.


==Syntax==
{{Legacy|legacy/DxDrawLine3D}}
 
{{Updated feature/item|1.5.9|1.5.9|22465|
==Syntax==  
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool dxDrawLine3D ( float startX, float startY, float startZ, float endX, float endY, float endZ, int color[, int width, bool postGUI ] )
bool dxDrawLine3D ( float startX, float startY, float startZ, float endX, float endY, float endZ [, int color = 0xFFFFFFFF, float width = 1.0, string stage = "postfx" ] )
</syntaxhighlight>
</syntaxhighlight>


Line 15: Line 18:
* '''endY:''' The end Y position of the 3D line, representing a coordinate in the GTA world.
* '''endY:''' The end Y position of the 3D line, representing a coordinate in the GTA world.
* '''endZ:''' The end Z position of the 3D line, representing a coordinate in the GTA world.
* '''endZ:''' The end Z position of the 3D line, representing a coordinate in the GTA world.
* '''color:''' An integer of the hex color, produced using [[tocolor]] or 0xAARRGGBB (AA = alpha, RR = red, GG = green, BB = blue).


==Optional Arguments==
==Optional Arguments==
{{OptionalArg}}
{{OptionalArg}}
* '''color:''' An integer of the hex color, produced using [[tocolor]] or 0xAARRGGBB.
* '''width:''' The width/thickness of the line
* '''width:''' The width/thickness of the line
* '''postGUI:''' A bool representing whether the line should be drawn on top of or behind any ingame GUI (rendered by CEGUI).
* '''stage:''' A string representing a stage at which the actual drawcall should happen:
** prefx - Lines are rendered before the color correction. This stage makes lines look natural to SA but colors could be distorted.
** postfx - Lines are rendered after the color correction. This stage conveys a color from the function to a screen without distortions.
** postgui - Lines are rendered after GUI. The line should be drawn on top of or behind any ingame GUI (rendered by CEGUI).


===Returns===
===Returns===
Returns a ''true'' if the operation was successful, ''false'' otherwise.
Returns a ''true'' if the operation was successful, ''false'' otherwise.
}}


==Example==  
==Example==  
Line 30: Line 37:
function makeLineAppear()
function makeLineAppear()
testVehicle = createVehicle ( 411, 0, 0, 5 ) -- Create our test vehicle.
testVehicle = createVehicle ( 411, 0, 0, 5 ) -- Create our test vehicle.
addEventHandler("onClientRender", getRootElement(), createLine)        -- onClientRender keeps the 3D Line visible.
addEventHandler("onClientRender", root, createLine)        -- onClientRender keeps the 3D Line visible.
end
end
function createLine ( )
function createLine ( )
x1, y1, z1 = getElementPosition ( testVehicle )                      -- Get test vehicles position.
x1, y1, z1 = getElementPosition ( testVehicle )                      -- Get test vehicles position.
x2, y2, z2 = getElementPosition ( getLocalPlayer ())                  -- Get local players position.
x2, y2, z2 = getElementPosition ( localPlayer )                  -- Get local players position.
dxDrawLine3D ( x1, y1, z1, x2, y2, z2, tocolor ( 0, 255, 0, 230 ), 2) -- Create 3D Line between test vehicle and local player.
dxDrawLine3D ( x1, y1, z1, x2, y2, z2, tocolor ( 0, 255, 0, 230 ), 2) -- Create 3D Line between test vehicle and local player.
end
end
addCommandHandler("test", makeLineAppear)
addCommandHandler("line", makeLineAppear)
</syntaxhighlight>
</syntaxhighlight>


==See Also==
==See Also==
{{Drawing_functions}}
{{Drawing_functions}}
[[hu:dxDrawLine3D]]

Latest revision as of 12:51, 27 May 2024

This function draws a 3D line between two points in the 3D world - rendered for one frame. This should be used in conjunction with onClientRender in order to display continuously.


This page describes the current implementation. For older versions check legacy version



Syntax

bool dxDrawLine3D ( float startX, float startY, float startZ, float endX, float endY, float endZ [, int color = 0xFFFFFFFF, float width = 1.0, string stage = "postfx" ] )

Required Arguments

  • startX: The start X position of the 3D line, representing a coordinate in the GTA world.
  • startY: The start Y position of the 3D line, representing a coordinate in the GTA world.
  • startZ: The start Z position of the 3D line, representing a coordinate in the GTA world.
  • endX: The end X position of the 3D line, representing a coordinate in the GTA world.
  • endY: The end Y position of the 3D line, representing a coordinate in the GTA world.
  • endZ: The end Z position of the 3D line, representing a coordinate in the GTA world.

Optional Arguments

NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.

  • color: An integer of the hex color, produced using tocolor or 0xAARRGGBB.
  • width: The width/thickness of the line
  • stage: A string representing a stage at which the actual drawcall should happen:
    • prefx - Lines are rendered before the color correction. This stage makes lines look natural to SA but colors could be distorted.
    • postfx - Lines are rendered after the color correction. This stage conveys a color from the function to a screen without distortions.
    • postgui - Lines are rendered after GUI. The line should be drawn on top of or behind any ingame GUI (rendered by CEGUI).

Returns

Returns a true if the operation was successful, false otherwise.

Example

This is a small example of creating 3D Line / "Rope" between vehicle and player.

function makeLineAppear()
	testVehicle = createVehicle ( 411, 0, 0, 5 ) -- Create our test vehicle.
	addEventHandler("onClientRender", root, createLine)        -- onClientRender keeps the 3D Line visible.
end
function createLine ( )
	x1, y1, z1 = getElementPosition ( testVehicle )                       -- Get test vehicles position.
	x2, y2, z2 = getElementPosition ( localPlayer )                  -- Get local players position.
	dxDrawLine3D ( x1, y1, z1, x2, y2, z2, tocolor ( 0, 255, 0, 230 ), 2) -- Create 3D Line between test vehicle and local player.
end
addCommandHandler("line", makeLineAppear)

See Also