1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #include <tchar.h>
- #pragma hdrstop
- #include "Unit1.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "GLS.BaseClasses"
- #pragma link "GLS.Cadencer"
- #pragma link "GLS.Coordinates"
- #pragma link "GLS.Material"
- #pragma link "GLS.Objects"
- #pragma link "GLS.Scene"
- #pragma link "GLS.SimpleNavigation"
- #pragma link "GLS.SceneViewer"
- #pragma resource "*.dfm"
- TForm1 *Form1;
- //---------------------------------------------------------------------------
- __fastcall TForm1::TForm1(TComponent* Owner)
- : TForm(Owner)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::FormCreate(TObject *Sender)
- {
- TGLSprite *spr;
- String MediaPath = ExtractFilePath(ParamStr(0));
- int I = MediaPath.Pos("Demos");
- if (I != 0) {
- MediaPath.Delete(I+5, MediaPath.Length() - (I+5));
- MediaPath += "Media\\";
- SetCurrentDir(MediaPath);
- }
- Sprite1->Material->Texture->Image->LoadFromFile(MediaPath+"Flare1.bmp");
- GLMaterialLibrary1->TexturePaths = MediaPath;
- GLMaterialLibrary1->Materials->Items[0]->Material->Texture->Image->LoadFromFile("Flare1.bmp");
- // New sprites are created by duplicating the template "sprite2"
- for (int i = 1; i < 9; i++) {
- spr = (TGLSprite*)GLDummyCube1->AddNewChild(__classid(TGLSprite));
- spr->Assign(Sprite2);
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
- const double newTime)
- {
- int i;
- double a, aBase;
- // angular reference : 90° per second <=> 4 second per revolution
- aBase = 90*newTime;
- // "pulse" the star
- a = DegToRad(aBase);
- Sprite1->SetSquareSize(4+0.2*cos(3.5*a));
- // rotate the sprites around the yellow "star"
- for (i = 0; i < GLDummyCube1->Count-1; i++) {
- a = DegToRad(aBase+i*8);
- // rotation movement
- GLDummyCube1->Children[i]->Position->X = 4*cos(a);
- GLDummyCube1->Children[i]->Position->Z = 4*sin(a);
- // ondulation
- GLDummyCube1->Children[i]->Position->Y = 2*cos(2.1*a);
- // sprite size change
- Sprite1->SetSquareSize(2+cos(3*a));
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::FormResize(TObject *Sender)
- {
- // This lines take cares of auto-zooming.
- // magic numbers explanation :
- // 333 is a form width where things looks good when focal length is 50,
- // ie. when form width is 333, uses 50 as focal length,
- // when form is 666, uses 100, etc...
- GLCamera1->FocalLength = Width*50/333;
- }
- //---------------------------------------------------------------------------
|