1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "fMultiproxyC.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "GLS.BaseClasses"
- #pragma link "GLS.Cadencer"
- #pragma link "GLS.Coordinates"
- #pragma link "GLS.MultiProxy"
- #pragma link "GLS.Objects"
- #pragma link "GLS.Particles"
- #pragma link "GLS.Scene"
- #pragma link "GLS.SceneViewer"
- #pragma resource "*.dfm"
- TForm1 *Form1;
- //---------------------------------------------------------------------------
- __fastcall TForm1::TForm1(TComponent* Owner)
- : TForm(Owner)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::FormCreate(TObject *Sender)
- {
- int i;
- // adjust settings to their default
- RBUseLODsClick(Sender); //MPSphere
- // replicate the multiproxy via a TGLParticles object
- for (i = 0; i < 35; i++) {
- GLParticles->CreateParticle()->TagFloat = DegToRad((float)i*10);
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::Timer1Timer(TObject *Sender)
- {
- LabelFPS->Caption = Format("%.1f FPS", ARRAYOFCONST((GLSceneViewer1->FramesPerSecond())));
- GLSceneViewer1->ResetPerformanceMonitor();
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::RBUseLODsClick(TObject *Sender)
- {
- // adjust LOD on/off (by adjusting base sphere's detail)
- if (RBUseLODs->Checked) {
- SPHighRes->Slices = 32;
- SPHighRes->Stacks = 32;
- SPMedRes->Slices = 16;
- SPMedRes->Stacks = 16;
- SPLowRes->Slices = 8;
- SPLowRes->Stacks = 8;
- }
- else
- if (RBHighRes->Checked)
- {
- SPHighRes->Slices = 32;
- SPHighRes->Stacks = 32;
- SPMedRes->Slices = 32;
- SPMedRes->Stacks = 32;
- SPLowRes->Slices = 32;
- SPLowRes->Stacks = 32;
- }
- else
- if (RBLowRes->Checked)
- {
- SPHighRes->Slices = 8;
- SPHighRes->Stacks = 8;
- SPMedRes->Slices = 8;
- SPMedRes->Stacks = 8;
- SPLowRes->Slices = 8;
- SPLowRes->Stacks = 8;
- }
- // colorize the LODs, to make them clearly visible
- CBColorize->Enabled = RBUseLODs->Checked;
- if (CBColorize->Checked && RBUseLODs->Checked)
- {
- SPHighRes->Material->FrontProperties->Diffuse->Color = clrRed;
- SPMedRes->Material->FrontProperties->Diffuse->Color = clrBlue;
- SPLowRes->Material->FrontProperties->Diffuse->Color = clrYellow;
- }
- else
- {
- SPHighRes->Material->FrontProperties->Diffuse->Color = clrGray80;
- SPMedRes->Material->FrontProperties->Diffuse->Color = clrGray80;
- SPLowRes->Material->FrontProperties->Diffuse->Color = clrGray80;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::MPSphereProgress(TObject *Sender, const double deltaTime,
- const double newTime)
- {
- // this is invoked for each of our MultiProxys, it makes them loop an ellipse
- GLParticles->Position->X = Sin(newTime+GLParticles->TagFloat)*80-60;
- GLParticles->Position->Z = Cos(newTime+GLParticles->TagFloat)*7;
- }
- //---------------------------------------------------------------------------
|