home *** CD-ROM | disk | FTP | other *** search
- #define DEMO_OBJS
-
- #include "amber.hpp"
- #include "demo.hpp"
-
- #define X 0
- #define Y 1
- #define Z 2
-
- void init(channelClass *ch)
- {
- F4 color = {1.0,0.0,0.0,1.0};
- V3 pos, trackPoint;
- // Create center red box;
- sp[0] = new spinClass(Y, 0.017, 1.0, 1.0, 1.0);
- sp[0]->setAllColor(color);
- V3_set(pos, 0.0, 0.0, 0.0);
- sp[0]->setPosition(pos);
- //sp[0]->rotate(Z, 0.34);
-
- // Create child of red cube
- V3_init(pos);
- sp[1] = new spinClass(X,-0.017, 0.5, 0.5, 0.5);
- color[0] = 0.0;
- color[1] = 1.0;
- sp[1]->setAllColor(color);
- pos[X] = 2.0;
- sp[1]->setPosition(pos);
-
- // Create child of child
- sp[5] = new spinClass(Z, 0.017, 0.25, 0.25, 0.25);
- sp[5]->setAllColor(color);
- pos[Y] = 0.5;
- sp[5]->setPosition(pos);
-
- // Create child of red cube
- V3_init(pos);
- sp[2] = new spinClass(X, 0.017, 0.5, 0.5, 0.5);
- color[1] = 0.0;
- color[2] = 1.0;
- sp[2]->setAllColor(color);
- pos[X] = -2.0;
- sp[2]->setPosition(pos);
-
- // Create child of child
- sp[6] = new spinClass(Z, -0.017, 0.25, 0.25, 0.25);
- sp[6]->setAllColor(color);
- pos[Y] = 0.5;
- sp[6]->setPosition(pos);
-
- // Create child of red cube
- V3_init(pos);
- sp[3] = new spinClass(Z, -0.017, 0.5, 0.5, 0.5);
- color[0] = 1.0;
- sp[3]->setAllColor(color);
- pos[Z] = 2.0;
- sp[3]->setPosition(pos);
-
- // Create child of child
- sp[7] = new spinClass(Z, 0.017, 0.25, 0.25, 0.25);
- sp[7]->setAllColor(color);
- pos[Y] = 0.5;
- sp[7]->setPosition(pos);
-
- // Create child of red cube
- V3_init(pos);
- sp[4] = new spinClass(Z, 0.017, 0.5, 0.5, 0.5);
- color[0] = 0.0;
- color[1] = 1.0;
- sp[4]->setAllColor(color);
- pos[Z] = -2.0;
- sp[4]->setPosition(pos);
-
- // Create child of child
- sp[8] = new spinClass(Z, 0.017, 0.25, 0.25, 0.25);
- sp[8]->setAllColor(color);
- pos[Y] = 0.5;
- sp[8]->setPosition(pos);
-
- // Create point tracking object
- tb = new cubeClass(0.05,0.05,0.05);
- F4_set(color, 1.0,1.0,1.0,1.0);
- tb->setAllColor(color);
- V3_set(pos, -0.125,-0.1255,-0.125);
- pt = new pTrackClass(sp[8], pos, tb);
-
-
- sp[1]->addChild(sp[5]);
- sp[2]->addChild(sp[6]);
- sp[3]->addChild(sp[7]);
- sp[4]->addChild(sp[8]);
-
- // Add four medium children to parent.
- sp[0]->addChild(sp[1]);
- sp[0]->addChild(sp[2]);
- sp[0]->addChild(sp[3]);
- sp[0]->addChild(sp[4]);
-
- V3_set(pos,0.0,0.0,10.0);
- ch->setPosition(pos);
- }
-
- void cleanup()
- {
- delete sp[0];
- delete sp[1];
- delete sp[2];
- delete sp[3];
- delete sp[4];
- delete sp[5];
- delete sp[6];
- delete sp[7];
- delete sp[8];
- delete pt;
- delete tb;
- }
-
- extern void processChar(unsigned int nChar)
- {
- switch (nChar) {
- case 'A':
- if (attached) break;
- attached=1;
- sp[0]->addChild(sp[1]);
- sp[0]->addChild(sp[2]);
- sp[0]->addChild(sp[3]);
- sp[0]->addChild(sp[4]);
- sp[1]->addChild(sp[5]);
- sp[2]->addChild(sp[6]);
- sp[3]->addChild(sp[7]);
- sp[4]->addChild(sp[8]);
- break;
- case 'B':
- if (!attached) break;
- attached=0;
- sp[0]->removeChild(sp[1]);
- sp[0]->removeChild(sp[2]);
- sp[0]->removeChild(sp[3]);
- sp[0]->removeChild(sp[4]);
- sp[1]->removeChild(sp[5]);
- sp[2]->removeChild(sp[6]);
- sp[3]->removeChild(sp[7]);
- sp[4]->removeChild(sp[8]);
- break;
- }
- }
-