Quest3D - Русскоязычное сообщество

Quest3D => Программирование => Тема начата: DimiS от 14 Августа 2008, 15:59:23



Название: Newton Physics + OO Interface
Отправлено: DimiS от 14 Августа 2008, 15:59:23
тема в основном по програмированию
Мне нужно построить систему для удобной работы с объектами, которые взаимодействуют между собой с помощью Newton Physics. Для этого я описал три интерфейса: IRenderable(содержит методы Init, Update, Render); IPhysical(содержит поля: матрица resetPos и Newton Body); IObjectsManager(содержит список всех объектов и вызывает им апдейт и рендер). В принципе все мои объекты наследуют оба интерфейса(IRenderable+IPhysical), и их можно было бы совместить, но думаю все мои беды не от этого).

Рендер объектов реализован по простому -- вызывается 3Д обжект к которому подключен необходимый сюрфейс и ньютон боди из интерфейса(т.е. к нему нужно ещё коннектить THIS). Первый глюк с которым я столкнулся, это что после резета все объекты, которые хранились в списке моего менеджера, появляются в одной точке. Причём это реально разные боди, они по разному колизятся и расползаются в разные стороны, но с какого то перепугу появляются все в одной точке. Так я это мозгом и не смог понять. Решение -- при резете удаляю все объекты из списка и создаю заново. Костыль, но меня пока устраивает.
Далее мне надо было прилепить Hinge joint к одному из классов. Поэтому для него я создал ещё один интерфейс, который должен был хранить этот ченел Newton Hinge. Проблема оказалась в том что этот ченел нельзя добавить как поле в интерфейс, просто потому что его нету в списке тех ченелов которые можно добавлять. Другие джоинты есть, а этого нету))) Ну этот глюк я хотябы понимаю от чего мог произойти, и это просто баг который в будущем исправят.
Последнее на что я напоролся -- мне нужно было сделать проверку позиции своего объекта, т.е в апдейте постоянно проверять, а не нахожусь ли я недалеко от ...какой то точки например. Так вот при любом обращении к своему полю ньютон бади оно резетится в стартовую позицию... Там конечно много всяких ченелов которые я не подключаю к нему кроме THIS, но я не знаю как ещё мне получить ту матрицу, которую возвращяет ньютон бади, не обращяясь к самому ньютон бади

Понимаю что написал не совсем внятно, но не знаю как расписать по-понятнее, спрашивайте. Надеюсь найдутся люди которые делали нечто подобное и может быть подскажут как победить эти проблемы

П.С: версия квеста 4.1.2