void setup() {
size(400, 400);
noCursor(); //Removed Cursor so that the viewer will be able to see most of the fairy
}
void draw() {
//Background
background(0); //Black background, setting is a cave with barely any light
rectMode(CORNERS); //Set rectangles to be created from dimensions from a pair of corners
ellipseMode(CORNERS); //Set ellipses to be created from dimensions from a pair of corners of the ellipse bounding box
noStroke(); //No strokes for most shapes
frameRate(60);
//DRAGON***********************************
//Left Wing
//Bottom
fill(222+mouseY/10,198+mouseY/10,170+mouseY/10); //Goes from a dark beige to a lighter one with mouse Y value
triangle(160,200-(mouseY/30),0,(260-(mouseY/20))-(mouseY/30),0,(300-(mouseY/40))-(mouseY/33)); //Triangle shifts to expand with mouse X value. Overlaps with MIDDLE
//Middle
fill(202+mouseY/10,178+mouseY/10,150+mouseY/10); //Goes from a dark beige to a lighter one with mouse Y value
triangle(160,200-(mouseY/33),0,(240-(mouseY/2))-(mouseY/33),0,(280-(mouseY/10))-(mouseY/33)); //Triangle shifts to expand with mouse X value. Overlaps with TOP
//Top
fill(182+mouseY/10,158+mouseY/10,130+mouseY/10); //Goes from a dark beige to a lighter one with mouse Y value
triangle(160,200-(mouseY/33),0,(220-(mouseY/2))-(mouseY/33),0,(260-(mouseY/5))-(mouseY/33)); //Triangle shifts to expand with mouse X value. Overlaps with ARM
//Arm
fill(78+mouseY/10,58+mouseY/10,34+mouseY/10); //Goes from a dark brown to a lighter one with mouse Y value
quad(140,(160-(mouseY/10))-(mouseY/33),160,200-(mouseY/33),0,(240-(mouseY/2))-(mouseY/33),0,(220-(mouseY/2))-(mouseY/33)); //Two coordinates of the quad shift faster than the other two relative to mouse X position to simulate rotation
//Right Wing
//Bottom
fill(222+mouseY/10,198+mouseY/10,170+mouseY/10); //Goes from a dark beige to a lighter one with mouse Y value
triangle(240,200-(mouseY/30),400,(260-(mouseY/20))-(mouseY/30),400,(300-(mouseY/40))-(mouseY/33)); //Triangle shifts to expand with mouse X value. Overlaps with MIDDLE
//Middle
fill(202+mouseY/10,178+mouseY/10,150+mouseY/10); //Goes from a dark beige to a lighter one with mouse Y value
triangle(240,200-(mouseY/33),400,(240-(mouseY/2))-(mouseY/33),400,(280-(mouseY/10))-(mouseY/33)); //Triangle shifts to expand with mouse X value. Overlaps with TOP
//Top
fill(182+mouseY/10,158+mouseY/10,130+mouseY/10); //Goes from a dark beige to a lighter one with mouse Y value
triangle(240,200-(mouseY/33),400,(220-(mouseY/2))-(mouseY/33),400,(260-(mouseY/5))-(mouseY/33)); //Triangle shifts to expand with mouse X value. Overlaps with ARM
//Arm
fill(78+mouseY/10,58+mouseY/10,34+mouseY/10); //Goes from a dark brown to a lighter one with mouse Y value
quad(260,(160-(mouseY/10))-(mouseY/33),400,(220-(mouseY/2))-(mouseY/33),400,(240-(mouseY/2))-(mouseY/33),240,200-(mouseY/33)); //Two coordinates of the quad shift faster than the other two relative to mouse Y position to simulate rotation
/*
All shape coordinates with multiple pairs of brackets are kep seperate to keep
simulated camera movement consistent with other shape changes. In otherwords, although
it would reduce the line length to combine (160+(mouseY/20))+(mouseY/20) into 160+(mouseY/10),
I keep them seperate since the first one would control how the character itself reacts to the
mouse X value while the second reacts to the simulated camera tilt. I kept them seperate in the
case that I might have to change one of them later on.
*/
//Left Leg (the calf of the dragon's leg)
fill(39+mouseY/10,20+mouseY/10,0+mouseY/10); //Goes from a dark brown to a lighter one with mouse Y value
quad(130,340-(mouseY/33),150,350-(mouseY/33),140,400,130,400); //Quad shifts to change slightly with mouse Y value
//left Thigh
fill(78+mouseY/10,58+mouseY/10,34+mouseY/10); //Goes from a dark brown to a lighter one with mouse Y value
quad(140+(mouseY/40),(250+(mouseY/30))-(mouseY/33),170+(mouseY/40),(300+(mouseY/30))-(mouseY/33),120+(mouseY/40),(370+(mouseY/30))-(mouseY/33),100,(300+(mouseY/30))-(mouseY/33)); //Quad shifts to change slightly (simulated rotation outwards) with mouse Y value. Overlaps LEFT LEG
//Right Leg
fill(39+mouseY/10,20+mouseY/10,0+mouseY/10); //Goes from a dark brown to a lighter one with mouse Y value
quad(270,340-(mouseY/33),250,350-(mouseY/33),260,400,270,400); //Quad shifts to change slightly with mouse Y value
//Right Thigh
fill(78+mouseY/10,58+mouseY/10,34+mouseY/10); //Goes from a dark brown to a lighter one with mouse Y value
quad(260-(mouseY/40),(250+(mouseY/30))-(mouseY/33),230-(mouseY/40),(300+(mouseY/30))-(mouseY/33),280-(mouseY/40),(370+(mouseY/30))-(mouseY/33),300,(300+(mouseY/30))-(mouseY/33)); //Quad shifts to change slightly (simulated rotation outwards) with mouse Y value. Overlaps LEFT LEG
//Tail
fill(78,58,34); //Goes from a dark brown to a lighter one with mouse X value
quad(150,(220-(mouseY/10))-(mouseY/33),250,(220-(mouseY/10))-(mouseY/33),220,400,180,400); //Quad shifts to thin slightly with mouse X value
//Body
//The body of the Dragon. As mouseY value increases, it translates upwards and thins slightly. Its colour becomes lighter as mouseY increases.
fill(108+mouseY/10,98+mouseY/10,64+mouseY/10);
quad(200,(30-(mouseY/40))-(mouseY/33),270,(170-(mouseY/40))-(mouseY/33),200,(350-(mouseY/10))-(mouseY/33),130,(170-(mouseY/40))-(mouseY/33));
//Neck
//The neck of the dragon. As mouseY increases, each neck segment translates upward, each going up at a different rate. each segment becomes a lighter shade as mouse Y value increases
//Neck Top. As mouseY value increases, it translates upwards. Its colour becomes lighter as mouseY increases. Overlaps NECK MID
//Moves up at the quickest rate
fill(108+mouseY/10,88+mouseY/10,64+mouseY/10);
quad(200,(10+(mouseY/20))-(mouseY/33),230,(100+(mouseY/20))-(mouseY/33),200,(180+(mouseY/20))-(mouseY/33),170,(100+(mouseY/20))-(mouseY/33));
//Neck Mid. As mouseY value increases, it translates upwards. Its colour becomes lighter as mouseY increases. Overlaps NECK BOTTOM
//Moves up at the second quickest rate
fill(78+mouseY/10,58+mouseY/10,34+mouseY/10);
quad(200,(30-(mouseY/20))-(mouseY/33),240,(120-(mouseY/20))-(mouseY/33),200,(200-(mouseY/20))-(mouseY/33),160,(120-(mouseY/20))-(mouseY/33));
//Neck Bottom. As mouseY value increases, it translates upwards. Its colour becomes lighter as mouseY increases. Overlaps BODY
//Moves up at the slowest rate
fill(58+mouseY/10,38+mouseY/10,14+mouseY/10);
quad(200,(50-(mouseY/15))-(mouseY/33),240,(140-(mouseY/15))-(mouseY/33),200,(220-(mouseY/15))-(mouseY/33),160,(140-(mouseY/15))-(mouseY/33));
//Horns
//As mouse Y increases, the horns are translated upwards. Each horn is made up of an overlapping triangle or quad, each with coordinates that shift to give off the impression of them being viewed at a different angle
//As Mouse Y increases, the colour of the horns lighten
fill(10+mouseY/10);
//Top Left
triangle(180+(mouseY/40),((50+(mouseY/13))-(mouseY/7))-(mouseY/33),150-(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33),160+(mouseY/40),((90+(mouseY/40))-(mouseY/7))-(mouseY/33));
quad(170,((70+(mouseY/20))-(mouseY/7))-(mouseY/33),150-(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33),170,((120+(mouseY/40))-(mouseY/7))-(mouseY/33),190,((90+(mouseY/40))-(mouseY/7))-(mouseY/33));
//Bottom Left
triangle(120+(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33),130,((110)-(mouseY/7))-(mouseY/33),150+(mouseY/40),((110+(mouseY/40))-(mouseY/7))-(mouseY/33));
quad(140+(mouseY/40),((100+(mouseY/40))-(mouseY/7))-(mouseY/33),130,(110-(mouseY/7))-(mouseY/33),150,(140-(mouseY/7))-(mouseY/33),170+(mouseY/40),(120-(mouseY/7))-(mouseY/33));
//Top Right
triangle(220-(mouseY/40),((50+(mouseY/13))-(mouseY/7))-(mouseY/33),240-(mouseY/40),((90+(mouseY/40))-(mouseY/7))-(mouseY/33),250+(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33));
quad(230,((70+(mouseY/20))-(mouseY/7))-(mouseY/33),210,((90+(mouseY/40))-(mouseY/7))-(mouseY/33),230,((120+(mouseY/40))-(mouseY/7))-(mouseY/33),250+(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33));
//Bottom Right
triangle(280-(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33),250-(mouseY/40),((110+(mouseY/40))-(mouseY/7))-(mouseY/33),270,(110-(mouseY/7))-(mouseY/33));
quad(260-(mouseY/40),((100+(mouseY/40))-(mouseY/7))-(mouseY/33),270,(110-(mouseY/7))-(mouseY/33),250,(140-(mouseY/7))-(mouseY/33),230-(mouseY/40),(120-(mouseY/7))-(mouseY/33));
//Jaw
//As mouse Y increases, the Jaw gets longer and the bottom two points of its shape become closer. This simulates it rotating away from the screen.
//As Mouse Y increases, the colour of the jaw lighten
fill(39+mouseY/10,20+mouseY/10,0+mouseY/10);
quad(200,(130-(mouseY/7))-(mouseY/33),240-(mouseY/80),(190-(mouseY/7))-(mouseY/33),200,(230-(mouseY/7))-(mouseY/33),160+(mouseY/80),(190-(mouseY/7))-(mouseY/33));
quad(180,(210-(mouseY/7))-(mouseY/33),220,(210-(mouseY/7))-(mouseY/33),220-(mouseY/40),((260+(mouseY/40))-(mouseY/7))-(mouseY/33),180+(mouseY/40),((260+(mouseY/40))-(mouseY/7))-(mouseY/33));
triangle(180+(mouseY/40),((260+(mouseY/40))-(mouseY/7))-(mouseY/33),220-(mouseY/40),((260+(mouseY/40))-(mouseY/7))-(mouseY/33),200,(270-(mouseY/7))-(mouseY/33));
triangle(190,(260-(mouseY/7))-(mouseY/33),210,(260-(mouseY/7))-(mouseY/33),200,((280-(mouseY/60))-(mouseY/7))-(mouseY/33));
//Fire
/*The fire is composed of two overlapping quads, expanding from a straight line hidden under UPPERHEAD.
This makes the flame shoot come out smoothly from the corners of the dragons mouth. Each coordinate between
the two quads of each stream of flame is moving through a sin function being inputted with the fram count.
To make it look less uniform, I made each matching coordinate move at a different rate and with a different
amplitude by moddifying the input and output of each sin function.
*/
//Right
fill(226,147,54);
quad(220,180-(mouseY/7),(220+(mouseY/20))+sin(2+frameCount/5),((180)+sin(2+frameCount/5))-(mouseY/7),(220+(mouseY/13))+sin(3+frameCount/5),((190)+sin(3+frameCount/5))-(mouseY/7),220,210-(mouseY/7));
quad((220+(mouseY/20))+sin(2+frameCount/5),(180+sin(2+frameCount/5))-(mouseY/7),(220+(mouseY/10))+sin(3+frameCount/5),((180-(mouseY/20))+sin(3+frameCount/5))-(mouseY/7),(220+(mouseY/13))+sin(2+frameCount/5),(190+sin(2+frameCount/5))-(mouseY/7),220,200-(mouseY/7));
//left
fill(226,147,54);
quad(180,180-(mouseY/7),(180-(mouseY/20))+sin(3+frameCount/5),((180)+sin(3+frameCount*.2))-(mouseY/7),(180-(mouseY/13))+sin(2+frameCount/5),((190)+sin(2+frameCount/5))-(mouseY/7),180,210-(mouseY/7));
quad((180-(mouseY/20))+sin(frameCount/5),(180+sin(3+frameCount/5))-(mouseY/7),(180-(mouseY/10))+sin(3+frameCount/5),((180-(mouseY/20))+sin(frameCount/5))-(mouseY/7),(180-(mouseY/13))+sin(2+frameCount/5),(190+sin(2+frameCount/5))-(mouseY/7),180,200-(mouseY/7));
//Inside Jaw
//As mouse Y increases, the inside of the jaw gets longer and the bottom two points of its shape become closer. This simulates it rotating away from the screen.
//As Mouse Y increases, the colour of the inside of the jaw lighten
fill(85+mouseY/10,68+mouseY/10,100+mouseY/10);
quad(180,(200-(mouseY/7))-(mouseY/33),218,(210-(mouseY/7))-(mouseY/33),217-(mouseY/40),((243+(mouseY/20))-(mouseY/7))-(mouseY/33),183+(mouseY/40),((243+(mouseY/20))-(mouseY/7))-(mouseY/33));
//Eyeplaces
//As mouse Y value increases, triangles shift and translate upwards.
//As Mouse Y increases, the colour of the eye places lighten
fill(182+mouseY/10,158+mouseY/10,130+mouseY/10);
quad(150,(140-(mouseY/7))-(mouseY/33),180-(mouseY/40),((210-(mouseY/40))-(mouseY/7))-(mouseY/33),220+(mouseY/40),((210-(mouseY/40))-(mouseY/7))-(mouseY/33),250,(140-(mouseY/7))-(mouseY/33));
//Left
triangle(150,(140-(mouseY/7))-(mouseY/33),150,(160-(mouseY/7))-(mouseY/33),170,(180-(mouseY/7))-(mouseY/33));
//Right
triangle(250,(140-(mouseY/7))-(mouseY/33),250,(160-(mouseY/7))-(mouseY/33),230,(180-(mouseY/7))-(mouseY/33));
//Darkness
// //As Mouse Y increases, the colour of the black becomes more transparent
//This is behind the EYES and the UPPERHEAD so that I can make the eyes visible even when the screen is fully black
fill(0,400-mouseY);
rect(0,0,400,400);
//Eyes
//As Mouse Y increases, the eyes translate upwards
fill(200+mouseY/7,0,0);
//Left
triangle(155,((140-(mouseY/70))-(mouseY/7))-(mouseY/33),160,((160-(mouseY/70))-(mouseY/7))-(mouseY/33),180,((170-(mouseY/70))-(mouseY/7))-(mouseY/33));
//Right
triangle(245,((140-(mouseY/70))-(mouseY/7))-(mouseY/33),240,((160-(mouseY/70))-(mouseY/7))-(mouseY/33),220,((170-(mouseY/70))-(mouseY/7))-(mouseY/33));
//UpperHead
//As Mouse Y increases, the head translate upwards, and each rect coordinates shift to make it look as if its rotating toward the screen
//fades in to brown from black so that while the screen is black from DARKNESS, it can still be in front of it and maintain the illusion that the eyes are the only things visible in front of the DARKNESS
fill(mouseY/5,mouseY/6,mouseY/11);
triangle(200,((80+(mouseY/27))-(mouseY/7))-(mouseY/33),180+(mouseY/40),((91+(mouseY/40))-(mouseY/7))-(mouseY/33),220-(mouseY/40),((91+(mouseY/40))-(mouseY/7))-(mouseY/33));
quad(180+(mouseY/40),((90+(mouseY/40))-(mouseY/7))-(mouseY/33),220-(mouseY/40),((90+(mouseY/40))-(mouseY/7))-(mouseY/33),250,(141-(mouseY/7))-(mouseY/33),150,(141-(mouseY/7))-(mouseY/33));
quad(150,(140-(mouseY/7))-(mouseY/33),250,(140-(mouseY/7))-(mouseY/33),230,((171-(mouseY/40))-(mouseY/7))-(mouseY/33),170,((171-(mouseY/40))-(mouseY/7))-(mouseY/33));
quad(170,((170-(mouseY/40))-(mouseY/7))-(mouseY/33),230,((170-(mouseY/40))-(mouseY/7))-(mouseY/33),220+(mouseY/40),((241-(mouseY/20))-(mouseY/7))-(mouseY/33),180-(mouseY/40),((241-(mouseY/20))-(mouseY/7))-(mouseY/33));
triangle(180-(mouseY/40),((240-(mouseY/20))-(mouseY/7))-(mouseY/33),220+(mouseY/40),((240-(mouseY/20))-(mouseY/7))-(mouseY/33),200,((260-(mouseY/18))-(mouseY/7))-(mouseY/33));
//Nostrils
//Translates upwards with mouse Y value and outwards from the middle of the screen
fill(0);
triangle(185-(mouseY/40),((235-(mouseY/15))-(mouseY/7))-(mouseY/33),195-(mouseY/40),((240-(mouseY/15))-(mouseY/7))-(mouseY/33),195-(mouseY/40),((245-(mouseY/15))-(mouseY/7))-(mouseY/33));
triangle(215+(mouseY/40),((235-(mouseY/15))-(mouseY/7))-(mouseY/33),205+(mouseY/40),((240-(mouseY/15))-(mouseY/7))-(mouseY/33),205+(mouseY/40),((245-(mouseY/15))-(mouseY/7))-(mouseY/33));
//KNIGHT***********************************
//Head
//Triangles and rect shift with mouse Y value to give illusion that the head slowly looks upwards
//HEAD translates upwards as Mouse Y increases
fill(175-(mouseY/10));
ellipse(180, 210+(mouseY/10), 220, 250+(mouseY/10));
rect(180, 210+(mouseY/10), 220, 230+(mouseY/10));
fill(200-(mouseY/10));
rect(180, 210+(mouseY/10), 220, (216+(mouseY/80)+(mouseY/10)));
triangle(200, (205-(mouseY/80))+(mouseY/10), 180, 211+(mouseY/10), 220, 211+(mouseY/10));
triangle(200, (220+(mouseY/40))+(mouseY/10), 180, (215+(mouseY/80))+(mouseY/10), 220, (215+(mouseY/80))+(mouseY/10));
//Neck
//NECK translates upwards as Mouse Y increases
stroke(25-(mouseY/16));
strokeWeight(11);
line(200, 240+(mouseY/8), 200, 270+(mouseY/10));
line(199, 240+(mouseY/8), 199, 270+(mouseY/10));
noStroke();
//Sword
//SWORD translates upwards as Mouse Y increases
//SWORD translates outwards from the middle as Mouse Y increases
//Handguard
fill(170-(mouseY/10));
rect(135-(mouseY/22), 350+(mouseY/80), 175-(mouseY/22), 360+(mouseY/80));
fill(180-(mouseY/10));
rect(135-(mouseY/22), 350+(mouseY/80), 175-(mouseY/22), 357+(mouseY/80));
//Blade
fill(200-(mouseY/10));
rect(145-(mouseY/22), 260+(mouseY/80), 165-(mouseY/22), 350+(mouseY/80));
fill(210-(mouseY/10));
quad(155-(mouseY/22), 250+(mouseY/80), 165-(mouseY/22), 260+(mouseY/80), 155-(mouseY/22), 270+(mouseY/80), 145-(mouseY/22), 260+(mouseY/80));
fill(185-(mouseY/10));
quad(165-(mouseY/22), 260+(mouseY/80), 155-(mouseY/22), 270+(mouseY/80), 155-(mouseY/22), 350+(mouseY/80), 165-(mouseY/22), 350+(mouseY/80));
//Handle
stroke(30-(mouseY/16));
strokeWeight(5);
line(155-(mouseY/22), 360+(mouseY/80), 155-(mouseY/22), 385+(mouseY/80));
noStroke();
//Shine
//SHINE shifts upwards Mouse Y increases
fill(240-(mouseY/10), 100);
quad(145-(mouseY/22), 290+(mouseY/30), 165-(mouseY/22), 280+(mouseY/30), 165-(mouseY/22), 295+(mouseY/40), 145-(mouseY/22), 305+(mouseY/40));
//Shield
//As Mouse Y increases the coordinates of SHIELD shift simulating rotation
//SHIELD translates upwards as Mouse Y increases
//SHIELD translates outwards from the middle as Mouse Y increases
fill(70-(mouseY/10));
quad((225+(mouseY/20))+(mouseY/22), (330-(mouseY/40))+(mouseY/80), (265+(mouseY/40))+(mouseY/22), (340+(mouseY/40))+(mouseY/80), (285-(mouseY/10))+(mouseY/22), (410+(mouseY/20))+(mouseY/80), 215+(mouseY/22), (370-(mouseY/20)+(mouseY/80)));
//Hands
//HANDS shift outwards relative to mouse Y position
//ARMS are just thick lines so that I can control the angle with by moving one set of coordinates
fill(200-(mouseY/10));
//Left
ellipse(145-(mouseY/22), 355+(mouseY/80), 165-(mouseY/22), 375+(mouseY/80));
//Right
ellipse(235+(mouseY/22), 355+(mouseY/80), 255+(mouseY/22), 375+(mouseY/80));
//Forearms
fill(150-(mouseY/10));
//Left
ellipse(140-(mouseY/27), 320+(mouseY/15), 160-(mouseY/27), 370+(mouseY/57));
//Darker Part
fill(125-(mouseY/10));
ellipse(140-(mouseY/27), 320+(mouseY/15), 160-(mouseY/27), 340+(mouseY/15));
//Right
fill(150-(mouseY/10));
ellipse(240+(mouseY/27), 320+(mouseY/15), 260+(mouseY/27), 370+(mouseY/57));
//Darker Part
fill(125-(mouseY/10));
ellipse(240+(mouseY/27), 320+(mouseY/15), 260+(mouseY/27), 340+(mouseY/15));
//Arms
stroke(25-(mouseY/16));
strokeWeight(11);
//Left
line(160, 270+(mouseY/10), 150-(mouseY/26), (330-(mouseY/30))+(mouseY/10));
//Right
line(240, 270+(mouseY/10), 250+(mouseY/26), (330-(mouseY/30))+(mouseY/10));
noStroke();
//Knight Neckguard
//Shifts relative to mouse Y value simulating angle change
//Translates upwards with mouse Y
fill(150-(mouseY/10));
triangle(200, (240+(mouseY/40))+(mouseY/10), 170, 270+(mouseY/10), 230, 270+(mouseY/10));
//Knight Torso
//Shifts relative to mouse Y value simulating angle change
//Translates upwards with mouse Y
//Dark
fill(150-(mouseY/10));
triangle(200, (365+(mouseY/80))+(mouseY/10), 160, 270+(mouseY/10), 240, 270+(mouseY/10));
//Light
fill(175-(mouseY/10));
triangle(200, (250+(mouseY/30))+(mouseY/10), 160, 271+(mouseY/10), 240, 271+(mouseY/10));
triangle(200, (280+(mouseY/30))+(mouseY/10), 160, 270+(mouseY/10), 240, 270+(mouseY/10));
//Legs
//LEGS are just thick lines so that I can control the angle with by moving one set of coordinates
//Left
stroke(25-(mouseY/16));
strokeWeight(11);
line(190, 370+(mouseY/10), 180-(mouseY/40), 400+(mouseY/10));
//Right
line(210, 370+(mouseY/10), 220+(mouseY/40), 400+(mouseY/10));
noStroke();
//Knight Skirt
//Shifts relative to mouse Y value simulating angle change
//Translates upwards with mouse Y
fill(150-(mouseY/10));
triangle(200, (340+(mouseY/40))+(mouseY/10), 170, (370+(mouseY/133))+(mouseY/10), 230, (370+(mouseY/133))+(mouseY/10));
triangle(200, (380+(mouseY/30))+(mouseY/10), 170, (369+(mouseY/133))+(mouseY/10), 230, (369+(mouseY/133))+(mouseY/10));
//Knight Waist
//Shifts relative to mouse Y value simulating angle change
//Translates upwards with mouse Y
fill(175-(mouseY/10));
triangle(200, (335+(mouseY/45))+(mouseY/10), 190, (340+(mouseY/100))+(mouseY/10), 210, (340+(mouseY/100))+(mouseY/10));
rect(190, (339+(mouseY/100))+(mouseY/10), 210, (351+(mouseY/57))+(mouseY/10));
triangle(200, (350+(mouseY/30))+(mouseY/10), 190, (350+(mouseY/57))+(mouseY/10), 210, (350+(mouseY/57))+(mouseY/10));
//Shoulders
//Shifts relative to mouse Y value simulating angle change, the lighter portion of the SHOULDERS do this as well but at a different rate, enhancing the effect
//Translates upwards with mouse Y
//Left
fill(175-(mouseY/10));
ellipse(140, 260+(mouseY/9), 180, (280+(mouseY/100))+(mouseY/9));
//Top Left
fill(200-(mouseY/10));
ellipse(150, 260+(mouseY/9), 170, (267+(mouseY/100))+(mouseY/9));
//Right
fill(175-(mouseY/10));
ellipse(220, 260+(mouseY/9), 260, (280+(mouseY/100))+(mouseY/9));
//Top Right
fill(200-(mouseY/10));
ellipse(230, 260+(mouseY/9), 250, (267+(mouseY/100))+(mouseY/9));
//Fairy
//Fairy follows cursor
//FAIRY's glow uses pmouse in order to give its GLOW some lag
//GLOW is transparent
ellipseMode(CENTER);
fill(127,210,252);
ellipse(mouseX,mouseY,20,20);
//Glow 1
fill(127,210,252,125);
ellipse(pmouseX,pmouseY, 40 + sin(frameCount * .08) * 5, 40 + sin(frameCount * .08) * 5);
//Glow 2
fill(127,210,252,60);
ellipse(pmouseX,pmouseY, 60 + cos(frameCount * .08) * 5, 60 + cos(frameCount * .08) * 5);
//Wings
//wings use sin functions and framCount to flap
//Right
fill(255);
triangle(10+mouseX,-1+mouseY,35+pmouseX,(-11+pmouseY)+2*sin(frameCount/3),25+pmouseX,(2+pmouseY)+2*sin(frameCount/3));
//Left
fill(255);
triangle(-10+mouseX,-1+mouseY,-35+pmouseX,(-11+pmouseY)+2*sin(frameCount/3),-25+pmouseX,(2+pmouseY)+2*sin(frameCount/3));
}