Custom Materials for tagging (#6704)

* Allow custom materials for tags

* Fix quickTag

* More betterer
This commit is contained in:
Dedmen Miller 2018-11-29 17:38:42 +01:00 committed by PabstMirror
parent b3e0135e32
commit ba18d5f748
7 changed files with 42 additions and 12 deletions

View File

@ -9,6 +9,7 @@
* 2: Required Item <STRING> * 2: Required Item <STRING>
* 3: Textures Paths <ARRAY> * 3: Textures Paths <ARRAY>
* 4: Icon Path <STRING> (default: "") * 4: Icon Path <STRING> (default: "")
* 5: Material Paths <ARRAY> (optional)
* *
* Return Value: * Return Value:
* Sucessfully Added Tag <BOOL> * Sucessfully Added Tag <BOOL>
@ -24,7 +25,8 @@ params [
["_displayName", "", [""]], ["_displayName", "", [""]],
["_requiredItem", "", [""]], ["_requiredItem", "", [""]],
["_textures", [], [[]]], ["_textures", [], [[]]],
["_icon", "", [""]] ["_icon", "", [""]],
["_materials", [], [[]]]
]; ];
// Verify // Verify
@ -50,4 +52,4 @@ if (_textures isEqualTo []) exitWith {
_identifier = [_identifier] call CBA_fnc_removeWhitespace; _identifier = [_identifier] call CBA_fnc_removeWhitespace;
// Add // Add
[QGVAR(applyCustomTag), [_identifier, _displayName, _requiredItem, _textures, _icon]] call CBA_fnc_globalEventJIP; [QGVAR(applyCustomTag), [_identifier, _displayName, _requiredItem, _textures, _icon, _materials]] call CBA_fnc_globalEventJIP;

View File

@ -19,7 +19,7 @@ params ["_unit"];
private _actions = []; private _actions = [];
{ {
_x params ["_class", "_displayName", "_requiredItem", "_textures", "_icon"]; _x params ["_class", "_displayName", "_requiredItem", "_textures", "_icon", "_materials"];
_actions pushBack [ _actions pushBack [
[ [
@ -27,8 +27,18 @@ private _actions = [];
_displayName, _displayName,
_icon, _icon,
{ {
(_this select 2) params ["_unit", "_class", "_textures"]; (_this select 2) params ["_unit", "_class", "_textures", "", "_materials"];
[_unit, selectRandom _textures] call FUNC(tag);
(
if (count _textures == count _materials) then {
private _textureIndex = floor random count _textures;
[_textures select _textureIndex, _materials select _textureIndex]
} else {
[selectRandom _textures, selectRandom _materials]
}
) params ["_randomTexture", "_randomMaterial"];
[_unit, _randomTexture, _randomMaterial] call FUNC(tag);
_unit setVariable [QGVAR(lastUsedTag), _class]; _unit setVariable [QGVAR(lastUsedTag), _class];
}, },
{ {
@ -36,7 +46,7 @@ private _actions = [];
_requiredItem in (_unit call EFUNC(common,uniqueItems)) _requiredItem in (_unit call EFUNC(common,uniqueItems))
}, },
{}, {},
[_unit, _class, _textures, _requiredItem] [_unit, _class, _textures, _requiredItem, _materials]
] call EFUNC(interact_menu,createAction), ] call EFUNC(interact_menu,createAction),
[], [],
_unit _unit

View File

@ -9,6 +9,7 @@
* 2: Required Item <STRING> * 2: Required Item <STRING>
* 3: Textures Paths <ARRAY> * 3: Textures Paths <ARRAY>
* 4: Icon Path <STRING> (default: "") * 4: Icon Path <STRING> (default: "")
* 5: Material Paths <ARRAY>
* *
* Return Value: * Return Value:
* None * None

View File

@ -44,10 +44,12 @@
_failure = true; _failure = true;
}; };
private _materials = getArray (_x >> "materials");
private _icon = getText (_x >> "icon"); private _icon = getText (_x >> "icon");
if (!_failure) then { if (!_failure) then {
GVAR(cachedTags) pushBack [_class, _displayName, _requiredItem, _textures, _icon]; GVAR(cachedTags) pushBack [_class, _displayName, _requiredItem, _textures, _icon, _materials];
GVAR(cachedRequiredItems) pushBackUnique _requiredItem; GVAR(cachedRequiredItems) pushBackUnique _requiredItem;
}; };
} forEach ("true" configClasses (configFile >> "ACE_Tags")); } forEach ("true" configClasses (configFile >> "ACE_Tags"));

View File

@ -9,6 +9,7 @@
* 2: Colour of the tag (valid colours are black, red, green and blue or full path to custom texture) <STRING> * 2: Colour of the tag (valid colours are black, red, green and blue or full path to custom texture) <STRING>
* 3: Object it should be tied to <OBJECT> * 3: Object it should be tied to <OBJECT>
* 4: Unit that created the tag <OBJECT> * 4: Unit that created the tag <OBJECT>
* 5: Material of the tag <STRING> (Optional)
* *
* Return Value: * Return Value:
* Tag created <BOOL> * Tag created <BOOL>
@ -19,7 +20,7 @@
* Public: No * Public: No
*/ */
params ["_tagPosASL", "_vectorDirAndUp", "_texture", "_object", "_unit"]; params ["_tagPosASL", "_vectorDirAndUp", "_texture", "_object", "_unit", ["_material","",[""]]];
TRACE_5("createTag:",_tagPosASL,_vectorDirAndUp,_texture,_object,_unit); TRACE_5("createTag:",_tagPosASL,_vectorDirAndUp,_texture,_object,_unit);
if (_texture == "") exitWith { if (_texture == "") exitWith {
@ -29,9 +30,10 @@ if (_texture == "") exitWith {
private _tag = createSimpleObject ["UserTexture1m_F", _tagPosASL]; private _tag = createSimpleObject ["UserTexture1m_F", _tagPosASL];
_tag setObjectTextureGlobal [0, _texture]; _tag setObjectTextureGlobal [0, _texture];
if (_material != "") then { _tag setObjectMaterialGlobal [0, _material] };
_tag setVectorDirAndUp _vectorDirAndUp; _tag setVectorDirAndUp _vectorDirAndUp;
// Throw a global event for mision makers // Throw a global event for mission makers
["ace_tagCreated", [_tag, _texture, _object, _unit]] call CBA_fnc_globalEvent; ["ace_tagCreated", [_tag, _texture, _object, _unit]] call CBA_fnc_globalEvent;
if (isNull _object) exitWith {true}; if (isNull _object) exitWith {true};

View File

@ -49,5 +49,16 @@ if (GVAR(quickTag) == 3) then {
// Tag // Tag
if !(_possibleTags isEqualTo []) then { if !(_possibleTags isEqualTo []) then {
private _availableTags = _possibleTags select {(_x select 2) in (_unit call EFUNC(common,uniqueItems))}; private _availableTags = _possibleTags select {(_x select 2) in (_unit call EFUNC(common,uniqueItems))};
[_unit, selectRandom ((selectRandom _availableTags) select 3)] call FUNC(tag); (selectRandom _availableTags) params ["", "", "", "_textures", "", "_materials"];
(
if (count _textures == count _materials) then {
private _textureIndex = floor random count _textures;
[_textures select _textureIndex, _materials select _textureIndex]
} else {
[selectRandom _textures, selectRandom _materials]
}
) params ["_randomTexture", "_randomMaterial"];
[_unit, _randomTexture, _randomMaterial] call FUNC(tag);
}; };

View File

@ -6,6 +6,7 @@
* Arguments: * Arguments:
* 0: Unit <OBJECT> * 0: Unit <OBJECT>
* 1: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) <STRING> * 1: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) <STRING>
* 2: Material of the tag <STRING> (Optional)
* *
* Return Value: * Return Value:
* Sucess <BOOL> * Sucess <BOOL>
@ -18,7 +19,8 @@
params [ params [
["_unit", objNull, [objNull]], ["_unit", objNull, [objNull]],
["_texture", "", [""]] ["_texture", "", [""]],
["_material", "", [""]]
]; ];
if (isNull _unit || {_texture == ""}) exitWith { if (isNull _unit || {_texture == ""}) exitWith {
@ -110,6 +112,6 @@ private _vectorDirAndUp = [_surfaceNormal vectorMultiply -1, _v3];
// Tell the server to create the tag and handle its destruction // Tell the server to create the tag and handle its destruction
[QGVAR(createTag), _this] call CBA_fnc_serverEvent; [QGVAR(createTag), _this] call CBA_fnc_serverEvent;
}, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _texture, _object, _unit], 0.6] call CBA_fnc_waitAndExecute; }, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _texture, _object, _unit, _material], 0.6] call CBA_fnc_waitAndExecute;
true true