Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of scoreLight_Advanced by
blobConfig.h@30:d8af03f01cd4, 2012-09-21 (annotated)
- Committer:
- mbedalvaro
- Date:
- Fri Sep 21 10:02:35 2012 +0000
- Revision:
- 30:d8af03f01cd4
- Parent:
- 28:44b7b6e35548
- Child:
- 31:5f039cbddee8
first commit. Not yet functional. Added ghost and pacman game modes, but the behaviour of these "rigid spots" is not implemented yet
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| mbedalvaro | 0:345b3bc7a0ea | 1 | #ifndef blobConf_h |
| mbedalvaro | 0:345b3bc7a0ea | 2 | #define blobConf_h |
| mbedalvaro | 0:345b3bc7a0ea | 3 | |
| mbedalvaro | 0:345b3bc7a0ea | 4 | // include all kind of spots classes (childs of soundSpot) |
| mbedalvaro | 15:56a0bf424e8d | 5 | #include "elasticLoop.h" |
| mbedalvaro | 1:a4050fee11f7 | 6 | #include "rigidLoop.h" |
| mbedalvaro | 30:d8af03f01cd4 | 7 | #include "hardwareIO.h" // this is in fact only to get to know the initial position of the spots, as well as the mirror limits to set the bounding box for the blobs |
| mbedalvaro | 0:345b3bc7a0ea | 8 | |
| mbedalvaro | 11:62f7183a03e7 | 9 | #include <vector> |
| mbedalvaro | 15:56a0bf424e8d | 10 | //#include <deque>; // using a deque instead of a vector can have advantanges in terms of memory (deque can handle fragmented memory), BUT IS SLOWER. |
| mbedalvaro | 15:56a0bf424e8d | 11 | using namespace std; |
| mbedalvaro | 11:62f7183a03e7 | 12 | |
| mbedalvaro | 30:d8af03f01cd4 | 13 | // This is for the SKIN GAMES project, in which not only each blob object has behaviour of its own, but the blobs can interact in different ways; hence the update |
| mbedalvaro | 30:d8af03f01cd4 | 14 | // method cannot be just "update all the blobs": |
| mbedalvaro | 30:d8af03f01cd4 | 15 | enum configType {ONE_ELASTIC_FOLLOWING, ONE_ELASTIC_MOUTH, ONE_ELASTIC_MOUTH_SMALL, |
| mbedalvaro | 30:d8af03f01cd4 | 16 | BOUNCING_SPOTS, LORENTZ_SPOTS, FOLLOWING_SPOTS, |
| mbedalvaro | 30:d8af03f01cd4 | 17 | AIR_HOCKEY_GAME, CIRCULAR_PONG_GAME, VERTICAL_PINBALL_GAME, PAC_MAN_GAME}; |
| mbedalvaro | 30:d8af03f01cd4 | 18 | |
| mbedalvaro | 0:345b3bc7a0ea | 19 | class blobConfig { |
| mbedalvaro | 15:56a0bf424e8d | 20 | public: |
| mbedalvaro | 15:56a0bf424e8d | 21 | |
| mbedalvaro | 15:56a0bf424e8d | 22 | //========== Methods ============= |
| mbedalvaro | 15:56a0bf424e8d | 23 | blobConfig(); // overaloded constructor |
| mbedalvaro | 30:d8af03f01cd4 | 24 | blobConfig(configType cftype, unsigned char numspots=1) { initConfig(cftype, numspots);}; // overaloded constructor with parameters |
| mbedalvaro | 15:56a0bf424e8d | 25 | ~blobConfig(); |
| mbedalvaro | 15:56a0bf424e8d | 26 | |
| mbedalvaro | 30:d8af03f01cd4 | 27 | void initConfig(configType myConfigType, unsigned char numblobs=1); |
| mbedalvaro | 30:d8af03f01cd4 | 28 | |
| mbedalvaro | 15:56a0bf424e8d | 29 | void clearConfig(); // actually delete every element of the config (note: the blobArray is a vector of POINTERS, it is not enought to do blobArray.clear()). |
| mbedalvaro | 15:56a0bf424e8d | 30 | |
| mbedalvaro | 15:56a0bf424e8d | 31 | void allKill(); // this put all the blobs in "dead" mode, meaning that neither rendering nor update is done (but they are not deleted). |
| mbedalvaro | 15:56a0bf424e8d | 32 | void allAlive(); |
| mbedalvaro | 15:56a0bf424e8d | 33 | |
| mbedalvaro | 15:56a0bf424e8d | 34 | void allStandBy(); //NO update, but rendering may be done (they are "frozen" in their positions) |
| mbedalvaro | 15:56a0bf424e8d | 35 | void allResume(); |
| mbedalvaro | 15:56a0bf424e8d | 36 | |
| mbedalvaro | 15:56a0bf424e8d | 37 | void allInvisible(); // blobs are invisible, but they may continue to evolve (call to update) |
| mbedalvaro | 15:56a0bf424e8d | 38 | void allVisible(); |
| mbedalvaro | 25:74cb85b85fd2 | 39 | |
| mbedalvaro | 25:74cb85b85fd2 | 40 | void allSetColor(unsigned char c); |
| mbedalvaro | 25:74cb85b85fd2 | 41 | |
| mbedalvaro | 15:56a0bf424e8d | 42 | void update(); // update dynamics |
| mbedalvaro | 15:56a0bf424e8d | 43 | void draw(); // draw in the LaserSensingTrajectory object (lsdTrajectory) of each blob, using the openGL laser rendering (not yet done). |
| mbedalvaro | 15:56a0bf424e8d | 44 | |
| mbedalvaro | 15:56a0bf424e8d | 45 | void sendConfData(); // send OSC data for all the blobs |
| mbedalvaro | 15:56a0bf424e8d | 46 | |
| mbedalvaro | 15:56a0bf424e8d | 47 | void computeBoundingBox(); |
| mbedalvaro | 15:56a0bf424e8d | 48 | |
| mbedalvaro | 30:d8af03f01cd4 | 49 | // ========= Template spots from which to create multi-spot configurations: ===================== |
| mbedalvaro | 30:d8af03f01cd4 | 50 | void addOneElasticLoopRelax(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 51 | void addOneElasticLoopContract(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 52 | void addOneElasticLoopContractCentral(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 53 | void addOneElasticLoopContractCentralFast(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 54 | void addOneElasticContourFollowing(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 55 | void addOneElasticContourFollowingFAST(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 56 | void addOneElasticBouncing(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(1,1)); |
| mbedalvaro | 15:56a0bf424e8d | 57 | |
| mbedalvaro | 30:d8af03f01cd4 | 58 | void addOneRigidLoopBouncing(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(2,2)); |
| mbedalvaro | 30:d8af03f01cd4 | 59 | void addOneRigidLoopLorentz(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(2,2)); |
| mbedalvaro | 30:d8af03f01cd4 | 60 | void addOneRigidLoopAirHockey(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 61 | void addOneRigidLoopFollowing(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 62 | void addOneRigidLoopTest(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 63 | void addOneRigidTrackingSpot(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 64 | void addOneRigidLoopPacman(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 30:d8af03f01cd4 | 65 | void addOneRigidLoopGhost(vector2Df initpos=vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df initspeed=vector2Df(0,0)); |
| mbedalvaro | 15:56a0bf424e8d | 66 | |
| mbedalvaro | 15:56a0bf424e8d | 67 | //========== Variables ============= |
| mbedalvaro | 30:d8af03f01cd4 | 68 | configType myConfigType; |
| mbedalvaro | 30:d8af03f01cd4 | 69 | |
| mbedalvaro | 15:56a0bf424e8d | 70 | // I use an array (actually a vector) of POINTERS of polymorphic class soundSpot with virtual methods (this way we can access polymorphic methods - of children - with a pointer) |
| mbedalvaro | 15:56a0bf424e8d | 71 | // BUT ATTENTION when clearing the vector: instantiated objects must be DELETED before. |
| mbedalvaro | 15:56a0bf424e8d | 72 | vector<soundSpot*> blobArray; |
| mbedalvaro | 15:56a0bf424e8d | 73 | int numBlobs;// this is just equal to blobArray.size() |
| mbedalvaro | 0:345b3bc7a0ea | 74 | }; |
| mbedalvaro | 0:345b3bc7a0ea | 75 | |
| mbedalvaro | 0:345b3bc7a0ea | 76 | |
| mbedalvaro | 0:345b3bc7a0ea | 77 | #endif |
