Here is an example with code to achieve a round conveyor:
// Include the converyour helper module
fe.load_module("conveyor_helper");
/*
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Spinwheel Demo
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A Spinwheel List with all valid options
Omitted options will use the defaults
*/
// initialize the game list
local spinList = MyGameList();
// Configure spinlist options
// ----------- General List Options -----------
spinList.type = ch.Spinwheel; // OPTIONS: ch.Spinwheel / ch.Linear_Vertical / ch.Linear_Horizontal
spinList.bend.direction = ch.Right; // OPTIONS: ch.Left / ch.Right
spinList.bend.gl_radius = fe.layout.height / 2 -200; // OPTIONS: radius of the spinwheel in pixels
spinList.x = fe.layout.width / 2; // OPTIONS: top left x-coordinate if gamelist is linear or the center x-coordinate if a spinwheel
spinList.y = fe.layout.height / 2; // OPTIONS: top left y-coordinate if gamelist is linear or the center y-coordinate if a spinList
spinList.width = 270; // OPTIONS: linear game list total width in pixels
spinList.height = 0; // OPTIONS: linear list's height in pixels
// ----------- Spinwheel options -----------
spinList.spinwheel.shape = 360; // OPTIONS: shape of the spinwheel arc in degrees eg: 270, 180, 360
spinList.spinwheel.rotate_items = true; // OPTIONS: true / false - Rotate the items along the spinwheel arc
spinList.spinwheel.startDegree = 210; // The degree on a circle to start drawing the spinwheel. From left to right 0= left, 90 = top, 180 = right, 270= bottom
spinList.spinwheel.effects.x = 1.00; // a number that changes the spinwheel algorithm to create cool effects Default is 1
spinList.spinwheel.effects.y = 1.00; // a number that changes the spinList algorithm to create cool effects Default is 1
// ----------- List Item Options -----------
spinList.item.contentTemplate = ch.Artwork; // OPTIONS: ch.Artwork / ch.Text / ch.Artwork_and_Text / ch.Artwork_or_Text / ch.Flyer_and_Artwork
spinList.item.count = 12; // OPTIONS: Total number of gamelist items to display
spinList.item.sizeScaling.low = 1.00; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
spinList.item.sizeScaling.high = 1.00; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
spinList.item.sizeScaling.currentlySelected = 1.6; // OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
spinList.item.alphaScaling.low = 150; // OPTIONS: 0-100 Scaling size percentage to use for the item furthest from the selected item
spinList.item.alphaScaling.high = 230; // OPTIONS: 0-100 Scaling size percentage to use for item closest to the selected item
spinList.item.alphaScaling.currentlySelected = 255;// OPTIONS: 0-100 Scaling size percentage to use for the currently selected item
spinList.item.height = 120; // OPTIONS: Height of each gameList item in pixels before scaling - dynamic with linear vertical lists
spinList.item.width = 270; // OPTIONS: Width of each gameList item in pixels before scaling - dynamic with linear horizontal lists
spinList.item.margin.left = 15; // OPTION: bounding box left margin size for all images and text
spinList.item.margin.right = 15; // OPTION: bounding box right margin size for all images and text
spinList.item.margin.top = 10; // OPTION: bounding box top margin size for all images and text
spinList.item.margin.bottom = 15; // OPTION: bounding box bottom margin size for all images and text
// ----------- List Item Content: borders / backgrounds / gloss / colors -----------
spinList.item.toggle.backgroundColor = false; // if set to "TRUE" the game item background can be colored (use item.normal.color)
spinList.item.toggle.backgroundFile = false; // if set to "TRUE" the game item will use a file as the background (file: item_backgroundFile.png)
spinList.item.toggle.selectedBackgroundColor = true; // if set to "TRUE" the selected game item background can be colored (use item.currentlySelected.color)
spinList.item.toggle.selectedBackgroundFile = false; // if set to "TRUE" the selected game item will use a file as the background (file: item_selectedBackgroundFile.png)
spinList.item.toggle.glossOverlay = false; // if set to "TRUE" will overlay the game item with a gloss file (file: item_glossOverlay.png)
spinList.item.toggle.borderOverlay = false; // if set to "TRUE" will overlay the game item with a boarder file (file: item_borderOverlay.png)
spinList.item.normal.color.red = 128; // OPTIONS: background red color channel 0 - 255
spinList.item.normal.color.green = 0; // OPTIONS: background green color channel 0 - 255
spinList.item.normal.color.blue = 128; // OPTIONS: background blue color channel 0 - 255
spinList.item.currentlySelected.color.red=0; // OPTIONS: background red color channel 0 - 255
spinList.item.currentlySelected.color.green=128; // OPTIONS: background green color channel 0 - 255
spinList.item.currentlySelected.color.blue=128; // OPTIONS: background blue color channel 0 - 255
// ----------- List Item Content: Text -----------
spinList.text.message = "[Title]";
spinList.text.alignment = Align.Centre; // OPTIONS:left/right/center
spinList.text.normal.font = "Arial Black";
spinList.text.normal.size = 16; // OPTIONS: text font size for every gameList item
spinList.text.normal.color.red = 255; // OPTIONS: text font red color channel 0 - 255
spinList.text.normal.color.green = 255; // OPTIONS: text font green color channel 0 - 255
spinList.text.normal.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
spinList.text.currentlySelected.font = "Arial";
spinList.text.currentlySelected.size = 18; // OPTIONS: text font size for every gameList item
spinList.text.currentlySelected.color.red = 128; // OPTIONS: text font red color channel 0 - 255
spinList.text.currentlySelected.color.green = 255; // OPTIONS: text font green color channel 0 - 255
spinList.text.currentlySelected.color.blue = 128; // OPTIONS: text font blue color channel 0 - 255
// ----------- List Item Content: User Defined Artwork -----------
spinList.artwork.type = "wheel"; // OPTIONS: name of the artwork to use for the conveyour
spinList.artwork.type2 = "snap"; // OPTIONS: name of the artwork to use for the conveyour setting "Flyer_and_Artwork"
spinList.artwork.preserveAspect = false; // OPTIONS: true / false
spinList.add_favoriteImage(fe.script_dir + "favorite.png",spinList.item.width -30,0,30,25);
if (spinList.item.contentTemplate == ch.Custom)
{
// Configure custom gameitem
local object = spinList;
local temp = null;
local x = 0
local y = 0
local w = object.item.width
local h = object.item.height
temp = object.add_customGameItemContent("artwork", "snap", x+w*0.40 ,y ,w*0.6 ,h * 0.80 );
temp.preserve_aspect_ratio = object.artwork.preserveAspect;
temp.trigger = Transition.EndNavigation;
temp = object.add_customGameItemContent("text", "[Title]", x, h*0.85, w, h * 0.2);
temp.font = object.text.normal.font;
temp.charsize = object.text.normal.size;
temp.align = object.text.alignment;
temp.set_rgb(object.text.normal.color.red, object.text.normal.color.green, object.text.normal.color.blue);
temp = object.add_customGameItemContent("artwork","wheel", x ,y ,w*0.35 ,h * 0.80 );
temp.preserve_aspect_ratio = object.artwork.preserveAspect;
temp.trigger = Transition.EndNavigation;
object.gi_textFallback = true;
}
// show the spinwheel list
spinList.show()
local w = fe.layout.width
local h = fe.layout.height
// show a video of the game and set the shader
local temp = fe.add_artwork( "snap", w,h, 640,480);
temp.preserve_aspect_ratio = true;
temp.origin_x = 320;
temp.origin_y = 240;
temp.x = w /2;
temp.y = h /2;
temp.trigger = Transition.EndNavigation;
local sh = fe.add_shader( Shader.VertexAndFragment, "shaders/crt.vert", "shaders/crt.frag" );
sh.set_param( "rubyInputSize", 400, 300 );
sh.set_param( "rubyOutputSize", ScreenWidth, ScreenHeight );
sh.set_param( "rubyTextureSize", 320, 240 );
sh.set_texture_param("rubyTexture");
temp.shader = sh;
//add tvframe to the video
temp = fe.add_image("TVframe.png",w,h, 640,480);
temp.preserve_aspect_ratio = true;
temp.origin_x = 320;
temp.origin_y = 240;
temp.x = w /2;
temp.y = h /2;