Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

GLScene - классы   Найти похожие ветки 

 
Slavikk   (2005-05-27 08:40) [0]

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


 
Xeno ©   (2005-05-27 09:54) [1]

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


 
DeadMeat ©   (2005-05-27 10:40) [2]

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


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

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


 
Xeno ©   (2005-05-27 21:25) [4]

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


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


> 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)


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

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


 
XProger ©   (2005-06-02 17:47) [7]

Obj[i].ClassName?


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

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


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

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


 
Zer0 ©   (2005-06-02 18:16) [10]

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

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


 
Zer0 ©   (2005-06-02 18:17) [11]

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


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

2Fosgen

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

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


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

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


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


 
Zer0 ©   (2005-06-04 16:33) [14]

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


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

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

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;

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


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

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


 
Fosgen   (2005-06-06 09:39) [17]

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


 
Slavikk   (2005-06-06 10:22) [18]

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



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.012 c
1-1126781238
Aliv
2005-09-15 14:47
2005.10.09
установить ограничение после запятой


2-1125044782
magnus
2005-08-26 12:26
2005.10.09
работа с Word


2-1124970321
grigory
2005-08-25 15:45
2005.10.09
Побайтное копирование файла!


3-1125041082
ААР
2005-08-26 11:24
2005.10.09
Описание таблицы Btrieve


14-1126787890
stone
2005-09-15 16:38
2005.10.09
Откуда пошел компьютерный сленг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский