[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум Panda3D - по русски » Panda3D » Примеры кода » Редактор уровней (Пример демо.)
Редактор уровней
serg-kkzДата: Четверг, 12.05.2011, 17:51 | Сообщение # 1
Генерал-лейтенант
Группа: Модераторы
Сообщений: 689
Награды: 3
Репутация: 16
Статус: Offline
Вот задумал редактор уровней. Нужна критика, чтоб пока не позно внести корективы.
В редакторе укажите путь к панде, вкладка 'настройки редактора'. Для запуска нужен wx.
Прикрепления: Redaktor_0.0.5.rar(11Kb)


ООП  -  

Сообщение отредактировал serg-kkz - Понедельник, 20.06.2011, 16:40
 
ninthДата: Четверг, 12.05.2011, 23:19 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 1555
Награды: 5
Репутация: 46
Статус: Offline
Первое - файл физически в кодировке cp1251 хотя в начале указано utf-8
Второе - окно редактора не откликается - бегло просмотрел - похоже у тебя вообще отсутствует цикл обработки событий wx. Посмотри эту тему - http://panda3d.org.ru/forum/5-94-1 там набросок совмещения панды и wx имеется
 
serg-kkzДата: Пятница, 13.05.2011, 09:22 | Сообщение # 3
Генерал-лейтенант
Группа: Модераторы
Сообщений: 689
Награды: 3
Репутация: 16
Статус: 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
Группа: Администраторы
Сообщений: 1555
Награды: 5
Репутация: 46
Статус: Offline
Я под линуксом проверял, так что кодировка - это потенциальная проблема )
Суть не в размещении окна вместе/отдельно, а в том, что тебе нужно одновременно выполнять два цикла - один пандовский, другой - wx. Т.е. вызывать обработку и для того и для того. Надо либо объединять циклы вручную либо запускать их в отдельных потоках чтобы они выполнялись одновременно.

З.Ы. для отдельного окна можно было бы и встроенный tk использовать, тем более, что в панде под tk уже есть готовые компоненты для некоторых вещей - например браузер объектов, выбор цвета, ещё что-то вроде...

 
ninthДата: Пятница, 13.05.2011, 13:43 | Сообщение # 5
Admin
Группа: Администраторы
Сообщений: 1555
Награды: 5
Репутация: 46
Статус: Offline
А под виндой действительно работает. Хотя каким образом - не пойму. Похоже при создании wx.PySimpleApp() под виндой он автоматом стартует в параллельном потоке...
Другой вариант - под линуксом затыкается по ошибке, надо будет внимательнее глянуть.
 
serg-kkzДата: Суббота, 14.05.2011, 22:26 | Сообщение # 6
Генерал-лейтенант
Группа: Модераторы
Сообщений: 689
Награды: 3
Репутация: 16
Статус: 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
Генерал-лейтенант
Группа: Модераторы
Сообщений: 689
Награды: 3
Репутация: 16
Статус: 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
Генерал-лейтенант
Группа: Модераторы
Сообщений: 689
Награды: 3
Репутация: 16
Статус: Offline
egg - яйцо, ещё подробней?

ООП  -  
 
ninthДата: Понедельник, 16.05.2011, 16:37 | Сообщение # 11
Admin
Группа: Администраторы
Сообщений: 1555
Награды: 5
Репутация: 46
Статус: Offline
Да вроде разработчики предпринимали какие-то шаги в сторону официального прикручивания wx - может в том и дело.

Tk - полезно )

 
serg-kkzДата: Понедельник, 20.06.2011, 16:46 | Сообщение # 12
Генерал-лейтенант
Группа: Модераторы
Сообщений: 689
Награды: 3
Репутация: 16
Статус: Offline
Обновил редактор. ninth чтоб увидить проблему выдели обьект и установи камеру со стороны красной стрелки прям возле кончика(оси X) и попробуй подвигать ось Z, будет сильно откликаться на горезонтальные движения мыши. Управление камерой надо зажать правою кнопку мыши. W S A D.

P.S.
Кстати спародировал часть кода из демки wx - panda, в Ленуксе не заработало?


ООП  -  

Сообщение отредактировал serg-kkz - Понедельник, 20.06.2011, 17:09
 
Форум Panda3D - по русски » Panda3D » Примеры кода » Редактор уровней (Пример демо.)
Страница 1 из 11
Поиск: