Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GLScene - классы [Delphi, Windows]


Slavikk ©   (2005-05-27 08:40:00) 

В начале проги я прописываю класс,
1) Как дальше вызвать предмет принадлежаший этому классу
2) Как параметры этого предмета взять из .ini или .txt


Slavikk   (2005-06-06 10:22:00) [1]

Тутова я, живой. Всё что было интерестно узнал. Спасибо!!


Fosgen   (2005-06-06 09:39:00) [2]

А что тут еще развивать-то?
Вот видимо "зачинщик" темы (Slavikk) и схлопнулся...


Ищущий   (2005-06-06 08:56:00) [3]

Кстати, а где Slavikk ?


Ищущий   (2005-06-06 08:49:00) [4]

ОГРОМНОЕ СПАСИБО ВСЕМ кто принимает участие в данной ветке

2Fosgen - Использую GLScene. GetPickedObject() - от него и плясал.

2ZerO Решение в принципе стандартное, но требует организации структуры хранящей данные о соответствии тега и экземпляра класса;

Решение которым сейчас пользуюсь:
---
на MouseMove
GetObject:=GLSceneViewer1.Buffer.GetPickedObject(x,y);
---
procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime,
 newTime: Double);
var sd: string;
begin
 if Assigned(GivObject) then
    begin
    if GetObject is THarakter then
     begin
      sd:=(GetObject as THarakter).GetDate_o;
      showmessage(sd);
     end;
    end;
end;

Буду благодарен за развитие темы.


Zer0   (2005-06-04 16:33:00) [5]

у каждого класса есть "бесполезное" поле тег. если при создании планет как простых объектов GLScene в тег заносить уникальные числа, то потом зная только тег объекта под курсором можно определить что угодно.


Fosgen   (2005-06-04 09:29:00) [6]

1. Тебя интересует как сделать класс? Это к учебнику по ООП...
Хотя..
  type TPlanet = class
       private
       public
          Name:String;
       end;
 
2. Object:TPlanet;
  Object:=TPlanet.Create;
  Object.Name:='MOON';


3. А тут вопрос к тебе - ты что используешь? Чистый OGL, DirectX,GLScene? По GLScene я тебе подскажу что в обработчике событий от мыши используешь GetpPickedObject()и в принципе этого должно хватить.


Ищущий   (2005-06-03 08:48:00) [7]

2Fosgen

Контекст поподробнее:
1. Делаем класс (напр. TPlanet)
2. При добавлении объекта создаем экземпляр класса с определенными свойствами(например это Луна с ником MOON)
3. В программе: наводим курсор на вращающийся шар и с радостью узнаем что это Луна(а также её партийную кличку)

Мне интересны именно ВАРИАНТЫ решения данного вопроса.


Zer0   (2005-06-02 18:17:00) [8]

[чорт! промазал блин =(]


Zer0   (2005-06-02 18:16:00) [9]

Если все делать по чесному,  то придется писать процедуру проверки столкновения луча, выходящего из ценра камеры и направленного в определенном направлении (зависит от fov и положения мышы относительно центра экрана) со всей сценой. (ессно тут придется использовать какой либо вид оптимизации).
В жлцсене есть процедуры соотвествненно ScreenToVector и RayCastIntersect.

Ну а если заморачивацо не хочетсо то надо посмотреть дему interface\pick


Fosgen   (2005-06-02 18:03:00) [10]

2 Ищущий : А если посеръезнее - скорее у объекта должна быть ссылка на экземпляр класса, дабы от объекта получать доступ к имени оного экземпляра.


Fosgen   (2005-06-02 18:00:00) [11]

2 Ищущий : Можно описать контекст поподробнее? Особенно если учесть что сама обработка события от "наведении на объект указателя маши" и получения имени экземпляра класса - две слабо связанные отдельные задачи...


XProger   (2005-06-02 17:47:00) [12]

Obj[i].ClassName?


Ищущий   (2005-06-02 15:54:00) [13]

Хорошо... В развитие вопроса. Допустим класс сделан, добавлены свойства и функции. Устанавливаем экземпляру класса ссылку на объект и ,допустим, имя. Как при наведении на объект указателя маши получить имя экземпляра класса...


Кефир87   (2005-05-27 21:30:00) [14]


> 1) Как дальше вызвать предмет принадлежаший этому классу

TMyCoolClass = class
 predmet : TPredmet;
 constructor Create;
end;

<..>
constructor TMyCoolClass.Create;
begin
 predmet := TPredmet.Create;
end;

<..>
var
 MyCoolClass : TMyCoolClass;

<...>
MyCoolClass := TMyCoolClass.Create;
<...>
MyCoolClass.predmet.take;

Надо людям помогать 8)


Xeno   (2005-05-27 21:25:00) [15]

>Кефир87
Похоже именно про них :)))


Кефир87   (2005-05-27 20:52:00) [16]

Вопрос про классы? про те самые обычные классы? Или я чего-то не понял?


DeadMeat   (2005-05-27 10:40:00) [17]

Чета не могу сообразить, причем тут GLScene..


Xeno   (2005-05-27 09:54:00) [18]

Думаю на такие вопросы тебе вряд ли что-то хорошее ответят,это-же основы, читай литературу и доки по программированию, к счастью этого добра в инете полно :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо