Skip to content

Instantly share code, notes, and snippets.

@CrackerHax
Last active September 14, 2019 11:21
Show Gist options
  • Save CrackerHax/eb59957a8d1aa587d6f9 to your computer and use it in GitHub Desktop.
Save CrackerHax/eb59957a8d1aa587d6f9 to your computer and use it in GitHub Desktop.
Simple right click menu script for highfidelity.io
// Simple Right Click Menu by Cracker Hax
// declare some arrays
var btn=[];
var txt=[];
// define our menu items
var cmd = ["Menu Item 1","Menu Item 2","Menu Item 3"];
// define button size
var btnH = 20;
var btnW = 120;
// define colors
var black = { red: 0, green:0, blue:0};
var white = { red: 255, green:255, blue:255};
// start tracking mouse events
Controller.mouseMoveEvent.connect(mouseMoveEvent);
Controller.mousePressEvent.connect(mousePressEvent);
Controller.mouseReleaseEvent.connect(mouseReleaseEvent);
// use overlays to make buttons
function makebutton(posx,posy,btntxt)
{
btn[btn.length] = Overlays.addOverlay("image", {
bounds: { x: posx, y: posy, width: btnW, height: btnH},
imageURL: "",
color: white,
alpha: 0
});
txt[txt.length] = Overlays.addOverlay("text", {
x: posx+1, y: posy+1, width: btnW-2, height: btnH-2,
color: white,
backgroundColor: black,
alpha: 1,
topMargin: 0,
leftMargin: 10,
text: btntxt
});
}
// functions for turning the menu on and off
function menuon(posx,posy)
{
for(var i = 0; i < cmd.length; i++)
makebutton(posx+5,posy+btnH*i,cmd[i]);
}
function menuoff()
{
for(var i = 0; i < cmd.length; i++)
{
Overlays.deleteOverlay(btn[i]);
Overlays.deleteOverlay(txt[i]);
}
btn = [];
txt = [];
cmds = [];
}
// our mouse events
function mousePressEvent(event)
{
switch(event.button) {
case 'LEFT':
leftclick(event.x,event.y);
break;
case 'RIGHT':
rightclick(event.x,event.y);
break;
case 'MIDDLE':
middleclick(event.x,event.y);
break;
default:
return;
}
}
function leftclick(x,y)
{
print('left');
}
function rightclick(posx,posy)
{
print('right');
menuon(posx,posy);
}
function middleclick(x,y)
{
print('middle');
}
function mouseReleaseEvent(event) {
var pos = {x:event.x,y:event.y};
var test = Overlays.getOverlayAtPoint(pos);
if(test==txt[0])
print("This is menu item 1");
if(test==txt[1])
print("This is menu item 2");
if(test==txt[2])
print("This is menu item 3");
menuoff();
}
function mouseMoveEvent(event) {
var pos = {x:event.x,y:event.y};
var test = Overlays.getOverlayAtPoint(pos);
if(!test)
return;
for(var i = 0; i < btn.length; i++)
{
if(test == txt[i])
Overlays.editOverlay(txt[i], {backgroundColor: white, color:black} );
else
Overlays.editOverlay(txt[i], {backgroundColor: black, color:white} );
}
}
// exit gracefully and delete our menus if they are still open
Script.scriptEnding.connect(function() {
menuoff()
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment