mirror of
https://github.com/RuthAndRoth/Ruth2.git
synced 2026-08-14 09:02:22 +00:00
Added new proposal for BOM and Materials applier hud in Manwa Pastorellis folder.
This commit is contained in:
@@ -0,0 +1,237 @@
|
||||
/*
|
||||
BSD 3-Clause License
|
||||
Copyright (c) 2019, Sara Payne (Manwa Pastorelli in virtual worlds)
|
||||
All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
//LinkNumbers
|
||||
list linkSet0;// = [linkBtnEyes0, linkBtnHead0, linkBtnUpper0, linkBtnLower0];
|
||||
list linkSet1;// = [linkBtnEyes1, linkBtnHead1, linkBtnUpper1, linkBtnLower1];
|
||||
list linkSet2;// = [linkBtnEyes2, linkBtnHead2, linkBtnUpper2, linkBtnLower2];
|
||||
list linkSet3;// = [linkBtnEyes3, linkBtnHead3, linkBtnUpper3, linkBtnLower3];
|
||||
list linkSet4;// = [linkBtnEyes4, linkBtnHead4, linkBtnUpper4, linkBtnLower4];
|
||||
list linkSet5;// = [linkBtnEyes5, linkBtnHead5, linkBtnUpper5, linkBtnLower5];
|
||||
list linkSet6;// = [linkBtnEyes6, linkBtnHead6, linkBtnUpper6, linkBtnLower6];
|
||||
list linkSet7;// = [linkBtnEyes7, linkBtnHead7, linkBtnUpper7, linkBtnLower7];
|
||||
list linkSet8;// = [linkBtnEyes8, linkBtnHead8, linkBtnUpper8, linkBtnLower8];
|
||||
|
||||
integer maskCutOff = 0;
|
||||
|
||||
//Debug
|
||||
integer debug = FALSE;
|
||||
|
||||
//CommunicationChannels
|
||||
integer r2chan;
|
||||
integer menuChannel;
|
||||
integer menuChannelListen;
|
||||
integer appID = 20181024; //changes between ruth/roth etc
|
||||
|
||||
//userTouches
|
||||
integer touchedLink; //touched link number
|
||||
vector touchedUV; //position vector of the touched UV
|
||||
|
||||
integer keyapp2chan()
|
||||
{
|
||||
return 0x80000000 | ((integer)("0x"+(string)llGetOwner()) ^ appID);
|
||||
}
|
||||
|
||||
SetupLinkNos()
|
||||
{
|
||||
integer btnApplyAll0; integer btnApplyAll1; integer btnApplyAll2; integer btnApplyAll3; integer btnApplyAll4; integer btnApplyAll5; integer btnApplyAll6; integer btnApplyAll7; integer btnApplyAll8;
|
||||
|
||||
integer btnEyes0; integer btnEyes1; integer btnEyes2; integer btnEyes3; integer btnEyes4; integer btnEyes5; integer btnEyes6; integer btnEyes7; integer btnEyes8;
|
||||
|
||||
integer btnHead0; integer btnHead1; integer btnHead2; integer btnHead3; integer btnHead4; integer btnHead5; integer btnHead6; integer btnHead7; integer btnHead8;
|
||||
|
||||
integer btnUpper0; integer btnUpper1; integer btnUpper2; integer btnUpper3; integer btnUpper4; integer btnUpper5; integer btnUpper6; integer btnUpper7; integer btnUpper8;
|
||||
|
||||
integer btnLower0; integer btnLower1; integer btnLower2; integer btnLower3; integer btnLower4; integer btnLower5; integer btnLower6; integer btnLower7; integer btnLower8;
|
||||
|
||||
integer linkIndex;
|
||||
for (linkIndex = 2; linkIndex <= llGetNumberOfPrims(); linkIndex++)
|
||||
{ //loop through all links assigning link numbers to apropriate vairable names
|
||||
list linkParams = llGetLinkPrimitiveParams(linkIndex, [PRIM_NAME, PRIM_DESC]);
|
||||
string linkName = llList2String(linkParams,0);
|
||||
if (linkName == "BtnApplyAll0") btnApplyAll0 = linkIndex;
|
||||
else if (linkName == "BtnApplyAll1") btnApplyAll1 = linkIndex;
|
||||
else if (linkName == "BtnApplyAll2") btnApplyAll2 = linkIndex;
|
||||
else if (linkName == "BtnApplyAll3") btnApplyAll3 = linkIndex;
|
||||
else if (linkName == "BtnApplyAll4") btnApplyAll4 = linkIndex;
|
||||
else if (linkName == "BtnApplyAll5") btnApplyAll5 = linkIndex;
|
||||
else if (linkName == "BtnApplyAll6") btnApplyAll6 = linkIndex;
|
||||
else if (linkName == "BtnApplyAll7") btnApplyAll7 = linkIndex;
|
||||
else if (linkName == "BtnApplyAll8") btnApplyAll8 = linkIndex;
|
||||
else if (linkName == "BtnEyes0") btnEyes0 = linkIndex;
|
||||
else if (linkName == "BtnEyes1") btnEyes1 = linkIndex;
|
||||
else if (linkName == "BtnEyes2") btnEyes2 = linkIndex;
|
||||
else if (linkName == "BtnEyes3") btnEyes3 = linkIndex;
|
||||
else if (linkName == "BtnEyes4") btnEyes4 = linkIndex;
|
||||
else if (linkName == "BtnEyes5") btnEyes5 = linkIndex;
|
||||
else if (linkName == "BtnEyes6") btnEyes6 = linkIndex;
|
||||
else if (linkName == "BtnEyes7") btnEyes7 = linkIndex;
|
||||
else if (linkName == "BtnEyes8") btnEyes8 = linkIndex;
|
||||
else if (linkName == "BtnHead0") btnHead0 = linkIndex;
|
||||
else if (linkName == "BtnHead1") btnHead1 = linkIndex;
|
||||
else if (linkName == "BtnHead2") btnHead2 = linkIndex;
|
||||
else if (linkName == "BtnHead3") btnHead3 = linkIndex;
|
||||
else if (linkName == "BtnHead4") btnHead4 = linkIndex;
|
||||
else if (linkName == "BtnHead5") btnHead5 = linkIndex;
|
||||
else if (linkName == "BtnHead6") btnHead6 = linkIndex;
|
||||
else if (linkName == "BtnHead7") btnHead7 = linkIndex;
|
||||
else if (linkName == "BtnHead8") btnHead8 = linkIndex;
|
||||
else if (linkName == "BtnUpper0") btnUpper0 = linkIndex;
|
||||
else if (linkName == "BtnUpper1") btnUpper1 = linkIndex;
|
||||
else if (linkName == "BtnUpper2") btnUpper2 = linkIndex;
|
||||
else if (linkName == "BtnUpper3") btnUpper3 = linkIndex;
|
||||
else if (linkName == "BtnUpper4") btnUpper4 = linkIndex;
|
||||
else if (linkName == "BtnUpper5") btnUpper5 = linkIndex;
|
||||
else if (linkName == "BtnUpper6") btnUpper6 = linkIndex;
|
||||
else if (linkName == "BtnUpper7") btnUpper7 = linkIndex;
|
||||
else if (linkName == "BtnUpper8") btnUpper8 = linkIndex;
|
||||
else if (linkName == "BtnLower0") btnLower0 = linkIndex;
|
||||
else if (linkName == "BtnLower1") btnLower1 = linkIndex;
|
||||
else if (linkName == "BtnLower2") btnLower2 = linkIndex;
|
||||
else if (linkName == "BtnLower3") btnLower3 = linkIndex;
|
||||
else if (linkName == "BtnLower4") btnLower4 = linkIndex;
|
||||
else if (linkName == "BtnLower5") btnLower5 = linkIndex;
|
||||
else if (linkName == "BtnLower6") btnLower6 = linkIndex;
|
||||
else if (linkName == "BtnLower7") btnLower7 = linkIndex;
|
||||
else if (linkName == "BtnLower8") btnLower8 = linkIndex;
|
||||
}
|
||||
linkSet0 = [btnEyes0, btnHead0, btnUpper0, btnLower0];
|
||||
linkSet1 = [btnEyes1, btnHead1, btnUpper1, btnLower1];
|
||||
linkSet2 = [btnEyes2, btnHead2, btnUpper2, btnLower2];
|
||||
linkSet3 = [btnEyes3, btnHead3, btnUpper3, btnLower3];
|
||||
linkSet4 = [btnEyes4, btnHead4, btnUpper4, btnLower4];
|
||||
linkSet5 = [btnEyes5, btnHead5, btnUpper5, btnLower5];
|
||||
linkSet6 = [btnEyes6, btnHead6, btnUpper6, btnLower6];
|
||||
linkSet7 = [btnEyes7, btnHead7, btnUpper7, btnLower7];
|
||||
linkSet8 = [btnEyes8, btnHead8, btnUpper8, btnLower8];
|
||||
}
|
||||
|
||||
SendToBody(string messageToBody)
|
||||
{
|
||||
llRegionSay(r2chan, messageToBody);
|
||||
if (debug) llOwnerSay("Debug:SentToBody:Message: " + messageToBody);
|
||||
}
|
||||
|
||||
ApplyAllTextures(integer set)
|
||||
{ //loop through the list of items to send and send the details.
|
||||
if(debug) llOwnerSay("Debug:ApplyAllTextures:SetNumber: " + (string)set);
|
||||
list linksToProcess;
|
||||
if (set == 0) linksToProcess = linkSet0;
|
||||
else if (set == 1) linksToProcess = linkSet1;
|
||||
else if (set == 2) linksToProcess = linkSet2;
|
||||
else if (set == 3) linksToProcess = linkSet3;
|
||||
else if (set == 4) linksToProcess = linkSet4;
|
||||
else if (set == 5) linksToProcess = linkSet5;
|
||||
else if (set == 6) linksToProcess = linkSet6;
|
||||
else if (set == 7) linksToProcess = linkSet7;
|
||||
else if (set == 8) linksToProcess = linkSet8;
|
||||
integer index;
|
||||
for (index = 0; index < llGetListLength(linksToProcess); index++)
|
||||
{ //loop through all links in the list
|
||||
ApplySpecificTexture(llList2Integer(linksToProcess, index));
|
||||
}
|
||||
}
|
||||
|
||||
ApplySpecificTexture(integer linkNumber)
|
||||
{
|
||||
list linkParamList = llGetLinkPrimitiveParams(linkNumber,[PRIM_NAME, PRIM_DESC, PRIM_TEXTURE, 0, PRIM_NORMAL, 0, PRIM_SPECULAR, 0, PRIM_COLOR, 0, PRIM_GLOW, 0]);
|
||||
string primName = llList2String(linkParamList,0);
|
||||
string primDesc = llList2String(linkParamList,1);
|
||||
string primDiffuse;
|
||||
if (primName == "BtnEyes0") primDiffuse = "52cc6bb6-2ee5-e632-d3ad-50197b1dcb8a"; //IMG_USE_BAKED_EYES
|
||||
else if (primName == "BtnHead0") primDiffuse = "5a9f4a74-30f2-821c-b88d-70499d3e7183"; //IMG_USE_BAKED_HEAD
|
||||
else if (primName == "BtnUpper0") primDiffuse = "ae2de45c-d252-50b8-5c6e-19f39ce79317"; //IMG_USE_BAKED_UPPER
|
||||
else if (primName == "BtnLower0") primDiffuse = "24daea5f-0539-cfcf-047f-fbc40b2786ba"; //IMG_USE_BAKED_LOWER
|
||||
else primDiffuse = llList2String(linkParamList,2);
|
||||
string primNormal = llList2String(linkParamList, 6);
|
||||
string primSpecular = llList2String(linkParamList, 10);
|
||||
string primSpecColor = llList2String(linkParamList, 14);
|
||||
string primSpecGloss = llList2String(linkParamList, 15);
|
||||
string primSpecEnvir = llList2String(linkParamList, 16);
|
||||
string primColor = llList2String(linkParamList, 17);
|
||||
string primGlow = llList2String(linkParamList, 18);
|
||||
string messageToBody = "TEXTURE" + "," +
|
||||
primDesc + "," +
|
||||
primDiffuse + "," +
|
||||
primNormal + "," +
|
||||
primSpecular + "," +
|
||||
primSpecColor + "," +
|
||||
primSpecGloss + "," +
|
||||
primSpecEnvir + "," +
|
||||
primColor + "," +
|
||||
primGlow;
|
||||
SendToBody(messageToBody);
|
||||
}
|
||||
|
||||
SetAlphaMode(integer primAlphaMode)
|
||||
{
|
||||
string messageToBody = "ALPHAMODE" + "," + (string)primAlphaMode + "," + (string)maskCutOff;
|
||||
SendToBody(messageToBody);
|
||||
}
|
||||
|
||||
TextBox(string reason)
|
||||
{
|
||||
//add code here
|
||||
}
|
||||
|
||||
default
|
||||
{
|
||||
state_entry()
|
||||
{
|
||||
SetupLinkNos();
|
||||
r2chan = keyapp2chan();
|
||||
}
|
||||
|
||||
touch_start( integer num_detected )
|
||||
{
|
||||
if (llDetectedKey(0) == llGetOwner())
|
||||
{
|
||||
touchedLink = llDetectedLinkNumber(0); //touched link number
|
||||
if (touchedLink != LINK_ROOT)
|
||||
{
|
||||
string btnName = llGetLinkName(touchedLink);
|
||||
if (debug) llOwnerSay("Debug:TouchStart:BtnName: " + btnName);
|
||||
integer length = llStringLength(btnName);
|
||||
string btnType = llGetSubString(btnName, 0, length-2);
|
||||
if (debug) llOwnerSay("Debug:TouchStart:BtnType: " + btnType);
|
||||
if (btnType == "BtnApplyAll")
|
||||
{
|
||||
if (debug) llOwnerSay("Debug:TouchStart:ApplyAll Found");
|
||||
string tail = llGetSubString(btnName, length-1, length-1);
|
||||
if (debug) llOwnerSay("Debug:TouchStart:Tail: " + tail);
|
||||
ApplyAllTextures((integer)tail);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (debug) llOwnerSay("Debug:TouchStart:ApplySingle Found");
|
||||
ApplySpecificTexture(touchedLink);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
The same script can go in all body parts (head, body, feet, hands and eyes)
|
||||
|
||||
This script is backwardsly compatible, so if the new hud is used on an older body it will work just without the extra BOM or materials details.
|
||||
|
||||
In the same way if a hud made for an older version of Ruth is used on a body with this script, that will be detected and applied like the old reciver script did.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 353 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
If you look at the snapshot it will give a clear idea how the hud is supposed to look.
|
||||
|
||||
The principle for how the hud works is exactly the same as the last hud, the difference is in the addition of BOM, apply all and material information.
|
||||
|
||||
Each collum and row has different naming protols.
|
||||
|
||||
All the top row buttons are called "BtnApplyAll" + a number relating the collum number.
|
||||
All the 2nd row buttons are called "BtnEyes" + a number reflecting the collum number.
|
||||
All the 3rd row buttons are called "BtnHead" + a number reflecting the collum number.
|
||||
All the 4th row buttons are called "BtnUpper" + a number reflecting the collum number.
|
||||
All the 5th row buttons are called "BtnLower" + a number reflecting the collum number.
|
||||
|
||||
The collum number for all the Bakes on mesh buttons is "0". So the use Bakes on Mesh button for all items is called "BtnApplyAll0".
|
||||
Reference in New Issue
Block a user