forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Написал c# враппер (http://forum.boolean.name/showthread.php?t=15832)

pozitiffcat 11.11.2011 22:28

Написал c# враппер
 
Написал враппер всех функций ксорса.. в чем фишка? В том, что тут все максимально ООП, и подключается одной dll к любым .NET языкам. Плюс я дорабатываю враппер своими функциями например:
Цитата:

XE.Shadows.SetAutoShadows(); - устанавливет автоматическую настройку теней (для ленивых).. прописав эту функцию после XE.Graphics.Graphics3D(), вам не нужно будет заботится о прописывании команд для теней, учтите что будут использоваться стандартные параметры, если же вы хотите настраивать под себя, вам придется, все прописывать вручную
На моем сайте http://malcdevelop.ru Видео и туториалы

HolyDel 14.11.2011 17:10

Ответ: Написал c# враппер
 
ну нормально, чё.

pax 14.11.2011 21:53

Ответ: Написал c# враппер
 
Посоветовал бы исправить метод equals на public override bool Equals(object obj), переопределить операторы == и != и метод public override int GetHashCode() для TEntity.

Да и как уже сказал MoKa - убрать префикс у классов.

pozitiffcat 14.11.2011 22:27

Ответ: Написал c# враппер
 
переопределить операторы == и !=
Я пробовал переопределять... но происходит зацикливание,
вот почему

if((first!=null) && (second!=null))//<<тут зацикливание
{
if(first._handle == second._handle) return true;
}
return false;

Префикс не уберу. Я хочу чтобы он остался. Это мой "загон"

Hurrit 14.11.2011 22:33

Ответ: Написал c# враппер
 
где пост Моки?

Dream 14.11.2011 22:35

Ответ: Написал c# враппер
 
Цитата:

Сообщение от pozitiffcat (Сообщение 209724)
переопределить операторы == и !=
Я пробовал переопределять... но происходит зацикливание,
вот почему

if((first!=null) && (second!=null))//<<тут зацикливание
{
if(first._handle == second._handle) return true;
}
return false;

Префикс не уберу. Я хочу чтобы он остался. Это мой "загон"

эм... не мешалобы подучить матчасть
http://blog.nguen.net/post191-override_equals.html
по поводу шанса null -
простой вариант -
Код:

class Test
        {
                public int X;
               
                public override bool Equals (object obj)
                {
                        if(obj is  Test)
                        {
                                return X==((Test)obj).X;
                        }
                        return base.Equals (obj);
                }
               
                public static bool operator==(Test obj,Test obj2)
                {
                        if(obj  is Test)
                        {
                               
                        return obj.Equals(obj2);
                        }
                        else if(obj2 is Test)
                        {
                                return obj2.Equals(obj);
                        }
                        return false;
                }
               
                public static bool operator!=(Test obj,Test obj2)
                {
                       
                        if(obj  is Test)
                        {
                               
                        return !obj.Equals(obj2);
                        }
                        else if(obj2 is Test)
                        {
                                return !obj2.Equals(obj);
                        }
                        return true;
                }
               
               
        }


moka 14.11.2011 22:39

Ответ: Написал c# враппер
 
Цитата:

Сообщение от Hurrit (Сообщение 209725)
где пост Моки?

Снёс оффтоп в другую тему: http://forum.boolean.name/showthread.php?t=15847

pax 14.11.2011 22:52

Ответ: Написал c# враппер
 
Цитата:

Сообщение от pozitiffcat (Сообщение 209724)
Префикс не уберу. Я хочу чтобы он остался. Это мой "загон"

Загонный "загон".

Еще:
xx для класса функций ксорса это как-то вообще. Для всех объектов, имеющих _handle надо было бы сделать базовый класс и наследовать все объекты от него. Не надо было бы переопределять equals везде.
Не вижу необходимости в класса с суффиксом s, это можно статическими методами сделать.

moka 14.11.2011 23:07

Ответ: Написал c# враппер
 
Кстати класс xx ты не объявил как статик, и при этом он содержит сами Interop ссылки на функции из библиотеки ксорса. Так вот, лучше наименовать его Interop например, или Functions. Использоваться он должен всё равно только интернально в библиотеке, поэтому ему ещё и видимость нада internal а также объявить его в именном пространстве свойственному к библиотеке.

Вообще архитектурно кривостей Очень много..

pax 15.11.2011 00:01

Ответ: Написал c# враппер
 
Вложений: 1
Переименовал на сколько сил хватило...

pozitiffcat 15.11.2011 00:18

Ответ: Написал c# враппер
 
Цитата:

Сообщение от pax (Сообщение 209743)
Переименовал на сколько сил хватило...

эх.. а смысл.. если как обычно. говно

pax 15.11.2011 00:20

Ответ: Написал c# враппер
 
А просто так)

pozitiffcat 15.11.2011 11:32

Ответ: Написал c# враппер
 
И всетаки неплохо получилось.. то что ты переименовал, я оставлю так.. изменю кое что что предложил Мока. Сделаю на HashTable сохранение всех созданных энтити и сюрфейсов, текстур, брашей.. короче всего где есть хэндл, и брать оттуда если уже существует

pax 15.11.2011 11:55

Ответ: Написал c# враппер
 
Я там еще удалил из XE ссылки на объекты с окончанием s. А сами объекты сделал статическими...

Кстати не хватает энамов для констант шейдеров...

pozitiffcat 15.11.2011 12:26

Ответ: Написал c# враппер
 
Цитата:

Сообщение от pax (Сообщение 209772)
Я там еще удалил из XE ссылки на объекты с окончанием s. А сами объекты сделал статическими...

Кстати не хватает энамов для констант шейдеров...

чет голова не варит, а какие там константы, матрицы чтоль? Их наверно невозможно будет завернуть в енум для использования в функции, придется делать константами в классе


Часовой пояс GMT +4, время: 23:52.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot