Редактор уровней
|
|
serg-kkz | Дата: Четверг, 12.05.2011, 17:51 | Сообщение # 1 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Вот задумал редактор уровней. Нужна критика, чтоб пока не позно внести корективы. В редакторе укажите путь к панде, вкладка 'настройки редактора'. Для запуска нужен wx.
ООП -
Сообщение отредактировал serg-kkz - Понедельник, 20.06.2011, 16:40 |
|
| |
ninth | Дата: Четверг, 12.05.2011, 23:19 | Сообщение # 2 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Первое - файл физически в кодировке cp1251 хотя в начале указано utf-8 Второе - окно редактора не откликается - бегло просмотрел - похоже у тебя вообще отсутствует цикл обработки событий wx. Посмотри эту тему - http://panda3d.org.ru/forum/5-94-1 там набросок совмещения панды и wx имеется
|
|
| |
serg-kkz | Дата: Пятница, 13.05.2011, 09:22 | Сообщение # 3 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Привет, интересно а у меня всё работает. Panda3D-1.7.2, wxPython2.8-win32-unicode-2.8.11.0-py26 , Notepad++. А пример у меня есть. Но мне хочется раздельно, так удобнее. Что касается цикла обработки событий, Ты имел ввиду менеджер задач? как в панде? но я впримерах не видел, да и конструкторы для работы wx генерят код без цикла обработки событий. Вот пример. FarPy GUIE Code import wx import wx.calendar
class MyFrame(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, 'form title', wx.DefaultPosition, (414, 312), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.RESIZE_BORDER | 0 | 0 | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX) self.panel = wx.Panel(self, -1)
self.button1 = wx.Button(self.panel, -1, 'button', (128,120), (172, 56)) self.button1.SetFont(wx.Font(8, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, 0, 'Microsoft Sans Serif')) self.button1.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) #---------------------------------------- --- --- --- -------------------------- class MyApp(wx.App): def OnInit(self): frame = MyFrame(None, 'App') frame.Show(True) self.SetTopWindow(frame) return True
app = MyApp(True) app.MainLoop() В ручную добавил событие. Code import wx import wx.calendar
class MyFrame(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, 'Proverka', wx.DefaultPosition, (414, 312), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.RESIZE_BORDER | 0 | 0 | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX) self.panel = wx.Panel(self, -1)
self.button = wx.Button(self.panel, -1, 'Proverka', (128,120), (172, 56)) self.Bind(wx.EVT_BUTTON, self.Proverka, id=self.button.GetId()) def Proverka(self, event): wx.MessageBox('proverka') #------------------------------------------------- -------------------------- class MyApp(wx.App): def OnInit(self): frame = MyFrame(None, 'App') frame.Show(True) self.SetTopWindow(frame) return True app = MyApp(True) app.MainLoop()
ООП -
Сообщение отредактировал serg-kkz - Пятница, 13.05.2011, 10:04 |
|
| |
ninth | Дата: Пятница, 13.05.2011, 13:32 | Сообщение # 4 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Я под линуксом проверял, так что кодировка - это потенциальная проблема ) Суть не в размещении окна вместе/отдельно, а в том, что тебе нужно одновременно выполнять два цикла - один пандовский, другой - wx. Т.е. вызывать обработку и для того и для того. Надо либо объединять циклы вручную либо запускать их в отдельных потоках чтобы они выполнялись одновременно. З.Ы. для отдельного окна можно было бы и встроенный tk использовать, тем более, что в панде под tk уже есть готовые компоненты для некоторых вещей - например браузер объектов, выбор цвета, ещё что-то вроде...
|
|
| |
ninth | Дата: Пятница, 13.05.2011, 13:43 | Сообщение # 5 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| А под виндой действительно работает. Хотя каким образом - не пойму. Похоже при создании wx.PySimpleApp() под виндой он автоматом стартует в параллельном потоке... Другой вариант - под линуксом затыкается по ошибке, надо будет внимательнее глянуть.
|
|
| |
serg-kkz | Дата: Суббота, 14.05.2011, 22:26 | Сообщение # 6 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| ninth ну работает же и в одном цикле, хотя я не программист но предположу что Panda и wxPython это модули верно… то почему под другие импортированные не надо вызывать обработку индивидуально или запускать их в отдельных потоках . Например я для сохранения карт в редакторе буду использовать elementtree – это чтоб в xml сохранять. Ну почему я её просто импортировал и пользуюсь? WINDOWS! Ну ладно. Я сегодня обнаружил баг – подтверждение в редакторе, надо открыть любой диалог выбора пути или файла, но не выбирать а кликнуть мышью в окно панды и закрыть диалог. И вдуматься. Каждый модуль работает отдельно сам по себе только задачи разные по очереди или параллельно. А вообще параллельно не возможно чтоб что-то работало в Windows ведь процессор и ядро одно (у меня) , может линуксе… эх наверное в ней и за зависшей программы остальное откликается в не зависимости приоритета. По первому замечанию вроде исправил, в Notepad++ кодировку поставил нужную. По второму добавил строку app.MainLoop() может в линуксе заработает. Обновил: архив в первом посте. а tk я видел, а тебе от того что он есть легче работать с пандой?
ООП -
Сообщение отредактировал serg-kkz - Суббота, 14.05.2011, 22:27 |
|
| |
dis_node | Дата: Суббота, 14.05.2011, 22:29 | Сообщение # 7 |
Лейтенант
Группа: Пользователи
Сообщений: 56
Награды: 0
Репутация: 2
Статус: Offline
| Лично я ориентируюсь максимально использовать универсальные средства (Maya, Blender и как следствие экспорт/импорт, через тэг привязывается любая инфа и модули). XML у каждого свой, а EGG у всех один - Пандюковский, я за унификацию.
|
|
| |
serg-kkz | Дата: Воскресенье, 15.05.2011, 09:24 | Сообщение # 8 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Обновил редактор: теперь можно сохранять. Но загрузки карт нет, пока... Для запуска нужна elementtree-1.2.6-20050316.win32, есть в архиве. Это для винды. У кого линукс, может глянуть здесь, хотя там я не видел. http://effbot.org/downloads Добавлено (14.05.2011, 22:36) ---------------------------------------------
Quote (dis_node) EGG у всех один - Пандюковский Гы. У меня два...и свои. Добавлено (15.05.2011, 09:24) --------------------------------------------- Мне кажеться в винде панда его тянет, wx как бы в нутри её цикла.
ООП -
|
|
| |
dis_node | Дата: Воскресенье, 15.05.2011, 14:29 | Сообщение # 9 |
Лейтенант
Группа: Пользователи
Сообщений: 56
Награды: 0
Репутация: 2
Статус: Offline
| Quote (serg-kkz) Гы. У меня два...и свои. А по-подробней? Ты пересочинил стандартный loader ?
Сообщение отредактировал dis_node - Воскресенье, 15.05.2011, 14:30 |
|
| |
serg-kkz | Дата: Воскресенье, 15.05.2011, 14:40 | Сообщение # 10 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| egg - яйцо, ещё подробней?
ООП -
|
|
| |
ninth | Дата: Понедельник, 16.05.2011, 16:37 | Сообщение # 11 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Да вроде разработчики предпринимали какие-то шаги в сторону официального прикручивания wx - может в том и дело. Tk - полезно )
|
|
| |
serg-kkz | Дата: Понедельник, 20.06.2011, 16:46 | Сообщение # 12 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Обновил редактор. ninth чтоб увидить проблему выдели обьект и установи камеру со стороны красной стрелки прям возле кончика(оси X) и попробуй подвигать ось Z, будет сильно откликаться на горезонтальные движения мыши. Управление камерой надо зажать правою кнопку мыши. W S A D.
P.S. Кстати спародировал часть кода из демки wx - panda, в Ленуксе не заработало?
ООП -
Сообщение отредактировал serg-kkz - Понедельник, 20.06.2011, 17:09 |
|
| |