Resource:Custom billboards: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
(Undo revision 50133 by Marcin778 (talk))
 
Line 1: Line 1:
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
{{Resource page}}
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
This resource lets You create billboards. Billboard is a quad that always faces the camera.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
In this case billboard Elements are created using dxDrawMaterialLine3d MTA function.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
I have changed the behaviour of the material to act as cylindrical billboards do.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
There are many possibilities to use this resource. But that's all up to you.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
 
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
== Overview ==
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
 
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
It is easy to use, gives a few options to manage billboards.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
 
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
The resource itself adds exported clientside functions:
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
 
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
==Exported functions==
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
====createBillboard====
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
<section name="Client" class="client" show="true">
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
This function creates a shadered materialLine3d billboard.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
<syntaxhighlight lang="lua">billboardElement exports.custom_billboards:createBillboard(float posX,posY,posZ,sizeX,sizeY,int colorR,colorG,colorB,colorA)</syntaxhighlight>
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
===Required Arguments===
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
*'''float posX, posY, posZ:''' Position in world space.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
*'''float sizeX, sizeY:''' Size of the billboard.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
*'''int colorR,colorG,colorB,colorA:''' RGBA color (0 - 255).
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
===Returns===
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
The function returns billboardElement if set successfully, false otherwise.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
</section>
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
 
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
====destroyBillboard====
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
<section name="Client" class="client" show="true">
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
This function destroys a shadered materialLine3d billboard element.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
<syntaxhighlight lang="lua">bool exports.custom_billboards:destroyBillboard(element billboardElement)</syntaxhighlight>
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
===Required Arguments===
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
*'''element billboardElement:''' A previously declared billboard element.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
===Returns===
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
The function returns true if set successfully, false otherwise.
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
</section>
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
 
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
====setBillboardMaterial====
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
<section name="Client" class="client" show="true">
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
This function sets the billboard material (ex. texture).
Extrem liże hazowi dupsko a Barcioo liże cipsko Trinowi
<syntaxhighlight lang="lua">bool exports.custom_billboards:setBillboardMaterial(element billboardElement)</syntaxhighlight>
===Required Arguments===
*'''element billboardElement:''' A previously declared billboard element.
===Returns===
The function returns true if set successfully, false otherwise.
</section>
 
====setBillboardPosition====
<section name="Client" class="client" show="true">
This function sets billboard position.
<syntaxhighlight lang="lua">bool exports.custom_billboards:setbillboardPosition(element billboardElement,float posX,posY,posZ)</syntaxhighlight>
===Required Arguments===
*'''element billboardElement:''' A previously declared billboard element.
*'''float posX, posY, posZ:''' Position in world space.
===Returns===
The function returns true if set successfully, false otherwise.
</section>
 
====setBillboardSize====
<section name="Client" class="client" show="true">
This function sets billboard size.
<syntaxhighlight lang="lua">bool exports.custom_billboards:setBillboardSize(element billboardElement,float size)</syntaxhighlight>
===Required Arguments===
*'''element billboardElement:''' A previously declared billboard element.
*'''float size:''' Size of the billboard.
===Returns===
The function returns true if set successfully, false otherwise.
</section>
 
====setBillboardSizeXY====
<section name="Client" class="client" show="true">
This function sets billboard width and height.
<syntaxhighlight lang="lua">bool exports.custom_billboards:setBillboardSizeXY(element billboardElement,float sizeX,sizeY)</syntaxhighlight>
===Required Arguments===
*'''element billboardElement:''' A previously declared billboard element.
*'''float sizeX,sizeY:''' The width and height of the billboard.
===Returns===
The function returns true if set successfully, false otherwise.
</section>
 
====setBillboardDepthBias====
<section name="Client" class="client" show="true">
On createBillboard the depthBias is set properly (0-1). You can however set other value depending on your needs. To see the results you'll need to set enableDepthBiasScale to true.
<syntaxhighlight lang="lua">bool exports.custom_billboards:setBillboardDepthBias(element billboardElement,float depthBiasValue)</syntaxhighlight>
===Required Arguments===
*'''element billboardElement:''' A previously declared billboard element.
*'''float depthBiasValue:''' depthBias value.
===Returns===
The function returns true if set successfully, false otherwise.
</section>
 
