![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Zigl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.9.2007 Где: г. Павлодар, Каза хстан Репутация: нет Всего: нет |
Постараюсь объяснить что мне нужно.
Пишу редактор для игрушки, все свойства объекта отображаются в PropertyGrid. Есть структурка Vector3. Сразу поясню что исходников у меня нету, использую только сборки. Хочу сделать чтобы данные этого вектора отображались как в Visual Studio поле типа Size например, т.е. что-то типа этого Position X: 10, Y: 20, Z: 30 X 10 Y 20 Z 30 Т.е. эта строчка открывается, а там еще три. Но проблема в том что структурка Vector3 не содержит эти свойства, там есть но они левые, а компоненты x,y,z существуют как просто открытые поля. Еще прикол в том, что редактор делается на основе игрового движка(писан мною), в котором есть много различных классов объектов в которых используется Vector3 типа Position, Size и тд. Пока приходится делать так, в редакторе наследую класс через partial (т.е. продолжаю) и в нем перекрываю эти свойства которые возвращают уже мою структурку Vec3, в которой есть эти три свойства X,Y,Z и в нем реализована конвертация (implicit) из Vector3 в Vec3 и обратно. И к свойствам Position применял атрибут Vector3TypeConverter, который преобразовывал значение вектора в строку и обратно, а так как там не было больше других свойств то три свойства X,Y,Z отображались и все было прекрасно. Но получается слишком много одного и тогоже кода. Ковырялся с TypeConverter'ом наследовал класс от ExpandableObjectConverter, реализовывал там преобразование в строку и обратно, чтобы сделать строчку X: 10, Y: 20, Z: 30, потом в перегруженном методе GetProperties создавал новые свойства, такие PropertyDescriptor pd0 = TypeDescriptor.CreateProperty(typeof(Vector3), "X", typeof(float), attributes); PropertyDescriptor pd1 = TypeDescriptor.CreateProperty(typeof(Vector3), "Y", typeof(float), attributes); PropertyDescriptor pd2 = TypeDescriptor.CreateProperty(typeof(Vector3), "Z", typeof(float), attributes); и возвращал их, в PropertyGrid они конечно повлялись, но вместо всяких значений было написанно "не задана ссылка". Вот я и не знаю как связать эти новые свойства с данными вектора. Может можно каким-нибудь образом сувать в PropertyGrid структуру Vec3, хотя на самом деле в свойстве используется Vector3, просто Vec3 сам будет конвертироваться в Vector3. Может кто-нибудь сталкивался. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |