Description
Set the texture of the given selection on all computers in a network session.
Note
- Not all objects can be textured this way. To find out, run getObjectTextures command on an object. Empty array
[] usually indicates it cannot be textured.
- All textures must have a resolution of 2a × 2b (e.g. 16×16, 16×32, 64×256, 512×512, ...). The largest texture size supported by the RV engine is 4096×4096.
- Supported formats: .pac, .paa, .jpg, .jpeg, .ogg, .ogv
Syntax
object setObjectTextureGlobal [selection, texture]
Parameters:
object: Object
selection: Number or Arma 3 v2.10 String - index of the selection. It is defined in the hiddenSelections array in the vehicle's config (starting with 0). If a string is given, it referes to a hiddenSelection name or clan selection instead of an index.
texture: String - path to texture. Since Arma 3 v2.20 using "#reset" would reset to default texture.
Returns: Nothing
Examples
Example 1
player setObjectTextureGlobal [0, "\MyAddon\blue.paa"];
Example 2
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
}];
private _texture = "#(rgb,8,8,3)color(0,0,1,1)";
player setObjectTextureGlobal [0, _texture];
uniformContainer player setVariable ["texture", _texture, true];
Multiplayer
The effect is JIP compatible.
Problems
If executed from an object's init field (which should not be done anyway for Global Effect commands), execution may happen too early and fail to broadcast over the network and to be JIP compatible.
See also
setObjectTexture · getObjectTextures · setObjectMaterial · forceFlagTexture
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
Following Killzone_Kid's note, a sleep after the setObjectMaterialGlobal and before the setObjectTextureGlobal command is sometimes needed to ensure the texture effect is carried out correctly.
private _block = createVehicle ["Land_VR_Block_02_F", player getPos [20, getDir player], [], 0, "CAN_COLLIDE"];
_block setObjectMaterialGlobal [0, "\a3\data_f\default.rvmat"];
sleep 0.01;
_block setObjectTextureGlobal [0, "#(rgb,8,8,3)color(1,0,0,1)"];
Note that you need to run above code in a scheduled environment.