#P3D-Legacy
Explore tagged Tumblr posts
sillyfudgemonkeys · 3 months ago
Text
Thoughts on Joker as an optional boss in P3R
.........................................snrk.
Wow....just....wooooow wowowowowowowooooow. Wow. Woof. Omg. Wow.
"Silly salt incoming?" Yes but in a "At this point I'm not even fucking surprised. Just wow!" type of salt
"Are you mad cause it's Joker/P5 related?" I mean like...yes and no?
"No?" I'm not inherently against him being an optional boss. I'm all for past characters coming back. Is it a biiiiit annoying it seems to be ONLY P5 related? Yeah. But like, that's because it seems to ONLY be P5. If it was P5 IN ADDITION to something else, I really wouldn't bat an eye. Like how I didn't for P3/4MCs in P5R (Sad they drew the line at those two only, but....hey. At least we got SOMETHING)
"Then what's the yes?" Besides weird timeline bullshit, which I'm sure they'll have an explanation (or at this rate I hope so). It's just....
I find it funny.......how the devs want to hide behind.... "keeping the original spirit alive" or some bullshit like that. As a means to tell certain fans why we can't have certain things in this game.
I mean, should I be surprised? They removed key features of the original game despite saying that. Yet still tried to hide behind that narrative. "Oh no it's more like Vanilla P3!....except for the FES stuff WE want still.....oh, and using a lot of P3P's stuff too-" I mean.....still funny they wanna hide behind that narrative. All that considered.
Sorry, that was a side tangent. Joker fight only now. Ok.
I find it funny they wanna hide behind that narrative....and then put Joker, a P5 character, THAT WASN'T IN THE ORIGINAL GAME, into the DLC. Just....huh. Interesting.
Just....didn't think to, you know, put a different character in the game? A legacy one. Maybe P1MC? With the whole Tartarus shared scenario and Nyx scenario? No?
Or maybe Tatsuya/Maya? I mean, P2 and P3 have a lot of overlapping parallels. Greek theme, dual MCs, sun and moon themes to name a few. Orpheus in some mythos being Apollo's child.... A real passing of the torch vibe when it comes to P2 going to P3 tbh.
Oh! Or you know, having them face Labby or Sho! They had them as DLC in P3D, plus it would've been PERFECT! We could've had all 3 P3 themed robo girls in ONE GAME! :D Plus they already have working models for them! They'd just need to update them.
Or......you know. They could've gone with the obvious one? Esp if timeline/space bullshit isn't an issue. One that would've been both a narrative AND mythos driven gut punch. They could've gone with FeMC! :D
"Oh but we can't have her in the game, it'll take up too much time and mone-" It's one model for a boss fight. (ʘ‿ʘ) One. Model. We don't even need to account for her Personas because they already have models. Just one model, for a boss fight, with certain animations tied to that. "But money" oh noooooo a company has to make one model with certain animations for a fight and not a whole story mode? Whatever shall they do? Where will they get the time and money to do one model with fight animations? :( :( :( :( :( (/sarcasm)
"But would fans really like-" Yes. We are asking for crumbs. Literally the bare minimum they could've done.
I'm starting to think that they are allergic to her. Cause why else are they dodging her like Neo dodges bullets? TT0TT
"You ok Silly?" Yeah I'm fine. I'm annoyed. Not even pissed. Just....."yeah this is what I expected" and moved on. But I had a feeling I should make a post about it so I came back. >_> Literally took me a few hours to realize the bs after seeing it drop kjaskfdl My first reaction was "yeah sounds about right" THEN after a few hours I was like "wait a minute....." jklsadjfkal
If anything, the need for Atlus to hire a new PR manager for BOTH Jpn and West is just becoming more apparent. I mean they've needed it for years now but ooof please someone save them. save me TT0TT
Tldr; I don't care Joker is in the game because it's P5/Joker. I'm not against him being in the game. I'm just FOR other things ALSO being in the game. And I find it weird they draw the line at other things but then choose Joker???? So weird. :/
4 notes · View notes
Text
Skyler ☁️ Jazzlyn ⚡
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Name: Skyler Jazzlyn Storm
Aliases: Sky, storm cloud, Jazz, Jazzy, Lyn, Zally, child of Zeus
Birthday: January 1
Age: 16-19 years old
Gender: Non-binary
Pronouns: She/they
Sexuality: Bi-curious
Godly Parent: Zeus (Legacy of Dionysus)
Personality: Quiet, stubborn, rude, aloof, prideful, assertive, serious yet humorous, sarcastic, "clumsy", mean, introverted, temperamental
Physical description: blonde curly hair, greyish-blue eyes (let's pretend my Facelclaim has these eyes alright), light beige skin, 5'10
Weapons: dagger, sword, sais
Power: flight, aerokinesis, audiokinesis, orniokinesis, nephelpkinesis (just got these from the fanon wiki)
Likes/Interests: ballet, ice-skating, painting nails, k-dramas (secretly), snow, crochet, fencing, physical affection and touch
Dislikes: Zeus, rains and storms, the skies, anything that has got to do with Zeus, "physical affection and touch"
Hobbies: ballet dancing, ice-skating, crocheting, fencing, training, sleeping, running
Year rounder or not?: year rounder
Neurpdivergence: ADHD, Dyslexia, Dyspraxia, Autism, Bipolar
Fatal flaw(s): Hubris and Holding grudges (yes she has two fatal flaws)
Trivia
• has slight memory loss
• hates physical affection and touch but yearns for it
• has a necklace that's pendant is a storm cloud that was gifted to her by her mother but never wears it (anymore) because it's associated with Zeus, instead just keeps it in a jewelry box
• faints every so often because of a head injury
• has an allergy to all kinds of nuts
• doesn't want to be associated with Zeus in any way possible
Tumblr media Tumblr media Tumblr media
Jazz's background (S@ MENTIONED)
Jazzlyn's (step) dad used to love her so much but when he found out she wasn't his child, he killed her mother for cheating on him (she was r@p3d by Zeus) and killed Jazzlyn by giving her a nasty head Injury which gave her slight memory loss. Jazzlyn's step dad ended up killing himself and Jazzlyn was only 5 years old. Jazzlyn was dead for a while before being resurrected by these two spirits. She could only remember her name and her necklace (that was gifted to her by her mother). Jazzlyn wasn't easily identified because when she was resurrected, some things went slightly wrong. She isn't fully alive, but isn't fully dead either so she didn't really have any DNA in her blood. She was bouncing around houses for about a year because her foster parents just wanted money till one day, she just ran away. Jazzlyn stumbled into the labyrinth and was there for a while (who knows, 3 years or more). She got out during the lightning thief and was maybe 11 to 13 years old. For the remainder of the time, she was unclaimed. Why would Zeus want to claim the child of his whose parent didn't want him? They weren't even claimed after the battle of Manhattan and was just there at the Hermes Cabin, one of the only ones whose parent hadn't claimed them. Few campers already had some speculation about who her parent was but couldn't really do much because she hadn't been claimed yet. Until then, she ran away from camp again. While Jazzlyn was gone, she was again, put into foster homes and in one of them, hypermania took over her and she was getting aggressive. She also almost killed herself and was put into a mental asylum. She was there a while before escaping and turned up again in the mark of Athena and stayed at camp again until Zeus finally claimed her, only out of some silly ego competition with Poseidon. Now, she remembers only her mother's death. She was manipulated by these random spirits and is bitter and angry.
✦✧✦✧✦✧✦✧✦✧✦✧✦✧✦✧✦✧✦✧✦✧✦✧✦✧
IC will be blue and bold
OOC will be normal
Faceclaim: Sophia Anne Caruso
General tag: do not fear for jazzy is here
1 note · View note
jappawakka · 2 years ago
Text
Working on a 3D recreation of Pokémon Lost Silver in the Pokémon 3D engine https://pokemon3d.net/
Here are some preview screenshots
Tumblr media Tumblr media Tumblr media Tumblr media
It's not playable until the next release (0.59), but that's right around the corner! I'll upload my progress here:
5 notes · View notes
lasclbangkok · 2 years ago
Text
Vipid beta software
Tumblr media
#Vipid beta software install
#Vipid beta software update
#Vipid beta software full
#Vipid beta software software
#Vipid beta software Pc
If you need to download the original ASCA installation package or HD Content, please download from your order history at your reseller’s website, or open a HiFi support ticket with order information requesting a new download. With Wondershare Filmora, there’s a lot you can do. You can also cut out the background noise in the audio, balance the sound with an equalizer, control the speed of the intro, and do more advanced editing. With its extensive tools, you can easily add effects to your video.
#Vipid beta software update
TYPEĪS16 for P3D v3 + Open Beta Update 082919Īctive Sky 2016 for P3D v3 (Compatible with Prepar3D v3.2.3+ through 3.4.22)Īctive Sky 2016 for FSX (Compatible with FSX and FSX:SE) Filmora is a powerful intro maker for YouTube. If you own an ASP4 license, you can use the same license for AS16 for P3D, and vice versa. TYPEĪSXP Installer with latest 082919 Open Beta UpdateĪSXP Installer with SP1 and Update 041619 Please uninstall/reinstall to downgrade or perform a clean installation.
#Vipid beta software full
Please choose your product: Active Sky XP Active Sky for Prepar3D v4 Active Sky 2016 Active Sky Cloud Art Active Sky Next Earlier Legacy Product Active Sky XP ASXP’s updates are provided as full versions that can also be downloaded and installed over the top of your existing installation to update. By default, all Active Sky applications automatically notify you when a new build is available, unless you’ve disabled this message in settings. To set it up, you need to upload the 3-secondintroductory video as an unlisted video, and then select add achannel branding intro on your channels InVideoProgramming page. Version/Build numbers are indicated in your application main screen and can be compared with the Version/Build numbers shown in the downloads page. The intro will automatically start on videos ontheir channel.
#Vipid beta software install
If you’ve already downloaded and installed an Open Beta update which has recently become official, it is not needed to install the same build again. Active Sky Next: Steam Edition is a weather engine developed by Hifi Technologies, which provides an entirely new level of realism to your FSX: Steam Edition experience! With Active Sky Next, you can implement live weather anywhere in the world, create custom weather systems, even program your own thunderstorms and hurricanes!
#Vipid beta software Pc
Active Sky Next, the most widely used weather engine for PC flight simulation, provides an entirely new level of realism to your FSX: Steam Edition experience! Advanced technologies enable incredible levels of accuracy and smoothness. Concurrently, Hifi Tech released an accompanying product: Active Sky Cloud Art. July 2016 saw the release of the latest in a long line of Active Sky products. Active Sky Next for FSX runs on the following operating systems: Windows. It was initially added to our database on. The latest version of Active Sky Next for FSX is currently unknown.
#Vipid beta software software
It's used by tens of thousands of customers worldwide across a wide range of industries.Active Sky Next for FSX is a Shareware software in the category Desktop developed by HiFi Technologies, Inc. It powers FME Desktop and Server software and the solutions of more leading spatial data application vendors than any other technology. Today, FME is the dominant technology for spatial data transformation. It solves more spatial data transformation challenges across more formats than any other solution, making it easier for professionals to solve data interoperability headaches and help their organisations meet their business goals and required standards. FME makes it possible to transform spatial data to use and share. is the maker of FME and the global leader in spatial data transformation technology. Using FME Server you can schedule the workspace you created to automatically run at any time interval, turn it into a self-serve process for others to run whenever they want, or have your workspace always running in real-time.Ībout Safe Software Inc. Design the workflow you want to automate in FME Desktop's drag-and-drop interface and then publish it to FME Server at the push of a button. Its unique, on-the-fly data transformation capabilities offer a flexible, cost-effective approach to meeting the ever-increasing demands and requirements for spatial data access.įME Server works hand-in-hand with FME Desktop. Organizations can use FME Server to more easily collect, process, and distribute both spatial and non-spatial data. Designed to handle large data volumes, FME Server enables efficient data exchange across the widest range of formats. Share up-to-date data exactly where, when, and how people need it. FME is an easy to use, yet immensely powerful spatial data translator and processor.Ībout FME Server. Safe Software, makers of FME, the leading spatial data transformation technology, announced that the latest tested versions of its core technology, is now available in both FME Desktop and FME Server.
Tumblr media
0 notes
dolgelo · 6 years ago
Note
In p5 something like “KJ mobile” appeared on the tv, do you think that’s a reference to mitsuru?
Tumblr media
[ aaaaa in pq naoto jokes on the year difference and i remember there’s a joke on how he kirijo group, in the future, would have eventually invented flying cars. it’s undeniable though that one of main branches of the Group as a whole it’s the electronic department. so much that the Group is often identified mainly with Kirijo Electronics.
BUT!??? i didn’t know there was something like that on the p5 tv??? perhaps in the anime?? i admit i kinda gave up on it a bunch of eps ago... but i played the game and never noticed ??  it could be something like that... although mitsuru is not listed as a cameo, it might as well be a winkywinky to her legacy. NOW I SO WANNA SEE IT aaa
at least p3d gave us what the logo looks like...... now i wonder....  ]
Tumblr media
2 notes · View notes
augmentedrealities2135 · 7 years ago
Video
youtube
Spike's Mega Livery Pack!
Due to many requests it's coming soon: Spike's Mega Livery Pack for Spike's Piper Warrior!
This mega livery pack has 21 new and different liveries to add to the original while still maintaining high frame rates.
As per simmer's suggestions these liveries are based on real, military and fictional paint schemes both with and without wheel fairings giving you a total of 44 Piper Warrior variants!
Countries include: South Africa Brazil Canada CCCP USSR - Svetlana Kapanina edition SU-26 livery Colombia Denmark - Stefan G. Rasmussen tribute edition France Germany India Italy Japan Netherlands Singapore - Singapore Youth Flying Club livery Spain Sweden Switzerland United Kingdom United States of America - R.A. "Bob" Hoover signature edition United States of America - Legacy Aviation Flight Training livery
Coming soon to flight simulator stores.
******************************************************************** WHERE TO BUY Spike's Piper Warrior + Mega Livery Pack: For the P3D V4/V3/V2 and FSX installer version purchase from: https://www.fspilotshop.com/advanced_search_result.php?keywords=prepar3d OR http://secure.simmarket.com/spike-productions-piper-warrior-pa-28-fsx-p3d.phtml OR http://www.flightsimstore.com/product_info.php?products_id=3647
******************************************************************** Join the P3D groups on steam: http://steamcommunity.com/groups/pa28# http://steamcommunity.com/groups/Prepar3DFlightSim
0 notes
bluetealrisesagain · 8 years ago
Text
/* //<>// //<>// TUIO 1.1 Demo for Processing Copyright (c) 2005-2014 Martin Kaltenbrunner <[email protected]>
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Import the cornerstone warp correction library
// import the TUIO library import TUIO.*; import gifAnimation.*; // declare a TuioProcessing client TuioProcessing tuioClient;
import deadpixel.keystone.*;
Keystone ks; CornerPinSurface surface;
// these are some helper variables which are used // to create scalable graphical feedback float cursor_size = 400; float object_size = 60; //the square representing the fiducial float table_size = 900; // size of the feedback float scale_factor = 1; float angle; PFont font;
//FADE INS float fadeinA = 0; float fadeinB = 0; float fadeinC = 0; float fadeinD = 0; float UfadeinA = 0; float UfadeinB = 0; float UfadeinC = 0; float UfadeinD = 0;
float Ufadein1A = 0; float Ufadein1B = 0; float Ufadein1C = 0;
float fadein1A = 0; float fadein1B = 0; float fadein1C = 0;
float Ufadein3A = 0; float Ufadein3B = 0; float Ufadein3C = 0;
float fadein3A = 0; float fadein3B = 0; float fadein3C = 0;
float Ufadein4A = 0; float Ufadein4B = 0; float Ufadein4C = 0;
float fadein4A = 0; float fadein4B = 0; float fadein4C = 0;
float Ufadein5A = 0; float Ufadein5B = 0; float Ufadein5C = 0;
float fadein5A = 0; float fadein5B = 0; float fadein5C = 0; // Timer for hints
float timer= 0;   boolean Point1Hint = false; boolean Point2Hint = false; boolean Point3Hint = false; boolean Point4Hint = false; boolean Point5Hint = false; boolean Point6Hint = false;
//Turn off screen float StandbyTimer = 0; PShape StandbyRect;
//  float = Data type for floating-point numbers, e.g. numbers that have a decimal point.
boolean verbose = false; // print console debug messages boolean callback = true; // updates only after callbacks
/////////////////////////// POINT1 float Point1=0; PShape Point1HintCircle; PImage Point1AImg; PImage Point1BImg; PImage Point1CImg; float P1Mark = 0; PImage P1Marker;
Gif Point1Red;
String Point1ATxt = "Designed by William Burges and consecrated in 1870, the current cathedral is built on the site of at least two previous structures dedicated to Finbarr of Cork The first dated from the 7th century, with works continuing through the 12th century. This building was damaged during the Siege of Cork (1690), and a new structure was built in 1735. " ; String Point1BTxt = "The Current version from 1860 exceeded its initial budget of £15k, bringing the total cost to almost £100. The style of the building is Early French, Burges's favoured period. Burges oversaw all aspects of the design, including the architecture of the building, the statuary, the stained glass and the internal decoration. The result is \"undoubtedly Burges's greatest work in ecclesiastical architecture\"" ; String Point1CTxt = "Noteworthy features of its magnificent interior include stained glass windows depicting scenes from the Old and New Testaments, marble mosaics from the Pyrenees while the the sanctuary ceiling portrays Christ, surrounded by angels. The building contains more than 1,260 sculptures, a particularly ornate pulpit and even a 24-lb cannonball, a legacy of the Siege of Cork in 1690.";
// UpsideDown Point1 float UPoint1;
float UP1Mark = 0; PImage UP1Marker;
Gif Point1Blue;
////////////////////////// POINT2 float Point2=0; PShape Point2HintCircle; PImage Point2AImg; PImage Point2BImg; PImage Point2Grey; float P2G = 0;
float P2Mark = 0; PImage P2Marker;
Gif Point2Red;
String Point2ATxt = "Grand Parade was originally a channel of the River Lee. The original Hiberno-Norse settlement of Cork grew up on its west bank. By 1726, buildings had developed on the east bank, but the river channel remained in place. In a 1774 map, the northern portion of the street between Oliver Plunkett Street and Daunt Square had been reclaimed, but the southern portion was still a dock. Finally, by 1801, the river channel had completely disappeared and the street was fully present. The elevated doors can still be seen today on the buildings as a reminder of the old river." ; String Point2BTxt = "The tram system was built by Cork Electric Tramways and Lighting Company in the 19th century throughout Cork. The ease of access to transport in Cork was detrimental to a boom in the cities infrastructure. The tram lines running through grand parade started in St. Patrick’s Street and ran to Douglas and Black Rock." ;
// UpsideDown Point2 float UPoint2;
float UP2Mark = 0; PImage UP2Marker; Gif Point2Blue;
/////////////////////////////////////POINT3 float Point3=0; PShape Point3HintCircle; PImage Point3AImg; PImage Point3BImg; PImage Point3CImg; float P3Mark= 0; PImage P3Marker; Gif Point3Red;
String Point3ATxt = "Philip de Barry invited the Dominicans to Cork in 1229 and the order built a church called St Mary's of the Isle. Some stones from the medieval church are set into the walls of the present Dominican priory on Pope's Quay. The foundation stone of the present St Mary's was laid in 1832 and on 20 October 1839 the church was officially opened" ; String Point3BTxt = "Built in the first half of the nineteenth century, this church was designed by Cork architect Kearns Deane, and the portico was added by Deane and Woodward. The imposing scale of the building makes it a notable addition to the quayside, which is accentuated by the elevated position of the church" ; String Point3CTxt = "The fine interior is attributed to John Pyne Hurley, the baldacchino is attributed to Scannell of Cork, while the pulpit and high altar were designed by George Goldie and added in the 1880s. This church forms part of an interesting group of Roman Catholic buildings with the related priory buildings to the north." ;
// UpsideDown Point3 float UPoint3;
float UP3Mark= 0; PImage UP3Marker; Gif Point3Blue;
///////////////////////////////POINT4 float Point4=0; PShape Point4HintCircle; PImage Point4AImg; PImage Point4BImg; PImage Point4CImg; PImage Point4Grey; float  P4Mark = 0; PImage P4Marker; float P4G = 0; Gif Point4Red;
String Point4ATxt = "The centre of Cork city is built on marshy islands in the tidal estuary of the river Lee. Channels of the river originally separated these islands, and some of these channels were spanned in the eighteenth century to form the principal streets of Cork city centre. Among these is Saint Patrick's Street." ; String Point4BTxt = "Parts of Patrick Street were extensively damaged during the Irish War of Independence in the \"Burning of Cork\". It followed an ambush by the IRA of a Briitish patrol in the city. The Black and Tans retaliated by setting fire to several buildings in the city. " ; String Point4CTxt = "There was substantial disruption to services and destruction of some tramcars during The Burning of Cork in December 1920. The events which occurred to the driver, John Hurley, conductor Alex Garvey and passengers on tramcar no 3 were recorded in the Cork Examiner:" ; String Point4DTxt = "Passengers by the last tram to St. Luke's Cross, which left the Statue at 9 p.m. on Saturday, had a rather eventful journey. The car had got about 60 or 70 yards beyond Empress Place police barracks when a number of men in police uniform, carrying carbines and accompanied by Auxiliaries in plain clothes, held it up. They ordered all the passengers off at the point of revolvers. Male passengers were somewhat roughly handled and then ordered to line up for search. Some few were inclined to run and a voice rang out: \"I'll shoot anyone who runs.\" All then stopped but some shots were fired in the air while the searches were being conducted. In some cases when the search was completed the person searched was ordered home, getting a bit of a rough send-off. The tramcar was then broken in by the police and a rifle shot was discharged, the smell of powder permeating the air. The tramcar was brought back to the Statue by the driver and conductor who when it neared there were ordered off. It was later set on fire and completely destroyed.";
// UpsideDown Point4 float UPoint4;
Gif Point4Blue;
float  UP4Mark = 0; PImage UP4Marker;
///////////////////////////////////////POINT 5 float Point5=0; PShape Point5HintCircle; PImage Point5AImg; PImage Point5BImg; Gif Point5Red;
float  P5Mark = 0; PImage P5Marker; float P5G = 0;
String Point5ATxt = "The Custom House was built in 1818 and was designed by the architect Abraham Hargrave. 1882 it became the headquarters of the Cork Harbour Commissioners, now known as the Port of Cork Company. Its elegant boardroom, where the meetings of the members of the company are held, was constructed in 1906." ; String Point5BTxt = "It became known as the ‘new’ Custom House. Its main work dealt with inland revenue. In 1882 it became the headquarters of the Cork Harbour Commissioners. The old Custom House in Emmet Place is now part of the complex of buildings which houses the Crawford Municipal Art Gallery." ;
// UpsideDown Point5 float UPoint5;
Gif Point5Blue;
float  UP5Mark = 0; PImage UP5Marker;
PShape rectangle; PShape Lsquare; PShape Rsquare;
PShape TestCircle1; PShape TestCircle2; PShape TestCircle3; PShape Whitespace;
PImage img;
PImage TheMap;
// GIFS Gif BlueStart; Gif RedStart;
float Map = 1; float y = 0;
float g = 0;
// Vars for rotations float UAngle; float Angle;
PGraphics offscreen;
void setup() {  // GUI setup
 size(1050, 750,P3D);
 ks = new Keystone(this);    surface = ks.createCornerPinSurface(1050, 750, 20);
    offscreen = createGraphics(1050, 750, P3D);
 noStroke();  fill(255, 255, 255);
  BlueStart = new Gif(this, "tester.gif"/*"T2SBlue.gif"*/);  BlueStart.loop();
 RedStart = new Gif(this, "tester.gif"/*"T2SRed.gif"*/);  RedStart.loop();
 Point1Blue= new Gif(this, "FBBlue.gif");  Point1Blue.play();
 Point1Red= new Gif(this, "tester.gif"/*"FBRed.gif"*/);  Point1Red.play();
   Point2Red = new Gif(this, "tester.gif" /*"GPred.gif"*/);  Point2Red.play();
 Point2Blue = new Gif(this, "GPblue.gif");  Point2Blue.play();
 Point3Red = new Gif(this, "tester.gif" /*"MCRed.gif"*/);  Point3Red.play();
 Point3Blue = new Gif(this, "MCBlue.gif");  Point3Blue.play();
 Point4Red= new Gif(this, "tester.gif" /*"PSRed.gif"*/);  Point4Red.play();
 Point4Blue = new Gif(this, "PSBlue.gif");  Point4Blue.play();
 Point5Red = new Gif (this, "tester.gif" /*"CHRed.gif"*/);  Point5Red.play();
 Point5Blue = new Gif(this, "CHBlue.gif");  Point5Blue.play();
 rectangle = createShape(RECT,100,300,100,50);  rectangle.setStroke(color(255));  rectangle.setStrokeWeight(4);  rectangle.setFill(color(127)); //<>//
 // periodic updates  if (!callback) {    frameRate(60); //<>//    loop();  }  // or callback updates
 font = createFont("Arial", 18);  scale_factor = height/table_size;
 // height stores the height of the display window that is set in the size() call
 // finally we create an instance of the TuioProcessing client  // since we add "this" class as an argument the TuioProcessing class expects  // an implementation of the TUIO callback methods in this class (see below)  tuioClient  = new TuioProcessing(this);
  offscreen.tint(255, 127);  StandbyRect = createShape(RECT,0,0, displayWidth, displayHeight);  StandbyRect.setFill(color(0,0,0));  StandbyRect.setStroke(false);
 Whitespace = createShape(RECT, 0, 0, displayWidth, displayHeight);  Whitespace.setFill(color(254,197,87));  Whitespace.setStroke(false);
// IMAGES FOR POINT1 Point1AImg = loadImage("Point1AImg.jpg"); Point1BImg = loadImage("Point1BImg.png"); Point1CImg = loadImage("Point1CImg.png");
TheMap = loadImage("Map.png");
// IMAGES FOR POINT2   Point2AImg = loadImage("Point2AImg.png");   Point2BImg = loadImage("Point2AImg.png");
  Point2Grey = loadImage("Grey3.png");
  P2Marker = loadImage("RedMark.png");   UP2Marker= loadImage("BlueMark.png");
//IMAGES FOR POINT3 Point3AImg = loadImage("Point3AImg.png"); Point3BImg = loadImage("Point3BImg.png"); Point3CImg = loadImage("Point3CImg.png");
//IMAGES FOR POINT4 Point4AImg = loadImage("Point4AImg.png"); Point4BImg = loadImage("Point4BImg.png"); Point4CImg = loadImage("Point4CImg.png");
Point4Grey = loadImage("Grey3.png");
 //IMAGES FOR POINT5 Point5AImg = loadImage("Point5AImg.png"); Point5BImg = loadImage("Point5BImg.png");
}
// within the draw method we retrieve an ArrayList of type <TuioObject>, <TuioCursor> or <TuioBlob> // from the TuioProcessing client and then loops over all lists to draw the graphical feedback. void draw() {
 offscreen.beginDraw();  offscreen.background(255);  textFont(font,18*scale_factor);  float obj_size = object_size*scale_factor;  float cur_size = cursor_size*scale_factor;
 ///////////////////////////////////// BEGINNING    if(Map==0){      offscreen.tint(255,255);
   offscreen.image(RedStart, 350, 400);    offscreen.image(BlueStart, 350, 0);    }
 ////////////////////////// CITY MAP    if(Map==1){
     offscreen.shape(Whitespace, 0,0);    offscreen.image(TheMap, 0, 0);   Point2Grey.resize(180, 180);   Point4Grey.resize(180,180);   offscreen.tint(255, 200);   if(P2G ==0){   offscreen.image(Point2Grey, 550, 400); }   if(P4G==0){// grand parade   offscreen.image(Point4Grey, 700, 300);} // st. patricks   ��offscreen.tint(255, 255);  }  //////////////////////////////  Standy mode
 if (StandbyTimer <2500){StandbyTimer += 1;};
 if (StandbyTimer >= 2500){
 }
 ///////////////////////////////////////////////////// HINTS
/*if (timer < 500 &&Map==1){timer += 1;};
  if(timer>=500){     if(Point1Hint == false){      shape(Point1HintCircle, 500, 100);}      if(Point2Hint  == false){    shape(Point2HintCircle, 600, 400);}    if(Point3Hint == false){    shape(Point3HintCircle, 800, 600);}   }  */  if(y==1){    img.resize(300, 150);    image(img, 00, 100);  }
 //////////////////////// POINT MEDIA
 // Point 1 St. Finbarre's  if(Point1==1){    if(fadein1A >= 0){fadein1A += 20;};    offscreen.tint(255, fadein1A);    Point1AImg.resize(300, 150);    offscreen.image(Point1AImg, 0, 100);    textSize(10);    offscreen.text(Point1ATxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    fadeinB = 0;       offscreen.image(Point1Red, 200, -80);
 }
   if(Point1==2){    if(fadein1B >= 0){fadein1B += 20;};    offscreen.tint(255, fadein1B);    Point1BImg.resize(300, 150);    offscreen.image(Point1BImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point1BTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point1Red, 200, -80);  }
    if(Point1==3){    if(fadein1C >= 0){fadein1C += 20;};    offscreen.tint(255, fadein1C);    Point1CImg.resize(300, 150);    offscreen.image(Point1CImg, 0, 100);    textSize(10);    offscreen.text(Point1CTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point1Red,200, -80);  }
 if(UPoint1==1){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein1A >= 0){Ufadein1A += 20;};       offscreen.tint(255, Ufadein1A);    Point1AImg.resize(300,150);   offscreen.image(Point1AImg, 0, 100);    offscreen.fill(#000000, Ufadein1A);    textSize(10);    offscreen.text(Point1ATxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);    UfadeinB = 0;
     offscreen.image(Point1Blue, 200, -80);  }
  if(UPoint1==2){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein1B >= 0){Ufadein1B += 20;};       offscreen.tint(255, Ufadein1B);    Point1BImg.resize(300,150);    offscreen.image(Point1BImg, 0, 100);    offscreen.fill(#000000, Ufadein1B);    offscreen.textSize(10);    offscreen.text(Point1BTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point1Blue, 200, -80);
 }
  if(UPoint1==3){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein1C >= 0){Ufadein1C += 20;};       offscreen.tint(255, Ufadein1C);    Point1CImg.resize(300,150);    offscreen.image(Point1CImg, 0, 100);    offscreen.fill(#000000, Ufadein1C);    offscreen.textSize(10);    offscreen.text(Point1CTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);     offscreen.image(Point1Blue, 200, -80);  }
 /////////////////////////// POINT 2
 if(P2Mark == 1){
  offscreen.image (P2Marker, 550, 400);     P2Marker.resize(180,180);
 }
  if(UP2Mark == 1){
  image (UP2Marker, 550, 400);     UP2Marker.resize(180,180);
 }
 if(Point2==1){
   if (fadeinA >= 0){fadeinA += 20;};  offscreen.tint(255, fadeinA);  Point2AImg.resize(300, 150);  offscreen.image(Point2AImg, 0, 100);  offscreen.fill(#000000, fadeinA);  offscreen.textSize(10);  offscreen.text( Point2ATxt, 10, 300, 300, 150);  offscreen.fill(0, 0, 0);  offscreen.tint(255, 255);  fadeinB=0; offscreen.image(Point2Red, 300, 70);  }
 if(Point2==2){
   if (fadeinB >= 0){fadeinB += 20;};       offscreen.tint(255, fadeinB);    Point2BImg.resize(300, 150);   offscreen.image(Point2BImg, 0, 100);     offscreen.fill(#000000, fadeinB);   offscreen.textSize(10);   offscreen.text(Point2BTxt, 10, 300, 300, 300) ;   offscreen.tint(255, 255);   offscreen.image(Point2Red, 300, 70); }
/////////////////////////////////// UPSIDE DOWN POINT 2  if(UPoint2==1){    offscreen.image(Point2Blue, 300, 70);
    offscreen.translate(1300,700);      offscreen.rotate(radians(180));    if (UfadeinA >= 0){UfadeinA += 20;};  offscreen.tint(255, UfadeinA);  Point2AImg.resize(300, 150);  offscreen.image(Point2AImg, -50, 100);  offscreen.fill(#000000, UfadeinA);  offscreen.textSize(10);  offscreen.text(Point2ATxt, -50, 300, 300, 150);  offscreen.fill(0, 0, 0);  offscreen.tint(255, 255);  UfadeinB=0;
  offscreen.rotate(radians(-180));
    offscreen.translate(-1300,-700);
 }
 if(UPoint2==2){
    offscreen.translate(1300,700);      offscreen.rotate(radians(180));    if (UfadeinB >= 0){UfadeinB += 20;};       offscreen.tint(255, UfadeinB);    Point2BImg.resize(300, 150);   offscreen.image(Point2BImg, -50, 100);     offscreen.fill(#000000, UfadeinB);   offscreen.textSize(10);   offscreen.text(Point2BTxt, -50, 300, 300, 300) ;   offscreen.tint(255, 255);
     offscreen.rotate(radians(-180));     offscreen.translate(-1300,-700);        offscreen.image(Point2Blue, 300, 70); } ///////////////////// Point 3
//St. Mary's
 if(Point3==1){    if(fadein3A >= 0){fadein3A += 20;};    offscreen.tint(255, fadein3A);    Point3AImg.resize(300, 150);    offscreen.image(Point3AImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point3ATxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    fadein3B = 0;       offscreen.image(Point3Red, 530, 100);
 }
   if(Point3==2){    if(fadein3B >= 0){fadein3B += 20;};    offscreen.tint(255, fadein3B);    Point3BImg.resize(300, 150);    offscreen.image(Point3BImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point3BTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    offscreen.image(Point3Red,   530, 100);  }
    if(Point3==3){    if(fadein3C >= 0){fadein3C += 20;};    offscreen.tint(255, fadein3C);    Point3CImg.resize(300, 150);    offscreen.image(Point3CImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point3CTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    offscreen.image(Point3Red,  530, 100);  }
 if(UPoint3==1){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein3A >= 0){Ufadein3A += 20;};       offscreen.tint(255, Ufadein3A);    Point3AImg.resize(300,150);    offscreen.image(Point3AImg, 0, 100);    offscreen.fill(#000000, Ufadein3A);    offscreen.textSize(10);    offscreen.text(Point3ATxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);    Ufadein3B = 0;
     offscreen.image(Point3Blue,  530, 100);  }
  if(UPoint3==2){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein3B >= 0){Ufadein3B += 20;};       offscreen.tint(255, Ufadein3B);    Point3BImg.resize(300,150);    offscreen.image(Point3BImg, 0, 100);    offscreen.fill(#000000, Ufadein3B);    offscreen.textSize(10);    offscreen.text(Point3BTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point3Blue,  530, 100);
 }
  if(UPoint3==3){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein3C >= 0){Ufadein3C += 20;};       offscreen.tint(255, Ufadein3C);    Point3CImg.resize(300,150);    offscreen.image(Point3CImg, 0, 100);    offscreen.fill(#000000, Ufadein3C);    offscreen.textSize(10);    offscreen.text(Point3CTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);     offscreen.image(Point3Blue, 530, 100);  }
///////////////////// Point 5
  offscreen.tint(255,100); offscreen.image(Point5Red, 350, 450);
offscreen.tint(255,255);
// Point 4 CUSTOM HOUSE  if(Point5==1){    if(fadein5A >= 0){fadein5A += 20;};    offscreen.tint(255, fadein5A);    Point5AImg.resize(300, 150);    offscreen.image(Point5AImg, 0, 100);   offscreen.textSize(10);    offscreen.text(Point5ATxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    fadein5B = 0;  
 }
   if(Point5==2){    if(fadein5B >= 0){fadein5B += 20;};    offscreen.tint(255, fadein5B);    Point5BImg.resize(300, 150);    offscreen.image(Point5BImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point5BTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point5Red,350, 450);  }
 if(UPoint5==1){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein5A >= 0){Ufadein5A += 20;};       offscreen.tint(255, Ufadein5A);    Point5AImg.resize(300,150);    offscreen.image(Point5AImg, 0, 100);    offscreen.fill(#000000, Ufadein5A);    offscreen.textSize(10);    offscreen.text(Point5ATxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);    Ufadein5B = 0;
     offscreen.image(Point5Blue, 350, 450);  }
  if(UPoint5==2){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein5B >= 0){Ufadein5B += 20;};       offscreen.tint(255, Ufadein5B);    Point4BImg.resize(300,150);    offscreen.image(Point5BImg, 0, 100);    offscreen.fill(#000000, Ufadein5B);    offscreen.textSize(10);    offscreen.text(Point4BTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point5Blue, 350, 450);
 }
///////////////////// Point 4
  offscreen.tint(255,100);
   offscreen.image(Point4Red, 400, 240);
offscreen.tint(255,255);
// Point 4 SAINT PATRICKS  if(Point4==1){    if(fadein4A >= 0){fadein4A += 20;};    offscreen.tint(255, fadein4A);    Point4AImg.resize(300, 150);    offscreen.image(Point4AImg, 0, 100);   offscreen.textSize(10);    offscreen.text(Point4ATxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    fadeinB = 0;  
   offscreen.image(Point4Red, 400, 240);  }
   if(Point4==2){    if(fadein4B >= 0){fadein4B += 20;};    offscreen.tint(255, fadein4B);    Point4BImg.resize(300, 150);    offscreen.image(Point4BImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point4BTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point4Red, 400, 240);  }
    if(Point4==3){    if(fadein4C >= 0){fadein4C += 20;};    offscreen.tint(255, fadein4C);    Point4CImg.resize(300, 150);    offscreen.image(Point4CImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point4CTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point4Red, 400, 240);  }
 if(UPoint4==1){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein4A >= 0){Ufadein4A += 20;};       offscreen.tint(255, Ufadein4A);    Point4AImg.resize(300,150);    offscreen.image(Point4AImg, 0, 100);    offscreen.fill(#000000, Ufadein4A);    offscreen.textSize(10);    offscreen.text(Point4ATxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);    Ufadein4B = 0;
     offscreen.image(Point4Blue, 400, 240);  }
  if(UPoint4==2){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein4B >= 0){Ufadein4B += 20;};       offscreen.tint(255, Ufadein4B);    Point4BImg.resize(300,150);    offscreen.image(Point4BImg, 0, 100);    offscreen.fill(#000000, Ufadein4B);    offscreen.textSize(10);    offscreen.text(Point4BTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point4Blue, 400, 240);
 }
  if(UPoint4==3){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein4C >= 0){Ufadein4C += 20;};       offscreen.tint(255, Ufadein4C);    Point4CImg.resize(300,150);    offscreen.image(Point4CImg, 0, 100);    offscreen.fill(#000000, Ufadein4C);    offscreen.textSize(10);    offscreen.text(Point4CTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);     offscreen.image(Point4Blue, 400, 240);  }
 ArrayList<TuioObject> tuioObjectList = tuioClient.getTuioObjectList();  for (int i=0;i<tuioObjectList.size();i++) {     TuioObject tobj = tuioObjectList.get(i);     offscreen.stroke(204, 122, 97);     if(tobj.getSymbolID() ==8){       offscreen.stroke (135, 165, 214);     }     offscreen.fill(255,255,255);     offscreen.pushMatrix();     offscreen.translate(tobj.getScreenX(1050),tobj.getScreenY(750));     //offscreen.rotate(tobj.getAngle());     //rect(-obj_size/2,-obj_size/2,obj_size,obj_size);         offscreen.ellipse(-obj_size/2,-obj_size/2, 130,130); // this changes the image that follows the fiducial to a white cirle, making it easier for the camera to see the fiducial    // image(rot8, -obj_size/2, -obj_size/2); // this changes the image that follows the fiducial to a GIF
    offscreen.popMatrix();     //fill(255);     //text(""+tobj.getSymbolID(), tobj.getScreenX(width), tobj.getScreenY(height));
  }
  ArrayList<TuioCursor> tuioCursorList = tuioClient.getTuioCursorList();   for (int i=0;i<tuioCursorList.size();i++) {      TuioCursor tcur = tuioCursorList.get(i);      ArrayList<TuioPoint> pointList = tcur.getPath();
     if (pointList.size()>0) {        stroke(0,0,255);        TuioPoint start_point = pointList.get(0);        for (int j=0;j<pointList.size();j++) {           TuioPoint end_point = pointList.get(j);           line(start_point.getScreenX(width),start_point.getScreenY(height),end_point.getScreenX(width),end_point.getScreenY(height));           start_point = end_point;        }
       stroke(192,192,192);        fill(192,192,192);        ellipse( tcur.getScreenX(width), tcur.getScreenY(height),cur_size,cur_size);        fill(0);        text(""+ tcur.getCursorID(),  tcur.getScreenX(width)-5,  tcur.getScreenY(height)+5);      }   }
 ArrayList<TuioBlob> tuioBlobList = tuioClient.getTuioBlobList();  for (int i=0;i<tuioBlobList.size();i++) {     TuioBlob tblb = tuioBlobList.get(i);     stroke(0);     fill(0);     pushMatrix();     translate(tblb.getScreenX(width),tblb.getScreenY(height));     rotate(tblb.getAngle());     ellipse(-1*tblb.getScreenWidth(width)/2,-1*tblb.getScreenHeight(height)/2, tblb.getScreenWidth(width), tblb.getScreenWidth(width));     popMatrix();     fill(255);     text(""+tblb.getBlobID(), tblb.getScreenX(width), tblb.getScreenX(width));   }
  offscreen.endDraw();  background(0);
 // render the scene, transformed using the corner pin surface  surface.render(offscreen); }
void keyPressed() {  switch(key) {  case 'c':    // enter/leave calibration mode, where surfaces can be warped    // and moved    ks.toggleCalibration();    break;
 case 'l':    // loads the saved layout    ks.load();    break;
 case 's':    // saves the layout    ks.save();    break;  } }
// -------------------------------------------------------------- // these callback methods are called whenever a TUIO event occurs // there are three callbacks for add/set/del events for each object/cursor/blob type // the final refresh callback marks the end of each TUIO frame
// called when an object is added to the scene void addTuioObject(TuioObject tobj) {  if (verbose) println("add obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+") "+tobj.getX()+" "+tobj.getY()+" "+tobj.getAngle()); }
// called when an object is moved void updateTuioObject (TuioObject tobj) {   println("set obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+") "+" Angle=  "+tobj.getAngle()          +"x=  " + tobj.getX()+ "Y=  " + tobj.getY() + "Timer = " + timer /*"Rspeed "+""+tobj.getRotationSpeed()+" "+"MAccell  "+""+tobj.getMotionAccel()+" "+"RAccel  "+""+tobj.getRotationAccel()*/);
//////////////////////////////////////START STUFF
if(tobj.getX()>0.46&&tobj.getX()<0.6&&tobj.getY()>0.74&&tobj.getY()<0.89&&tobj.getRotationSpeed()>.30&&tobj.getSymbolID()==2  && Map==0){
Map=1; }
if(tobj.getX()>0.47&&tobj.getX()<0.5&&tobj.getY()>0.16&&tobj.getY()<0.217&&/*tobj.getRotationSpeed()>.30&&*/tobj.getSymbolID()==8 && Map==0){
Map =1; }
///////////////////////////////////// MAP 1
//----------------------------------------------------POINT 1 if(Map==1&&tobj.getX()>0.31&&tobj.getX()<0.46&&tobj.getY()<.23&&tobj.getY()>.0&&tobj.getSymbolID()==2){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point1Hint = true;
 if(Point1<1){  Angle = tobj.getAngle(); Point1=1;}
if (Angle+2 > 6.1){  UPoint1=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){    Point1 = 2;    fadein1A=0;    fadein1C=0;}
   if(tobj.getAngle() > Angle + 2 ){ Point1=3; fadein1B= 0; }
if(Point1 > 1 && tobj.getAngle() < UAngle + 1 ){
 Point1=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.31||tobj.getX()>0.46||tobj.getY()>.23|tobj.getY()<.0)){  Point1=0;  fadein1A=0;  fadein1B=0;  fadein1C=0;
}
//----------------------------------------------------POINT 1 UPSIDE DOWN if(Map==1&&tobj.getX()>0.31&&tobj.getX()<0.46&&tobj.getY()<.23&&tobj.getY()>.0&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point1Hint = true;
 if(UPoint1<1){  UAngle = tobj.getAngle(); UPoint1=1;}
if (UAngle+2 > 6.1){  UPoint1=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){    UPoint1 = 2;    Ufadein1A=0;    Ufadein1C=0;}
   if(tobj.getAngle() > UAngle + 2 ){ UPoint1=3; Ufadein1B= 0; }
if(UPoint1 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint1=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.31||tobj.getX()>0.46||tobj.getY()>.23|tobj.getY()<.0)){  UPoint1=0;  Ufadein1A=0;  Ufadein1B=0;  Ufadein1C=0; }
//--------------------------------------------------------POINT2 if(Map==1&&tobj.getX()>0.4&&tobj.getX()<0.53&&tobj.getY()<.46&&tobj.getY()>.28&&tobj.getSymbolID()==2){  println("angle of fiducial = " + tobj.getAngle());  println("Angle TEST  " + Angle);  timer=0; P2G = 1;
 if(Point2<1){  Angle = tobj.getAngle();   Point2=1; }
if (Angle+2 > 6.1){  Point2=0;}
if( tobj.getAngle() >= Angle + 1 && tobj.getAngle() <= Angle + 2 ){
Point2=2; fadeinA = 0; fadeinC = 0; }
if(Point2 > 1 && tobj.getAngle() <= Angle + 1 ){
 Point2=0;
}
}
if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.42||tobj.getX()>0.53||tobj.getY()>.73||tobj.getY()<.55)){ Point2=0; fadeinA=0; fadeinB=0; fadeinC=0;
if(UP2Mark==0&& P2G >= 1&& UPoint2==0 ){  P2Mark=1; } }
//-------------------------------------------------------- UPSIDE DOWN POINT2 if(Map==1&&tobj.getX()>0.4&&tobj.getX()<0.53&&tobj.getY()<.46&&tobj.getY()>.28&&tobj.getSymbolID()==8){  println("angle of fiducial = " + tobj.getAngle());  println("Angle TEST  " + Angle);  timer=0; P2G = 1;
 if(UPoint2<1){  Angle = tobj.getAngle();  UPoint2=1;
}
if (Angle+2 > 6.1){  UPoint2=0;}
if( tobj.getAngle() >= Angle + 1 && tobj.getAngle() <= Angle + 2 ){
UPoint2=2; UfadeinA = 0; UfadeinC = 0; }
if(UPoint2 > 1 && tobj.getAngle() <= Angle + 1 ){
 UPoint2=0;
}
}
if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.42||tobj.getX()>0.53||tobj.getY()>.73||tobj.getY()<.55)){ UPoint2=0; UfadeinA=0; UfadeinB=0;
if(P2Mark==0&& P2G >= 1 && Point2==0 ){  UP2Mark=1; } }
//----------------------------------------------------POINT 3 if(Map==1&&tobj.getX()>0.63&&tobj.getX()<0.74&&tobj.getY()<.48&&tobj.getY()>.28&&tobj.getSymbolID()==2){
 timer=0;  Point3Hint = true;
 if(Point3<1){  Angle = tobj.getAngle(); Point3=1;}
if (Angle+2 > 6.1){  UPoint3=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){    Point3 = 2;    fadein3A=0;    fadein3C=0;}
   if(tobj.getAngle() > Angle + 2 ){ Point3=3; fadein3B= 0; }
if(Point3> 1 && tobj.getAngle() < UAngle + 1 ){
 Point3=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.37||tobj.getX()>0.49||tobj.getY()>.42||tobj.getY()<.19)){  Point3=0;  fadein3A=0;  fadein3B=0;  fadein3C=0; }
//----------------------------------------------------POINT 3 UPSIDE DOWN if(Map==1&&tobj.getX()>0.37&&tobj.getX()<0.49&&tobj.getY()<.42&&tobj.getY()>.19&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point3Hint = true;
 if(UPoint3<1){  UAngle = tobj.getAngle(); UPoint3=1;}
if (UAngle+2 > 6.1){  UPoint3=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){    UPoint3 = 2;    Ufadein3A=0;    Ufadein3C=0;}
   if(tobj.getAngle() > UAngle + 2 ){ UPoint3=3; Ufadein3B= 0; }
if(UPoint3 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint3=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.37||tobj.getX()>0.49||tobj.getY()>.42||tobj.getY()<.19)){  UPoint3=0;  Ufadein3A=0;  Ufadein3B=0;  Ufadein3C=0; }
//----------------------------------------------------POINT 4 if(Map==1&&tobj.getX()>0.5&&tobj.getX()<0.65&&tobj.getY()<.68&&tobj.getY()>.48&&tobj.getSymbolID()==2){ println("Upsidedown is a go. UPoint1=" + UPoint4);
 timer=0;  Point4Hint = true;
 if(Point4<1){  Angle = tobj.getAngle(); Point4=1;}
if (Angle+2 > 6.1){  UPoint4=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){    Point4 = 2;    fadein4A=0;    fadein4C=0;}
   if(tobj.getAngle() > Angle + 2 ){ Point4=3; fadein4B= 0; }
if(Point4> 1 && tobj.getAngle() < UAngle + 1 ){
 Point4=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.52||tobj.getX()>0.66||tobj.getY()>.66||tobj.getY()<.40)){  Point4=0;  fadein4A=0;  fadein4B=0;  fadein4C=0; }
//----------------------------------------------------POINT 4 UPSIDE DOWN if(Map==1&&tobj.getX()>0.52&&tobj.getX()<0.65&&tobj.getY()<.66&&tobj.getY()>.40&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point4Hint = true;
 if(UPoint4<1){  UAngle = tobj.getAngle(); UPoint4=1;}
if (UAngle+2 > 6.1){  UPoint4=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){    UPoint4 = 2;    Ufadein4A=0;    Ufadein4C=0;}
   if(tobj.getAngle() > UAngle + 2 ){ UPoint4=3; Ufadein4B= 0; }
if(UPoint4 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint4=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.52||tobj.getX()>0.66||tobj.getY()>.66||tobj.getY()<.40)){  UPoint4=0;  Ufadein4A=0;  Ufadein4B=0;  Ufadein4C=0; }
}
// Point f x<.59 x>.45  
// we have to think about how rotating will change media? The angle cant be used because the fiducial cold be at any angle when it interacts // Has to be the change in angle. I could set a function to get the fiducials angle when it comes into contact with an interaction point // Store that angle in a var and change media when the changed angle is a certain amount of degrees bigger than the var
//In order to differentiate who sees what media at what angles, maybe when they do the first twist, I can assign that fiducial an id or variable, //and then use the co-ordinates and rotation of that variable to activate media
// called when an object is removed from the scene void removeTuioObject(TuioObject tobj) {  if (verbose) println("del obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+")"); }
// -------------------------------------------------------------- // called when a cursor is added to the scene void addTuioCursor(TuioCursor tcur) {  if (verbose) println("add cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY());  //redraw(); }
// called when a cursor is moved void updateTuioCursor (TuioCursor tcur) {  if (verbose) println("set cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY()          +" "+tcur.getMotionSpeed()+" "+tcur.getMotionAccel());  //redraw(); }
// called when a cursor is removed from the scene void removeTuioCursor(TuioCursor tcur) {  if (verbose) println("del cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+")");  //redraw() }
// -------------------------------------------------------------- // called when a blob is added to the scene void addTuioBlob(TuioBlob tblb) {  if (verbose) println("add blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+") "+tblb.getX()+" "+tblb.getY()+" "+tblb.getAngle()+" "+tblb.getWidth()+" "+tblb.getHeight()+" "+tblb.getArea());  //redraw(); }
// called when a blob is moved void updateTuioBlob (TuioBlob tblb) {  if (verbose) println("set blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+") "+tblb.getX()+" "+tblb.getY()+" "+tblb.getAngle()+" "+tblb.getWidth()+" "+tblb.getHeight()+" "+tblb.getArea()          +" "+tblb.getMotionSpeed()+" "+tblb.getRotationSpeed()+" "+tblb.getMotionAccel()+" "+tblb.getRotationAccel());  //redraw() }
// called when a blob is removed from the scene void removeTuioBlob(TuioBlob tblb) {  if (verbose) println("del blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+")");  //redraw() }
// -------------------------------------------------------------- // called at the end of each TUIO frame void refresh(TuioTime frameTime) {  if (verbose) println("frame #"+frameTime.getFrameID()+" ("+frameTime.getTotalMilliseconds()+")");  if (callback) redraw(); }
0 notes
aaronfcollege-blog · 8 years ago
Text
Code
/* //<>// TUIO 1.1 Demo for Processing Copyright (c) 2005-2014 Martin Kaltenbrunner <[email protected]>
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Import the cornerstone warp correction library
// import the TUIO library import TUIO.*; import gifAnimation.*; // declare a TuioProcessing client TuioProcessing tuioClient;
import deadpixel.keystone.*;
Keystone ks; CornerPinSurface surface;
// these are some helper variables which are used // to create scalable graphical feedback float cursor_size = 400; float object_size = 60; //the square representing the fiducial float table_size = 900; // size of the feedback float scale_factor = 1; float angle; PFont font;
//FADE INS float fadeinA = 0; float fadeinB = 0; float fadeinC = 0; float fadeinD = 0; float UfadeinA = 0; float UfadeinB = 0; float UfadeinC = 0; float UfadeinD = 0;
float Ufadein1A = 0; float Ufadein1B = 0; float Ufadein1C = 0;
float fadein1A = 0; float fadein1B = 0; float fadein1C = 0;
float Ufadein3A = 0; float Ufadein3B = 0; float Ufadein3C = 0;
float fadein3A = 0; float fadein3B = 0; float fadein3C = 0;
float Ufadein4A = 0; float Ufadein4B = 0; float Ufadein4C = 0;
float fadein4A = 0; float fadein4B = 0; float fadein4C = 0;
float Ufadein5A = 0; float Ufadein5B = 0; float Ufadein5C = 0;
float fadein5A = 0; float fadein5B = 0; float fadein5C = 0; // Timer for hints
float timer= 0;   boolean Point1Hint = false; boolean Point2Hint = false; boolean Point3Hint = false; boolean Point4Hint = false; boolean Point5Hint = false; boolean Point6Hint = false;
//Turn off screen float StandbyTimer = 0; PShape StandbyRect;
//  float = Data type for floating-point numbers, e.g. numbers that have a decimal point.
boolean verbose = false; // print console debug messages boolean callback = true; // updates only after callbacks
/////////////////////////// POINT1 float Point1=0; PShape Point1HintCircle; PImage Point1AImg; PImage Point1BImg; PImage Point1CImg; float P1Mark = 0; PImage P1Marker;
Gif Point1Red;
String Point1ATxt = "Designed by William Burges and consecrated in 1870, the current cathedral is built on the site of at least two previous structures dedicated to Finbarr of Cork The first dated from the 7th century, with works continuing through the 12th century. This building was damaged during the Siege of Cork (1690), and a new structure was built in 1735. " ; String Point1BTxt = "The Current version from 1860 exceeded its initial budget of £15k, bringing the total cost to almost £100. The style of the building is Early French, Burges's favoured period. Burges oversaw all aspects of the design, including the architecture of the building, the statuary, the stained glass and the internal decoration. The result is \"undoubtedly Burges's greatest work in ecclesiastical architecture\"" ; String Point1CTxt = "Noteworthy features of its magnificent interior include stained glass windows depicting scenes from the Old and New Testaments, marble mosaics from the Pyrenees while the the sanctuary ceiling portrays Christ, surrounded by angels. The building contains more than 1,260 sculptures, a particularly ornate pulpit and even a 24-lb cannonball, a legacy of the Siege of Cork in 1690.";
// UpsideDown Point1 float UPoint1;
float UP1Mark = 0; PImage UP1Marker;
Gif Point1Blue;
////////////////////////// POINT2 float Point2=0; PShape Point2HintCircle; PImage Point2AImg; PImage Point2BImg; PImage Point2Grey; float P2G = 0;
float P2Mark = 0; PImage P2Marker;
Gif Point2Red;
String Point2ATxt = "Grand Parade was originally a channel of the River Lee. The original Hiberno-Norse settlement of Cork grew up on its west bank. By 1726, buildings had developed on the east bank, but the river channel remained in place. In a 1774 map, the northern portion of the street between Oliver Plunkett Street and Daunt Square had been reclaimed, but the southern portion was still a dock. Finally, by 1801, the river channel had completely disappeared and the street was fully present. The elevated doors can still be seen today on the buildings as a reminder of the old river." ; String Point2BTxt = "The tram system was built by Cork Electric Tramways and Lighting Company in the 19th century throughout Cork. The ease of access to transport in Cork was detrimental to a boom in the cities infrastructure. The tram lines running through grand parade started in St. Patrick’s Street and ran to Douglas and Black Rock." ;
// UpsideDown Point2 float UPoint2;
float UP2Mark = 0; PImage UP2Marker; Gif Point2Blue;
/////////////////////////////////////POINT3 float Point3=0; PShape Point3HintCircle; PImage Point3AImg; PImage Point3BImg; PImage Point3CImg; float P3Mark= 0; PImage P3Marker; Gif Point3Red;
String Point3ATxt = "Philip de Barry invited the Dominicans to Cork in 1229 and the order built a church called St Mary's of the Isle. Some stones from the medieval church are set into the walls of the present Dominican priory on Pope's Quay. The foundation stone of the present St Mary's was laid in 1832 and on 20 October 1839 the church was officially opened" ; String Point3BTxt = "Built in the first half of the nineteenth century, this church was designed by Cork architect Kearns Deane, and the portico was added by Deane and Woodward. The imposing scale of the building makes it a notable addition to the quayside, which is accentuated by the elevated position of the church" ; String Point3CTxt = "The fine interior is attributed to John Pyne Hurley, the baldacchino is attributed to Scannell of Cork, while the pulpit and high altar were designed by George Goldie and added in the 1880s. This church forms part of an interesting group of Roman Catholic buildings with the related priory buildings to the north." ;
// UpsideDown Point3 float UPoint3;
float UP3Mark= 0; PImage UP3Marker; Gif Point3Blue;
///////////////////////////////POINT4 float Point4=0; PShape Point4HintCircle; PImage Point4AImg; PImage Point4BImg; PImage Point4CImg; PImage Point4Grey; float  P4Mark = 0; PImage P4Marker; float P4G = 0; Gif Point4Red;
String Point4ATxt = "The centre of Cork city is built on marshy islands in the tidal estuary of the river Lee. Channels of the river originally separated these islands, and some of these channels were spanned in the eighteenth century to form the principal streets of Cork city centre. Among these is Saint Patrick's Street." ; String Point4BTxt = "Parts of Patrick Street were extensively damaged during the Irish War of Independence in the \"Burning of Cork\". It followed an ambush by the IRA of a Briitish patrol in the city. The Black and Tans retaliated by setting fire to several buildings in the city. " ; String Point4CTxt = "There was substantial disruption to services and destruction of some tramcars during The Burning of Cork in December 1920. The events which occurred to the driver, John Hurley, conductor Alex Garvey and passengers on tramcar no 3 were recorded in the Cork Examiner:" ; String Point4DTxt = "Passengers by the last tram to St. Luke's Cross, which left the Statue at 9 p.m. on Saturday, had a rather eventful journey. The car had got about 60 or 70 yards beyond Empress Place police barracks when a number of men in police uniform, carrying carbines and accompanied by Auxiliaries in plain clothes, held it up. They ordered all the passengers off at the point of revolvers. Male passengers were somewhat roughly handled and then ordered to line up for search. Some few were inclined to run and a voice rang out: \"I'll shoot anyone who runs.\" All then stopped but some shots were fired in the air while the searches were being conducted. In some cases when the search was completed the person searched was ordered home, getting a bit of a rough send-off. The tramcar was then broken in by the police and a rifle shot was discharged, the smell of powder permeating the air. The tramcar was brought back to the Statue by the driver and conductor who when it neared there were ordered off. It was later set on fire and completely destroyed.";
// UpsideDown Point4 float UPoint4;
Gif Point4Blue;
float  UP4Mark = 0; PImage UP4Marker;
///////////////////////////////////////POINT 5 float Point5=0; PShape Point5HintCircle; PImage Point5AImg; PImage Point5BImg; Gif Point5Red;
float  P5Mark = 0; PImage P5Marker; float P5G = 0;
String Point5ATxt = "The Custom House was built in 1818 and was designed by the architect Abraham Hargrave. 1882 it became the headquarters of the Cork Harbour Commissioners, now known as the Port of Cork Company. Its elegant boardroom, where the meetings of the members of the company are held, was constructed in 1906." ; String Point5BTxt = "It became known as the ‘new’ Custom House. Its main work dealt with inland revenue. In 1882 it became the headquarters of the Cork Harbour Commissioners. The old Custom House in Emmet Place is now part of the complex of buildings which houses the Crawford Municipal Art Gallery." ;
// UpsideDown Point5 float UPoint5;
Gif Point5Blue;
float  UP5Mark = 0; PImage UP5Marker;
PShape rectangle; PShape Lsquare; PShape Rsquare;
PShape TestCircle1; PShape TestCircle2; PShape TestCircle3; PShape Whitespace;
PImage img;
PImage TheMap;
// GIFS Gif BlueStart; Gif RedStart;
float Map = 0; float y = 0;
float g = 0;
// Vars for rotations float UAngle; float Angle;
PGraphics offscreen;
void setup() {  // GUI setup
 size(1050, 750,P3D);
 ks = new Keystone(this);    surface = ks.createCornerPinSurface(1050, 750, 20);
    offscreen = createGraphics(1050, 750, P3D);
 noStroke();  fill(255, 255, 255);
  BlueStart = new Gif(this, "T2SBlue.gif");  BlueStart.loop();
 RedStart = new Gif(this, "T2SRed.gif");  RedStart.loop();
 Point1Blue= new Gif(this, "FBBlue.gif");  Point1Blue.play();
 Point1Red= new Gif(this, "FBRed.gif");  Point1Red.play();
   Point2Red = new Gif(this, "GPred.gif");  Point2Red.play();
 Point2Blue = new Gif(this, "GPblue.gif");  Point2Blue.play();
 Point3Red = new Gif(this, "MCRed.gif");  Point3Red.play();
 Point3Blue = new Gif(this, "MCBlue.gif");  Point3Blue.play();
 Point4Red= new Gif(this, "PSRed.gif");  Point4Red.play();
 Point4Blue = new Gif(this, "PSBlue.gif");  Point4Blue.play();
 Point5Red = new Gif (this, "CHRed.gif");  Point5Red.play();
 Point5Blue = new Gif(this, "CHBlue.gif");  Point5Blue.play();
 rectangle = createShape(RECT,100,300,100,50);  rectangle.setStroke(color(255));  rectangle.setStrokeWeight(4);  rectangle.setFill(color(127));
 // periodic updates  if (!callback) {    frameRate(60);    loop();  }  // or callback updates
 font = createFont("Arial", 18);  scale_factor = height/table_size;
 // height stores the height of the display window that is set in the size() call
 // finally we create an instance of the TuioProcessing client  // since we add "this" class as an argument the TuioProcessing class expects  // an implementation of the TUIO callback methods in this class (see below)  tuioClient  = new TuioProcessing(this);
  offscreen.tint(255, 127);  StandbyRect = createShape(RECT,0,0, displayWidth, displayHeight);  StandbyRect.setFill(color(0,0,0));  StandbyRect.setStroke(false);
 Whitespace = createShape(RECT, 0, 0, displayWidth, displayHeight);  Whitespace.setFill(color(254,197,87));  Whitespace.setStroke(false);
// IMAGES FOR POINT1 Point1AImg = loadImage("Point1AImg.jpg"); Point1BImg = loadImage("Point1BImg.png"); Point1CImg = loadImage("Point1CImg.png");
TheMap = loadImage("Map.png");
// IMAGES FOR POINT2   Point2AImg = loadImage("Point2AImg.png");   Point2BImg = loadImage("Point2AImg.png");
  Point2Grey = loadImage("Grey3.png");
  P2Marker = loadImage("RedMark.png");   UP2Marker= loadImage("BlueMark.png");
//IMAGES FOR POINT3 Point3AImg = loadImage("Point3AImg.png"); Point3BImg = loadImage("Point3BImg.png"); Point3CImg = loadImage("Point3CImg.png");
//IMAGES FOR POINT4 Point4AImg = loadImage("Point4AImg.png"); Point4BImg = loadImage("Point4BImg.png"); Point4CImg = loadImage("Point4CImg.png");
Point4Grey = loadImage("Grey3.png");
 //IMAGES FOR POINT5 Point5AImg = loadImage("Point5AImg.png"); Point5BImg = loadImage("Point5BImg.png");
}
// within the draw method we retrieve an ArrayList of type <TuioObject>, <TuioCursor> or <TuioBlob> // from the TuioProcessing client and then loops over all lists to draw the graphical feedback. void draw() {
 offscreen.beginDraw();  offscreen.background(255);  textFont(font,18*scale_factor);  float obj_size = object_size*scale_factor;  float cur_size = cursor_size*scale_factor;
 ///////////////////////////////////// BEGINNING    if(Map==0){      offscreen.tint(255,255);    offscreen.image(RedStart, 520, 450);    offscreen.image(BlueStart, 520, -30);    }
 ////////////////////////// CITY MAP    if(Map==1){
     offscreen.shape(Whitespace, 0,0);
     TheMap.resize(700,700);    offscreen.image(TheMap, 300, 20);   Point2Grey.resize(180, 180);   Point4Grey.resize(180,180);   offscreen.tint(255, 200);   if(P2G ==0){   offscreen.image(Point2Grey, 550, 400); }   if(P4G==0){// grand parade   offscreen.image(Point4Grey, 700, 300);} // st. patricks    offscreen.tint(255, 255);  }  //////////////////////////////  Standy mode
 if (StandbyTimer <2500){StandbyTimer += 1;};
 if (StandbyTimer >= 2500){
 }
 ///////////////////////////////////////////////////// HINTS
/*if (timer < 500 &&Map==1){timer += 1;};
  if(timer>=500){     if(Point1Hint == false){      shape(Point1HintCircle, 500, 100);}      if(Point2Hint  == false){    shape(Point2HintCircle, 600, 400);}    if(Point3Hint == false){    shape(Point3HintCircle, 800, 600);}   }  */  if(y==1){    img.resize(300, 150);    image(img, 00, 100);  }
 //////////////////////// POINT MEDIA
 // Point 1 St. Finbarre's  if(Point1==1){    if(fadein1A >= 0){fadein1A += 20;};    offscreen.tint(255, fadein1A);    Point1AImg.resize(300, 150);    offscreen.image(Point1AImg, 0, 100);    textSize(10);    offscreen.text(Point1ATxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    fadeinB = 0;  
    offscreen.image(Point1Red, 240, 450);  }
   if(Point1==2){    if(fadein1B >= 0){fadein1B += 20;};    offscreen.tint(255, fadein1B);    Point1BImg.resize(300, 150);    offscreen.image(Point1BImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point1BTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point1Red, 240, 450);  }
    if(Point1==3){    if(fadein1C >= 0){fadein1C += 20;};    offscreen.tint(255, fadein1C);    Point1CImg.resize(300, 150);    offscreen.image(Point1CImg, 0, 100);    textSize(10);    offscreen.text(Point1CTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point1Red, 240, 450);  }
 if(UPoint1==1){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein1A >= 0){Ufadein1A += 20;};       offscreen.tint(255, Ufadein1A);    Point1AImg.resize(300,150);   offscreen.image(Point1AImg, 0, 100);    offscreen.fill(#000000, Ufadein1A);    textSize(10);    offscreen.text(Point1ATxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);    UfadeinB = 0;
     offscreen.image(Point1Blue, 240, 450);  }
  if(UPoint1==2){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein1B >= 0){Ufadein1B += 20;};       offscreen.tint(255, Ufadein1B);    Point1BImg.resize(300,150);    offscreen.image(Point1BImg, 0, 100);    offscreen.fill(#000000, Ufadein1B);    offscreen.textSize(10);    offscreen.text(Point1BTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point1Blue, 240, 450);
 }
  if(UPoint1==3){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein1C >= 0){Ufadein1C += 20;};       offscreen.tint(255, Ufadein1C);    Point1CImg.resize(300,150);    offscreen.image(Point1CImg, 0, 100);    offscreen.fill(#000000, Ufadein1C);    offscreen.textSize(10);    offscreen.text(Point1CTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);     offscreen.image(Point1Blue, 240, 450);  }
 /////////////////////////// POINT 2
 if(P2Mark == 1){
  offscreen.image (P2Marker, 550, 400);     P2Marker.resize(180,180);
 }
  if(UP2Mark == 1){
  image (UP2Marker, 550, 400);     UP2Marker.resize(180,180);
 }
 if(Point2==1){
   if (fadeinA >= 0){fadeinA += 20;};  offscreen.tint(255, fadeinA);  Point2AImg.resize(300, 150);  offscreen.image(Point2AImg, 0, 100);  offscreen.fill(#000000, fadeinA);  offscreen.textSize(10);  offscreen.text( Point2ATxt, 10, 300, 300, 150);  offscreen.fill(0, 0, 0);  offscreen.tint(255, 255);  fadeinB=0;
 offscreen.image(Point2Red, 490, 340);  }
 if(Point2==2){
   if (fadeinB >= 0){fadeinB += 20;};       offscreen.tint(255, fadeinB);    Point2BImg.resize(300, 150);   offscreen.image(Point2BImg, 0, 100);     offscreen.fill(#000000, fadeinB);   offscreen.textSize(10);   offscreen.text(Point2BTxt, 10, 300, 300, 300) ;   offscreen.tint(255, 255);   offscreen.image(Point2Red, 490, 340); }
/////////////////////////////////// UPSIDE DOWN POINT 2  if(UPoint2==1){    offscreen.image(Point2Blue, 490, 340);
    offscreen.translate(1300,700);      offscreen.rotate(radians(180));    if (UfadeinA >= 0){UfadeinA += 20;};  offscreen.tint(255, UfadeinA);  Point2AImg.resize(300, 150);  offscreen.image(Point2AImg, -50, 100);  offscreen.fill(#000000, UfadeinA);  offscreen.textSize(10);  offscreen.text(Point2ATxt, -50, 300, 300, 150);  offscreen.fill(0, 0, 0);  offscreen.tint(255, 255);  UfadeinB=0;
  offscreen.rotate(radians(-180));
    offscreen.translate(-1300,-700);
 }
 if(UPoint2==2){
    offscreen.translate(1300,700);      offscreen.rotate(radians(180));    if (UfadeinB >= 0){UfadeinB += 20;};       offscreen.tint(255, UfadeinB);    Point2BImg.resize(300, 150);   offscreen.image(Point2BImg, -50, 100);     offscreen.fill(#000000, UfadeinB);   offscreen.textSize(10);   offscreen.text(Point2BTxt, -50, 300, 300, 300) ;   offscreen.tint(255, 255);
     offscreen.rotate(radians(-180));     offscreen.translate(-1300,-700);        offscreen.image(Point2Blue, 490, 340); } ///////////////////// Point 3
//St. Mary's
 if(Point3==1){    if(fadein3A >= 0){fadein3A += 20;};    offscreen.tint(255, fadein3A);    Point3AImg.resize(300, 150);    offscreen.image(Point3AImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point3ATxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    fadein3B = 0;      offscreen.image(Point3Red, 430, 60);
 }
   if(Point3==2){    if(fadein3B >= 0){fadein3B += 20;};    offscreen.tint(255, fadein3B);    Point3BImg.resize(300, 150);    offscreen.image(Point3BImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point3BTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    offscreen.image(Point3Red,  430, 60);  }
    if(Point3==3){    if(fadein3C >= 0){fadein3C += 20;};    offscreen.tint(255, fadein3C);    Point3CImg.resize(300, 150);    offscreen.image(Point3CImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point3CTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    offscreen.image(Point3Red,  430, 60);  }
 if(UPoint3==1){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein3A >= 0){Ufadein3A += 20;};       offscreen.tint(255, Ufadein3A);    Point3AImg.resize(300,150);    offscreen.image(Point3AImg, 0, 100);    offscreen.fill(#000000, Ufadein3A);    offscreen.textSize(10);    offscreen.text(Point3ATxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);    Ufadein3B = 0;
     offscreen.image(Point3Blue,  430, 60);  }
  if(UPoint3==2){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein3B >= 0){Ufadein3B += 20;};       offscreen.tint(255, Ufadein3B);    Point3BImg.resize(300,150);    offscreen.image(Point3BImg, 0, 100);    offscreen.fill(#000000, Ufadein3B);    offscreen.textSize(10);    offscreen.text(Point3BTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point3Blue,  430, 60);
 }
  if(UPoint3==3){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein3C >= 0){Ufadein3C += 20;};       offscreen.tint(255, Ufadein3C);    Point3CImg.resize(300,150);    offscreen.image(Point3CImg, 0, 100);    offscreen.fill(#000000, Ufadein3C);    offscreen.textSize(10);    offscreen.text(Point3CTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);     offscreen.image(Point3Blue, 430, 60);  }
///////////////////// Point 4
// Point 4 SAINT PATRICKS  if(Point4==1){    if(fadein4A >= 0){fadein4A += 20;};    offscreen.tint(255, fadein4A);    Point4AImg.resize(300, 150);    offscreen.image(Point4AImg, 0, 100);   offscreen.textSize(10);    offscreen.text(Point4ATxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);    fadeinB = 0;       offscreen.image(Point4Red, 630, 240);
 }
   if(Point4==2){    if(fadein4B >= 0){fadein4B += 20;};    offscreen.tint(255, fadein4B);    Point4BImg.resize(300, 150);    offscreen.image(Point4BImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point4BTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point4Red, 630, 240);  }
    if(Point4==3){    if(fadein4C >= 0){fadein4C += 20;};    offscreen.tint(255, fadein4C);    Point4CImg.resize(300, 150);    offscreen.image(Point4CImg, 0, 100);    offscreen.textSize(10);    offscreen.text(Point4CTxt, 10, 300, 300, 150);    offscreen.fill(0,0,0);    offscreen.tint(255, 255);     offscreen.image(Point4Red, 630, 240);  }
 if(UPoint4==1){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein4A >= 0){Ufadein4A += 20;};       offscreen.tint(255, Ufadein4A);    Point4AImg.resize(300,150);    offscreen.image(Point4AImg, 0, 100);    offscreen.fill(#000000, Ufadein4A);    offscreen.textSize(10);    offscreen.text(Point4ATxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);    Ufadein4B = 0;
     offscreen.image(Point4Blue, 630, 240);  }
  if(UPoint4==2){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein4B >= 0){Ufadein4B += 20;};       offscreen.tint(255, Ufadein4B);    Point4BImg.resize(300,150);    offscreen.image(Point4BImg, 0, 100);    offscreen.fill(#000000, Ufadein4B);    offscreen.textSize(10);    offscreen.text(Point4BTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);  offscreen.image(Point4Blue,630, 240);
 }
  if(UPoint4==3){    offscreen.translate(1300,700);      offscreen.rotate(radians(180));
      if (Ufadein4C >= 0){Ufadein4C += 20;};       offscreen.tint(255, Ufadein4C);    Point4CImg.resize(300,150);    offscreen.image(Point4CImg, 0, 100);    offscreen.fill(#000000, Ufadein4C);    offscreen.textSize(10);    offscreen.text(Point4CTxt, 10, 300, 300, 150);    offscreen.rotate(radians(-180)); offscreen.translate(-1300,-700); offscreen.tint(255, 255);     offscreen.image(Point4Blue, 630, 240);  }
 ArrayList<TuioObject> tuioObjectList = tuioClient.getTuioObjectList();  for (int i=0;i<tuioObjectList.size();i++) {     TuioObject tobj = tuioObjectList.get(i);     offscreen.stroke(204, 122, 97);     if(tobj.getSymbolID() ==8){       offscreen.stroke (135, 165, 214);     }     offscreen.fill(255,255,255);     offscreen.pushMatrix();     offscreen.translate(tobj.getScreenX(1050),tobj.getScreenY(750));     offscreen.rotate(tobj.getAngle());     //rect(-obj_size/2,-obj_size/2,obj_size,obj_size);         offscreen.ellipse(-obj_size/2,-obj_size/2, 130,130); // this changes the image that follows the fiducial to a white cirle, making it easier for the camera to see the fiducial    // image(rot8, -obj_size/2, -obj_size/2); // this changes the image that follows the fiducial to a GIF
    offscreen.popMatrix();     //fill(255);     //text(""+tobj.getSymbolID(), tobj.getScreenX(width), tobj.getScreenY(height));
  }
  ArrayList<TuioCursor> tuioCursorList = tuioClient.getTuioCursorList();   for (int i=0;i<tuioCursorList.size();i++) {      TuioCursor tcur = tuioCursorList.get(i);      ArrayList<TuioPoint> pointList = tcur.getPath();
     if (pointList.size()>0) {        stroke(0,0,255);        TuioPoint start_point = pointList.get(0);        for (int j=0;j<pointList.size();j++) {           TuioPoint end_point = pointList.get(j);           line(start_point.getScreenX(width),start_point.getScreenY(height),end_point.getScreenX(width),end_point.getScreenY(height));           start_point = end_point;        }
       stroke(192,192,192);        fill(192,192,192);        ellipse( tcur.getScreenX(width), tcur.getScreenY(height),cur_size,cur_size);        fill(0);        text(""+ tcur.getCursorID(),  tcur.getScreenX(width)-5,  tcur.getScreenY(height)+5);      }   }
 ArrayList<TuioBlob> tuioBlobList = tuioClient.getTuioBlobList();  for (int i=0;i<tuioBlobList.size();i++) {     TuioBlob tblb = tuioBlobList.get(i);     stroke(0);     fill(0);     pushMatrix();     translate(tblb.getScreenX(width),tblb.getScreenY(height));     rotate(tblb.getAngle());     ellipse(-1*tblb.getScreenWidth(width)/2,-1*tblb.getScreenHeight(height)/2, tblb.getScreenWidth(width), tblb.getScreenWidth(width));     popMatrix();     fill(255);     text(""+tblb.getBlobID(), tblb.getScreenX(width), tblb.getScreenX(width));   }
  offscreen.endDraw();  background(0);
 // render the scene, transformed using the corner pin surface  surface.render(offscreen); }
void keyPressed() {  switch(key) {  case 'c':    // enter/leave calibration mode, where surfaces can be warped    // and moved    ks.toggleCalibration();    break;
 case 'l':    // loads the saved layout    ks.load();    break;
 case 's':    // saves the layout    ks.save();    break;  } }
// -------------------------------------------------------------- // these callback methods are called whenever a TUIO event occurs // there are three callbacks for add/set/del events for each object/cursor/blob type // the final refresh callback marks the end of each TUIO frame
// called when an object is added to the scene void addTuioObject(TuioObject tobj) {  if (verbose) println("add obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+") "+tobj.getX()+" "+tobj.getY()+" "+tobj.getAngle()); }
// called when an object is moved void updateTuioObject (TuioObject tobj) {   println("set obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+") "+" Angle=  "+tobj.getAngle()          +"x=  " + tobj.getX()+ "Y=  " + tobj.getY() + "Timer = " + timer /*"Rspeed "+""+tobj.getRotationSpeed()+" "+"MAccell  "+""+tobj.getMotionAccel()+" "+"RAccel  "+""+tobj.getRotationAccel()*/);
//////////////////////////////////////START STUFF
if(tobj.getX()>0.47&&tobj.getX()<0.5&&tobj.getY()>0.75&&tobj.getY()<0.8&&/*tobj.getRotationSpeed()>.30&&*/tobj.getSymbolID()==2  && Map==0){
Map=1; }
if(tobj.getX()>0.47&&tobj.getX()<0.5&&tobj.getY()>0.16&&tobj.getY()<0.217&&/*tobj.getRotationSpeed()>.30&&*/tobj.getSymbolID()==8 && Map==0){
Map =1; }
///////////////////////////////////// MAP 1
if(Map==1&&tobj.getX()>0.35&&tobj.getX()<0.37&&tobj.getY()<.15&&tobj.getY()>.10&&tobj.getRotationSpeed()>.14&&tobj.getSymbolID()==12){  y=1;  Point1HintCircle.setFill(color(50, 0, 0)); ;};
//----------------------------------------------------POINT 1 if(Map==1&&tobj.getX()>0.21&&tobj.getX()<0.30&&tobj.getY()<.82&&tobj.getY()>.7&&tobj.getSymbolID()==2){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point1Hint = true;
 if(Point1<1){  Angle = tobj.getAngle(); Point1=1;}
if (Angle+2 > 6.1){  UPoint1=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){    Point1 = 2;    fadein1A=0;    fadein1C=0;}
   if(tobj.getAngle() > Angle + 2 ){ Point1=3; fadein1B= 0; }
if(Point1 > 1 && tobj.getAngle() < UAngle + 1 ){
 Point1=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.21||tobj.getX()>0.30||tobj.getY()>.82||tobj.getY()<.7)){  Point1=0;  fadein1A=0;  fadein1B=0;  fadein1C=0;
}
//----------------------------------------------------POINT 1 UPSIDE DOWN if(Map==1&&tobj.getX()>0.21&&tobj.getX()<0.30&&tobj.getY()<.82&&tobj.getY()>.7&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point1Hint = true;
 if(UPoint1<1){  UAngle = tobj.getAngle(); UPoint1=1;}
if (UAngle+2 > 6.1){  UPoint1=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){    UPoint1 = 2;    Ufadein1A=0;    Ufadein1C=0;}
   if(tobj.getAngle() > UAngle + 2 ){ UPoint1=3; Ufadein1B= 0; }
if(UPoint1 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint1=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.21||tobj.getX()>0.30||tobj.getY()>.82||tobj.getY()<.7)){  UPoint1=0;  Ufadein1A=0;  Ufadein1B=0;  Ufadein1C=0; }
//--------------------------------------------------------POINT2 if(Map==1&&tobj.getX()>0.42&&tobj.getX()<0.53&&tobj.getY()<.73&&tobj.getY()>.558&&tobj.getSymbolID()==2){  println("angle of fiducial = " + tobj.getAngle());  println("Angle TEST  " + Angle);  timer=0; P2G = 1;
 if(Point2<1){  Angle = tobj.getAngle();   Point2=1; }
if (Angle+2 > 6.1){  Point2=0;}
if( tobj.getAngle() >= Angle + 1 && tobj.getAngle() <= Angle + 2 ){
Point2=2; fadeinA = 0; fadeinC = 0; }
if(Point2 > 1 && tobj.getAngle() <= Angle + 1 ){
 Point2=0;
}
}
if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.42||tobj.getX()>0.53||tobj.getY()>.73||tobj.getY()<.55)){ Point2=0; fadeinA=0; fadeinB=0; fadeinC=0;
if(UP2Mark==0&& P2G >= 1&& UPoint2==0 ){  P2Mark=1; } }
//-------------------------------------------------------- UPSIDE DOWN POINT2 if(Map==1&&tobj.getX()>0.42&&tobj.getX()<0.53&&tobj.getY()<.73&&tobj.getY()>.55&&tobj.getSymbolID()==8){  println("angle of fiducial = " + tobj.getAngle());  println("Angle TEST  " + Angle);  timer=0; P2G = 1;
 if(UPoint2<1){  Angle = tobj.getAngle();  UPoint2=1;
}
if (Angle+2 > 6.1){  UPoint2=0;}
if( tobj.getAngle() >= Angle + 1 && tobj.getAngle() <= Angle + 2 ){
UPoint2=2; UfadeinA = 0; UfadeinC = 0; }
if(UPoint2 > 1 && tobj.getAngle() <= Angle + 1 ){
 UPoint2=0;
}
}
if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.42||tobj.getX()>0.53||tobj.getY()>.73||tobj.getY()<.55)){ UPoint2=0; UfadeinA=0; UfadeinB=0;
if(P2Mark==0&& P2G >= 1 && Point2==0 ){  UP2Mark=1; } }
//----------------------------------------------------POINT 3 if(Map==1&&tobj.getX()>0.37&&tobj.getX()<0.49&&tobj.getY()<.42&&tobj.getY()>.19&&tobj.getSymbolID()==2){
 timer=0;  Point3Hint = true;
 if(Point3<1){  Angle = tobj.getAngle(); Point3=1;}
if (Angle+2 > 6.1){  UPoint3=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){    Point3 = 2;    fadein3A=0;    fadein3C=0;}
   if(tobj.getAngle() > Angle + 2 ){ Point3=3; fadein3B= 0; }
if(Point3> 1 && tobj.getAngle() < UAngle + 1 ){
 Point3=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.37||tobj.getX()>0.49||tobj.getY()>.42||tobj.getY()<.19)){  Point3=0;  fadein3A=0;  fadein3B=0;  fadein3C=0; }
//----------------------------------------------------POINT 3 UPSIDE DOWN if(Map==1&&tobj.getX()>0.37&&tobj.getX()<0.49&&tobj.getY()<.42&&tobj.getY()>.19&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point3Hint = true;
 if(UPoint3<1){  UAngle = tobj.getAngle(); UPoint3=1;}
if (UAngle+2 > 6.1){  UPoint3=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){    UPoint3 = 2;    Ufadein3A=0;    Ufadein3C=0;}
   if(tobj.getAngle() > UAngle + 2 ){ UPoint3=3; Ufadein3B= 0; }
if(UPoint3 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint3=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.37||tobj.getX()>0.49||tobj.getY()>.42||tobj.getY()<.19)){  UPoint3=0;  Ufadein3A=0;  Ufadein3B=0;  Ufadein3C=0; }
//----------------------------------------------------POINT 4 if(Map==1&&tobj.getX()>0.52&&tobj.getX()<0.65&&tobj.getY()<.66&&tobj.getY()>.40&&tobj.getSymbolID()==2){ println("Upsidedown is a go. UPoint1=" + UPoint4);
 timer=0;  Point4Hint = true;
 if(Point4<1){  Angle = tobj.getAngle(); Point4=1;}
if (Angle+2 > 6.1){  UPoint4=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < Angle + 2){    Point4 = 2;    fadein4A=0;    fadein4C=0;}
   if(tobj.getAngle() > Angle + 2 ){ Point4=3; fadein4B= 0; }
if(Point4> 1 && tobj.getAngle() < UAngle + 1 ){
 Point4=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==2&&(tobj.getX()<0.52||tobj.getX()>0.66||tobj.getY()>.66||tobj.getY()<.40)){  Point4=0;  fadein4A=0;  fadein4B=0;  fadein4C=0; }
//----------------------------------------------------POINT 4 UPSIDE DOWN if(Map==1&&tobj.getX()>0.52&&tobj.getX()<0.65&&tobj.getY()<.66&&tobj.getY()>.40&&tobj.getSymbolID()==8){ println("Upsidedown is a go. UPoint1=" + UPoint1);
 timer=0;  Point4Hint = true;
 if(UPoint4<1){  UAngle = tobj.getAngle(); UPoint4=1;}
if (UAngle+2 > 6.1){  UPoint4=0;}
 if(tobj.getAngle()> UAngle + 1 && tobj.getAngle() < UAngle + 2){    UPoint4 = 2;    Ufadein4A=0;    Ufadein4C=0;}
   if(tobj.getAngle() > UAngle + 2 ){ UPoint4=3; Ufadein4B= 0; }
if(UPoint4 > 1 && tobj.getAngle() < UAngle + 1 ){
 UPoint4=0;
}
} //RESET Map if(Map==1&&tobj.getSymbolID()==8&&(tobj.getX()<0.52||tobj.getX()>0.66||tobj.getY()>.66||tobj.getY()<.40)){  UPoint4=0;  Ufadein4A=0;  Ufadein4B=0;  Ufadein4C=0; }
}
// we have to think about how rotating will change media? The angle cant be used because the fiducial cold be at any angle when it interacts // Has to be the change in angle. I could set a function to get the fiducials angle when it comes into contact with an interaction point // Store that angle in a var and change media when the changed angle is a certain amount of degrees bigger than the var
//In order to differentiate who sees what media at what angles, maybe when they do the first twist, I can assign that fiducial an id or variable, //and then use the co-ordinates and rotation of that variable to activate media
// called when an object is removed from the scene void removeTuioObject(TuioObject tobj) {  if (verbose) println("del obj "+tobj.getSymbolID()+" ("+tobj.getSessionID()+")"); }
// -------------------------------------------------------------- // called when a cursor is added to the scene void addTuioCursor(TuioCursor tcur) {  if (verbose) println("add cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY());  //redraw(); }
// called when a cursor is moved void updateTuioCursor (TuioCursor tcur) {  if (verbose) println("set cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+ ") " +tcur.getX()+" "+tcur.getY()          +" "+tcur.getMotionSpeed()+" "+tcur.getMotionAccel());  //redraw(); }
// called when a cursor is removed from the scene void removeTuioCursor(TuioCursor tcur) {  if (verbose) println("del cur "+tcur.getCursorID()+" ("+tcur.getSessionID()+")");  //redraw() }
// -------------------------------------------------------------- // called when a blob is added to the scene void addTuioBlob(TuioBlob tblb) {  if (verbose) println("add blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+") "+tblb.getX()+" "+tblb.getY()+" "+tblb.getAngle()+" "+tblb.getWidth()+" "+tblb.getHeight()+" "+tblb.getArea());  //redraw(); }
// called when a blob is moved void updateTuioBlob (TuioBlob tblb) {  if (verbose) println("set blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+") "+tblb.getX()+" "+tblb.getY()+" "+tblb.getAngle()+" "+tblb.getWidth()+" "+tblb.getHeight()+" "+tblb.getArea()          +" "+tblb.getMotionSpeed()+" "+tblb.getRotationSpeed()+" "+tblb.getMotionAccel()+" "+tblb.getRotationAccel());  //redraw() }
// called when a blob is removed from the scene void removeTuioBlob(TuioBlob tblb) {  if (verbose) println("del blb "+tblb.getBlobID()+" ("+tblb.getSessionID()+")");  //redraw() }
// -------------------------------------------------------------- // called at the end of each TUIO frame void refresh(TuioTime frameTime) {  if (verbose) println("frame #"+frameTime.getFrameID()+" ("+frameTime.getTotalMilliseconds()+")");  if (callback) redraw(); }
0 notes