====setBillboardColor====
<section name="Client" class="client" show="true">
This function sets light color values.
<syntaxhighlight lang="lua">bool exports.custom_billboards:setbillboardColor(element billboardElement,float colorR,colorG,colorB,colorA)</syntaxhighlight>
===Required Arguments===
*'''element billboardElement:''' A previously declared billboard element.
*'''float colorR,colorG,colorB,colorA:''' RGBA color (0 - 255).
===Returns===
The function returns true if set successfully, false otherwise.
</section>
 
====setBillboardsDistFade====
<section name="Client" class="client" show="true">
Set the Max distance of the billboard to sync and the distance on which the it starts to fade out.
<syntaxhighlight lang="lua">bool exports.custom_billboards:setBillboardsDistFade(int MaxEffectFade,int MinEffectFade)</syntaxhighlight>
===Required Arguments===
*'''int MaxEffectFade:''' Set the Max distance of the billboard to sync.(Must be greater than MinEffectFade).
*'''int MinEffectFade:''' Set the distance on which the billboard starts to fade out.
===Returns===
The function returns true if set successfully, false otherwise.
</section>
 
====enableDepthBiasScale====
<section name="Client" class="client" show="true">
Standard depthBias for GTASA coronas is about 1 unit, despite the corona scale. This function elables depthBias scaling.
<syntaxhighlight lang="lua">bool exports.custom_billboards:enableDepthBiasScale(bool isDepthScaleEnabled)</syntaxhighlight>
===Required Arguments===
*'''bool isDepthScaleEnabled:''' Enable/disable depthBias scaling.
===Returns===
The function returns true if set successfully, false otherwise.
</section>
 
==Examples==
<syntaxhighlight lang="lua">local tex = dxCreateTexture("hello.jpg")
function addStuff()
for i=1,30 do
for j=1,30 do
exports.custom_billboards:createBillboard(tex,i * 7,j * 7,10,4,4,math.random()*255,math.random()*255,math.random()*255,1*255)
end
end
end
 
addEventHandler("onClientResourceStart", getResourceRootElement( getThisResource()), addStuff)</syntaxhighlight>
This creates 400 lovely billboards near position (0,0,0)
 
<syntaxhighlight lang="lua">local vehicle1 = nil
addEventHandler("onClientVehicleEnter", getRootElement(),
    function(thePlayer, seat)
        if thePlayer == getLocalPlayer() then
            vehicle1 = source
        end
    end
)
 
local tex = dxCreateTexture("hello.jpg")
local carLight = exports.custom_billboards:createBillboard(tex,0,0,0,4,4,math.random()*255,math.random()*255,math.random()*255,1*255)
addEventHandler("onClientPreRender", root, function()
if vehicle1 then
xxx1,yyy1,zzz1 = getElementPosition(vehicle1)
exports.custom_billboards:setBillboardPosition(carLight,xxx1,yyy1,zzz1)
end
end
) </syntaxhighlight>
This creates a billboard and attaches it to a vehicle that the player enters.
 
Of course when you want to use these functions in your resources you have to include
the custom_billboards resource in meta.
 
==See Also==
 
