Dynamicznie tworzone objekty... i tu pytanie.

Dynamicznie tworzone objekty... i tu pytanie.
MacMarian
  • Rejestracja:prawie 18 lat
  • Ostatnio:ponad 11 lat
  • Postów:21
0

Pisze prościutki a'la silniczek w OGL'u (na GLScene). Sprawa jest prosta: zrobiłem sobie trójwymiarową mape (heightmap odczytany z pliku), wstawiłem to na ekran, teraz z innego pliku odczytuje, ścieżki do modeli oraz ich X,Y,Z, poczym dynamicznie tworząc objekty, ustawiam wyczytane objekciki w żądanych pozycjach.

Cała idea wygląda następująco:

Kopiuj
procedure TForm1.CreateObjects;
var i: byte;
begin
for i:=0 to ObjMp.ItemCount-1 do //wiadomo...
 begin
  obj:=TGLFreeForm(Dummy.AddNewChild(TGLFreeForm)); //tworzymy objekcik
  Obj.LoadFromFile('obj\'+ObjMp.Items[i].ObjFile); //czytamy model
  Obj.Position.X:=ObjMp.Items[i].X; //ustawiamy rzecz jasna
  Obj.Position.Z:=ObjMp.Items[i].Y; //...
  Obj.Position.Y:=ObjMp.Items[i].Z; //...
  Obj.BuildOctree(); //wrzucamy na ekranik
 end;
end;

Wszystko działa ładnie, pięknie, lecz... nasuwa mi się jedno pytanie odnośnie dynamicznego tworzenia objektów tj.: jak teraz przesunąć jeden z tych objekcików, dajmy na to ten "stworzony jako trzeci", tzn jak sie odwołać do takiego objektu, poza procedurą gdzie takowy został stworzony.

Z góry dziękuje...

BI
  • Rejestracja:ponad 20 lat
  • Ostatnio:około 14 lat
0
Kopiuj
// poza funkcją:
var
Obj: array[0..N] of TTypeObjCzyCoTamMasz;
[...]
// w funkcji...
  for i:=0 to ObjMp.ItemCount-1 do
  begin
    Obj[I] := TGLFree.....
// w innym miejscu programu
  Obj[2].Position.X := Obj.Position.X - 10;

Tak nie idzie?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.