123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "fActorProxyC.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "GLS.BaseClasses"
- #pragma link "GLS.Cadencer"
- #pragma link "GLS.Coordinates"
- #pragma link "GLS.GeomObjects"
- #pragma link "GLS.Material"
- #pragma link "GLS.Objects"
- #pragma link "GLS.ProxyObjects"
- #pragma link "GLS.Scene"
- #pragma link "GLS.VectorFileObjects"
- #pragma link "GLS.SceneViewer"
- #pragma link "GLS.FileSMD"
- #pragma link "GLS.BaseClasses"
- #pragma resource "*.dfm"
- TForm1 *Form1;
- //---------------------------------------------------------------------------
- __fastcall TForm1::TForm1(TComponent* Owner)
- : TForm(Owner)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::FormCreate(TObject *Sender)
- {
- int i;
- SetGLSceneMediaDir();
- MasterActor->LoadFromFile("TRINITYrage.smd");
- MasterActor->AddDataFromFile("run.smd");
- MasterActor->AddDataFromFile("jump.smd");
- MasterActor->Animations->Items[0]->Name = "still";
- MasterActor->Animations->Items[1]->Name = "walk";
- MasterActor->Animations->Items[2]->Name = "jump";
- for (i = 0; i < MasterActor->Animations->Count-1; i++)
- {
- MasterActor->Animations->Items[i]->MakeSkeletalTranslationStatic();
- MasterActor->SwitchToAnimation(i); // forces animations to be initialized for ActorsProxies
- }
- MasterActor->SwitchToAnimation(0); // revert back to empty animation (not necessary)
- MasterActor->AnimationMode = aamLoop; // animationmode is shared between proxies.
- GLActorProxy1->StoreBonesMatrix = true;
- GLActorProxy2->StoreBonesMatrix = true;
- GLActorProxy1->Animation = MasterActor->Animations->Items[1]->Name;
- GLActorProxy2->Animation = MasterActor->Animations->Items[2]->Name;
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
- int X, int Y)
- {
- mouseX = X;
- mouseY = Y;
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::DoRaycastStuff()
- {
- TGLVector rayStart;
- TGLVector rayVector;
- TGLVector iPoint;
- TGLVector iNormal;
- SetVector(rayStart, GLCamera1->AbsolutePosition);
- SetVector(rayVector, GLSceneViewer1->Buffer->ScreenToVector(
- AffineVectorMake(mouseX, GLSceneViewer1->Height-mouseY, 0)));
- NormalizeVector(rayVector);
- if (GLActorProxy1->RayCastIntersect(
- rayStart, rayVector, &iPoint, &iNormal))
- {
- GLSphere1->Position->AsVector = iPoint;
- GLSphere1->Direction->AsVector = VectorNormalize(iNormal);
- }
- else
- if (GLActorProxy2->RayCastIntersect(rayStart,rayVector,&iPoint,&iNormal))
- {
- GLSphere1->Position->AsVector = iPoint;
- GLSphere1->Direction->AsVector = VectorNormalize(iNormal);
- }
- else
- {
- GLSphere1->Position->AsVector = rayStart;
- GLSphere1->Direction->AsVector = rayVector;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
- const double newTime)
- {
- // Align object to hand
- * GLArrowLine1->Matrix = GLActorProxy1->BoneMatrix("Bip01 R Finger1");
- * GLArrowLine2->Matrix = GLActorProxy2->BoneMatrix("Bip01 R Finger1");
- // turn actors
- if (cbActorsAreTurning->Checked)
- {
- GLActorProxy1->Turn(-deltaTime *130);
- GLActorProxy2->Turn(deltaTime *100);
- }
- DoRaycastStuff();
- }
- void __fastcall TForm1::Timer1Timer(TObject *Sender)
- {
- Panel1->Caption = GLSceneViewer1->FramesPerSecondText(0);
- GLSceneViewer1->ResetPerformanceMonitor();
- }
- //---------------------------------------------------------------------------
|