setObjectTextureGlobal: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<code>([^<]*)\[\[([a-zA-Z][a-zA-Z0-9_]+)\]\]([^<]*)<\/code>" to "<code>$1$2$3</code>")
m (Text replacement - "<code>([^<]*)\[\[([a-zA-Z][a-zA-Z0-9_]+)\]\]([^<]*)<\/code>" to "<code>$1$2$3</code>")
Line 34: Line 34:
|x2= <code>// Set up a persistent texture keeper
|x2= <code>// Set up a persistent texture keeper
player addEventHandler ["Take", {
player addEventHandler ["Take", {
(getObjectTextures player + [[[uniformContainer]] [[player]] [[getVariable]] "texture"])
(getObjectTextures player + [uniformContainer [[player]] [[getVariable]] "texture"])
[[params]] ["_texUniform", "_texInsignia", "_texCustom"];
[[params]] ["_texUniform", "_texInsignia", "_texCustom"];
[[if]] ([[isNil]] "_texCustom") [[exitWith]] {};
[[if]] ([[isNil]] "_texCustom") [[exitWith]] {};

Revision as of 10:31, 13 May 2022

Hover & click on the images for description

Description

Description:
Set the texture of the given selection on all computers in a network session.
Not all objects can be textured this way. See getObjectTextures for supported texture selections.
All textures must have a resolution of 2^x / 2^y (e.g. 16x16, 16x32, 64x256, 512x32, etc). The largest texture size supported by the RV engine is 4096x4096.
Multiplayer:
The effect is JIP compatible.
Do not put global commands in an object's init field : see Multiplayer Scripting - Join In Progress note for the explanation.
Problems:
If executed from a vehicle's init field (going against the above note), execution may happen too early and fail to broadcast over the network and to be JIP compatible.
Groups:
Object Manipulation

Syntax

Syntax:
obj setObjectTextureGlobal [selection, texture]
Parameters:
obj: Object
[selection,texture]: Array
selection: Number
texture: String
Return Value:
Nothing

Examples

Example 1:
player setObjectTextureGlobal [0, "\MyAddon\blue.paa"];
Example 2:
// Set up a persistent texture keeper player addEventHandler ["Take", { (getObjectTextures player + [uniformContainer player getVariable "texture"]) params ["_texUniform", "_texInsignia", "_texCustom"]; if (isNil "_texCustom") exitWith {}; if (_texUniform == _texCustom) exitWith {}; player setObjectTextureGlobal [0, _texCustom]; false }]; // Example: make current uniform persistently blue private _texture = "#(rgb,8,8,3)color(0,0,1,1)"; // blue texture player setObjectTextureGlobal [0, _texture]; // set it on player uniformContainer player setVariable ["texture", _texture, true]; // store it on uniform

Additional Information

See also:
setObjectTexture getObjectTextures setObjectMaterial forceFlagTexture

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Posted on December 29, 2015 - 18:13 (UTC)
Elch2070
In some cases the ".paa" files do not work. Instead you can try ".jpg" files.
Posted on October 24, 2016 - 12:13 (UTC)
Killzone Kid
Sometimes it could be necessary to set default material on an object for the texture to take effect: private _block = createVehicle ["Land_VR_Block_02_F", player getPos [20, getDir player], [], 0, "CAN_COLLIDE"]; _block setObjectMaterialGlobal [0, "\a3\data_f\default.rvmat"]; _block setObjectTextureGlobal [0, "#(rgb,8,8,3)color(1,0,0,1)"]; Courtesy of Larrow