[http://community.multitheftauto.com/index.php?p=resources&s=details&id=10156 Resource download link]
 
[https://www.dropbox.com/s/vvsvua1kmrpjxaz/custom_billboards_test.zip?dl=0 Test resource]

Latest revision as of 18:32, 1 January 2017

This resource lets You create billboards. Billboard is a quad that always faces the camera. In this case billboard Elements are created using dxDrawMaterialLine3d MTA function. I have changed the behaviour of the material to act as cylindrical billboards do. There are many possibilities to use this resource. But that's all up to you.

Overview

It is easy to use, gives a few options to manage billboards.

The resource itself adds exported clientside functions:

Exported functions

createBillboard

Click to collapse [-]
Client

This function creates a shadered materialLine3d billboard.

billboardElement exports.custom_billboards:createBillboard(float posX,posY,posZ,sizeX,sizeY,int colorR,colorG,colorB,colorA)

Required Arguments

  • float posX, posY, posZ: Position in world space.
  • float sizeX, sizeY: Size of the billboard.
  • int colorR,colorG,colorB,colorA: RGBA color (0 - 255).

Returns

The function returns billboardElement if set successfully, false otherwise.

destroyBillboard

Click to collapse [-]
Client

This function destroys a shadered materialLine3d billboard element.

bool exports.custom_billboards:destroyBillboard(element billboardElement)

Required Arguments

  • element billboardElement: A previously declared billboard element.

Returns

The function returns true if set successfully, false otherwise.

setBillboardMaterial

Click to collapse [-]
Client

This function sets the billboard material (ex. texture).

bool exports.custom_billboards:setBillboardMaterial(element billboardElement)

Required Arguments

  • element billboardElement: A previously declared billboard element.

Returns

The function returns true if set successfully, false otherwise.

setBillboardPosition

Click to collapse [-]
Client

This function sets billboard position.

bool exports.custom_billboards:setbillboardPosition(element billboardElement,float posX,posY,posZ)

Required Arguments

  • element billboardElement: A previously declared billboard element.
  • float posX, posY, posZ: Position in world space.

Returns

The function returns true if set successfully, false otherwise.

setBillboardSize

Click to collapse [-]
Client

This function sets billboard size.

bool exports.custom_billboards:setBillboardSize(element billboardElement,float size)

Required Arguments

  • element billboardElement: A previously declared billboard element.
  • float size: Size of the billboard.

Returns

The function returns true if set successfully, false otherwise.

setBillboardSizeXY

Click to collapse [-]
Client

This function sets billboard width and height.

bool exports.custom_billboards:setBillboardSizeXY(element billboardElement,float sizeX,sizeY)

Required Arguments

  • element billboardElement: A previously declared billboard element.
  • float sizeX,sizeY: The width and height of the billboard.

Returns

The function returns true if set successfully, false otherwise.

setBillboardDepthBias

Click to collapse [-]
Client

On createBillboard the depthBias is set properly (0-1). You can however set other value depending on your needs. To see the results you'll need to set enableDepthBiasScale to true.

bool exports.custom_billboards:setBillboardDepthBias(element billboardElement,float depthBiasValue)

Required Arguments

  • element billboardElement: A previously declared billboard element.
  • float depthBiasValue: depthBias value.

Returns

The function returns true if set successfully, false otherwise.

setBillboardColor

Click to collapse [-]
Client

This function sets light color values.

bool exports.custom_billboards:setbillboardColor(element billboardElement,float colorR,colorG,colorB,colorA)

Required Arguments

  • element billboardElement: A previously declared billboard element.
  • float colorR,colorG,colorB,colorA: RGBA color (0 - 255).

Returns

The function returns true if set successfully, false otherwise.

setBillboardsDistFade

Click to collapse [-]
Client

Set the Max distance of the billboard to sync and the distance on which the it starts to fade out.

bool exports.custom_billboards:setBillboardsDistFade(int MaxEffectFade,int MinEffectFade)

Required Arguments

  • int MaxEffectFade: Set the Max distance of the billboard to sync.(Must be greater than MinEffectFade).
  • int MinEffectFade: Set the distance on which the billboard starts to fade out.

Returns

The function returns true if set successfully, false otherwise.

enableDepthBiasScale

Click to collapse [-]
Client

Standard depthBias for GTASA coronas is about 1 unit, despite the corona scale. This function elables depthBias scaling.

bool exports.custom_billboards:enableDepthBiasScale(bool isDepthScaleEnabled)

Required Arguments

  • bool isDepthScaleEnabled: Enable/disable depthBias scaling.

Returns

The function returns true if set successfully, false otherwise.

Examples

local tex = dxCreateTexture("hello.jpg")
function addStuff()
	for i=1,30 do
		for j=1,30 do
			exports.custom_billboards:createBillboard(tex,i * 7,j * 7,10,4,4,math.random()*255,math.random()*255,math.random()*255,1*255) 
		end	
	end
end

addEventHandler("onClientResourceStart", getResourceRootElement( getThisResource()), addStuff)

This creates 400 lovely billboards near position (0,0,0)

local vehicle1 = nil
addEventHandler("onClientVehicleEnter", getRootElement(),
    function(thePlayer, seat)
        if thePlayer == getLocalPlayer() then
            vehicle1 = source
        end
    end
)

local tex = dxCreateTexture("hello.jpg")
local carLight = exports.custom_billboards:createBillboard(tex,0,0,0,4,4,math.random()*255,math.random()*255,math.random()*255,1*255)
addEventHandler("onClientPreRender", root, function()
	if vehicle1 then 
		xxx1,yyy1,zzz1 = getElementPosition(vehicle1)
		exports.custom_billboards:setBillboardPosition(carLight,xxx1,yyy1,zzz1)
	end
end
) 

This creates a billboard and attaches it to a vehicle that the player enters.

Of course when you want to use these functions in your resources you have to include the custom_billboards resource in meta.

See Also

Resource download link

Test resource