GLManager.pas 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //
  2. // This unit is part of the GLScene Engine, http://glscene.org
  3. //
  4. unit GLManager;
  5. (*
  6. Managers are used to manage many different kinds of clients in GLScene.
  7. They are registered so that when clients are loaded, the client can
  8. look up the manager + register themselves with it.
  9. *)
  10. interface
  11. {$I GLScene.inc}
  12. uses
  13. System.Classes,
  14. System.Types;
  15. procedure RegisterManager(aManager : TComponent);
  16. procedure DeRegisterManager(aManager : TComponent);
  17. function FindManager(classType : TComponentClass; const managerName : String) : TComponent;
  18. //------------------------------------------------------
  19. implementation
  20. //------------------------------------------------------
  21. var
  22. vManagers : TList;
  23. procedure RegisterManager(aManager : TComponent);
  24. begin
  25. if not Assigned(vManagers) then
  26. vManagers:=TList.Create;
  27. if vManagers.IndexOf(aManager)<0 then
  28. vManagers.Add(aManager);
  29. end;
  30. procedure DeRegisterManager(aManager : TComponent);
  31. begin
  32. if Assigned(vManagers) then
  33. vManagers.Remove(aManager);
  34. end;
  35. function FindManager(classType : TComponentClass; const managerName : String) : TComponent;
  36. var
  37. i : Integer;
  38. begin
  39. Result:=nil;
  40. if Assigned(vManagers) then
  41. for i:=0 to vManagers.Count-1 do with TComponent(vManagers[i]) do
  42. if InheritsFrom(classType) and (Name=managerName) then begin
  43. Result:=TComponent(vManagers[i]);
  44. Break;
  45. end;
  46. end;
  47. //============================================================
  48. initialization
  49. //============================================================
  50. finalization
  51. vManagers.Free;
  52. vManagers:=nil;
  53. end.