SetLowLODElement: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
 
(7 intermediate revisions by 5 users not shown)
Line 2: Line 2:
{{Server client function}}
{{Server client function}}
This function assigns a low LOD element to an element. The low LOD element is displayed when its associated element is not fully visible. If a low LOD element is assigned to several elements, it will be displayed when any of these elements are not fully visible.
This function assigns a low LOD element to an element. The low LOD element is displayed when its associated element is not fully visible. If a low LOD element is assigned to several elements, it will be displayed when any of these elements are not fully visible.
{{Note|The only valid elements types for assigning LODs with this function are [[Object]] and [[Building]].}}


==Syntax==
==Syntax==
Line 7: Line 9:
bool setLowLODElement ( element theElement, element lowLODElement )
bool setLowLODElement ( element theElement, element lowLODElement )
</syntaxhighlight>  
</syntaxhighlight>  
{{OOP|This function is also a static function underneath the Element class.|[[element]]:setLowLOD}}
{{OOP||[[element]]:setLowLOD|lowLOD|getLowLODElement}}
===Required Arguments===  
===Required Arguments===  
*'''theElement:''' The [[element]] whose low LOD version we want to change.
*'''theElement:''' The [[element]] whose low LOD version we want to change.
Line 20: Line 22:
This example shows how to create and link a normal and low LOD object:
This example shows how to create and link a normal and low LOD object:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
     -- Create an normal object
     -- Create a normal object
     objNormal = createObject ( 3620, x,y,z,0,0,0 )
     local objNormal = createObject ( 3620, x,y,z,0,0,0 )


     -- Create a low LOD object
     -- Create a low LOD object
     objLowLOD = createObject ( 5154, x,y,z,0,0,0,true )
     local objLowLOD = createObject ( 5154, x,y,z,0,0,0,true )


     -- Set the normal object low LOD version
     -- Assign the LOD object with the Normal object
     setLowLODElement ( objNormal, objLowLOD )
     setLowLODElement ( objNormal, objLowLOD )
    -- Set the LOD object's parent to the Normal object so it is destroyed together
    setElementParent( objLowLOD, objNormal )


     -- Set the draw distance for the model we are using for low LOD to maximum
     -- Set the draw distance for the model we are using for low LOD to maximum
Line 55: Line 59:
     -- Attach low LOD object so it moves with the main model
     -- Attach low LOD object so it moves with the main model
     attachElements ( objlowLOD, objMainBit, 0, 0, 0 )
     attachElements ( objlowLOD, objMainBit, 0, 0, 0 )
    -- Set the low LOD object's parent to the main object so it is destroyed together
    setElementParent( objLowLOD, objMainBit )


     -- Set associations so the low LOD model is displayed when the main parts are not full visible
     -- Set associations so the low LOD model is displayed when the main parts are not full visible
Line 68: Line 75:
</section>
</section>
<section name="Clientside" class="client" show="true">
<section name="Clientside" class="client" show="true">
Changing the draw distance for a model has to done on the client:
Changing the draw distance for a model has to be done on the client:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
addEvent("onClientChangeModelLODDistance",true)
addEvent("onClientChangeModelLODDistance",true)

Latest revision as of 11:10, 14 October 2024

This function assigns a low LOD element to an element. The low LOD element is displayed when its associated element is not fully visible. If a low LOD element is assigned to several elements, it will be displayed when any of these elements are not fully visible.


[[{{{image}}}|link=|]] Note: The only valid elements types for assigning LODs with this function are Object and Building.

Syntax

bool setLowLODElement ( element theElement, element lowLODElement )

OOP Syntax Help! I don't understand this!

Method: element:setLowLOD(...)
Variable: .lowLOD
Counterpart: getLowLODElement


Required Arguments

  • theElement: The element whose low LOD version we want to change.
  • lowLODElement : A low LOD element to display when the first element is not fully visible.

Returns

Returns true if the assignment was successful, false otherwise.

Example

Example 1

Click to collapse [-]
Clientside

This example shows how to create and link a normal and low LOD object:

    -- Create a normal object
    local objNormal = createObject ( 3620, x,y,z,0,0,0 )

    -- Create a low LOD object
    local objLowLOD = createObject ( 5154, x,y,z,0,0,0,true )

    -- Assign the LOD object with the Normal object
    setLowLODElement ( objNormal, objLowLOD )
    -- Set the LOD object's parent to the Normal object so it is destroyed together
    setElementParent( objLowLOD, objNormal )

    -- Set the draw distance for the model we are using for low LOD to maximum
    engineSetModelLODDistance ( 5154, 300 )

Example 2

Click to collapse [-]
Serverside

This example shows how to create and link a composite object

    -- Create composite object
    objMainBit = createObject ( 3620, x,y,z )
    objLeftBit = createObject ( 5158, x,y,z )
    objRightBit = createObject ( 5158, x,y,z )
    objDetailBit1 = createObject ( 1337, x,y,z )
    objDetailBit2 = createObject ( 1337, x,y,z )
    objInternalBit = createObject ( 1337, x,y,z )
    attachElements ( objLeftBit, objMainBit, -10, 0, 0 )
    attachElements ( objRightBit, objMainBit, 10, 0, 0 )
    attachElements ( objDetailBit1, objMainBit, 5, 0, 0 )
    attachElements ( objDetailBit2, objLeftBit, 5, 5, 0 )
    attachElements ( objInternalBit, objRightBit, 5, 7, 0 )

    -- Create low LOD object (which represents the whole composite model)
    objlowLOD = createObject ( 5154, x,y,z, 0, 0, 0, true )

    -- Attach low LOD object so it moves with the main model
    attachElements ( objlowLOD, objMainBit, 0, 0, 0 )

    -- Set the low LOD object's parent to the main object so it is destroyed together
    setElementParent( objLowLOD, objMainBit )

    -- Set associations so the low LOD model is displayed when the main parts are not full visible
    setLowLODElement ( objMainBit, objlowLOD )
    setLowLODElement ( objLeftBit, objlowLOD )
    setLowLODElement ( objRightBit, objlowLOD )

    -- Note that the detail and internal parts have not been associated to the low LOD object

    -- Set the draw distance for the model we are using for low LOD to maximum
    triggerClientEvent("onClientChangeModelLODDistance", resourceRoot, 5154, 300 )
Click to collapse [-]
Clientside

Changing the draw distance for a model has to be done on the client:

addEvent("onClientChangeModelLODDistance",true)
addEventHandler("onClientChangeModelLODDistance", resourceRoot,
    function(model,distance)
        engineSetModelLODDistance ( model, distance )
    end
)

Requirements

Minimum server version 1.2
Minimum client version 1.2

Note: Using this feature requires the resource to have the above minimum version declared in the meta.xml <min_mta_version> section. e.g. <min_mta_version server="1.2" client="1.2" />

See Also