HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- Немного о будущем XDM3038 (https://hlfx.ru/forum/showthread.php?threadid=4641)
Отправлено XaeroX 22-10-2015 в 09:34:
~ X ~
Ну у тебя и вопросы "между делом". 
Вот держи, например, такой вариант:
C++ Source Code:
8 | virtual ~CRenderSystem() {} |
9 | virtual void printStuff() = 0; |
12 | class CXWiderRenderSystem : public CRenderSystem |
15 | virtual ~CXWiderRenderSystem() {} |
16 | static CXWiderRenderSystem *create() { return new CXWiderRenderSystem(); } |
17 | virtual void printStuff() { std::cout << "CXWiderRenderSystem::printStuff()" << std::endl; } |
20 | class CXaeroXRenderSystem: public CRenderSystem |
23 | virtual ~CXaeroXRenderSystem() {} |
24 | static CXaeroXRenderSystem *create() { return new CXaeroXRenderSystem(); } |
25 | virtual void printStuff() { std::cout << "CXaeroXRenderSystem::printStuff()" << std::endl; } |
28 | class CGContRenderSystem: public CRenderSystem |
31 | virtual ~CGContRenderSystem() {} |
32 | static CGContRenderSystem *create() { return new CGContRenderSystem(); } |
33 | virtual void printStuff() { std::cout << "CGContRenderSystem::printStuff()" << std::endl; } |
36 | class CRenderSystemFactory |
38 | typedef CRenderSystem *( *CreateFn )(); |
39 | typedef std::map<std::string,CreateFn> ClassMap; |
41 | template<typename T> void registerClass() { |
42 | const char *className = typeid( T ).name(); |
43 | if ( !strncmp( className, "class ", 6 ) ) className += 6; |
44 | m_types.insert( std::make_pair( std::string( className ), reinterpret_cast<CreateFn>( &T::create ) ) ); |
46 | CRenderSystem *createClass( const std::string &name ) const { |
47 | ClassMap::const_iterator it = m_types.find( name ); |
48 | if ( it == m_types.cend() ) |
50 | return (it->second)(); |
52 | void listClasses() const { |
53 | for ( ClassMap::const_iterator it = m_types.cbegin(); it != m_types.cend(); ++it ) { |
54 | std::cout << it->first << " : " << it->second << std::endl; |
61 | static CRenderSystemFactory factory; |
63 | void InitFactory( void ) |
65 | factory.registerClass<CXWiderRenderSystem>(); |
66 | factory.registerClass<CXaeroXRenderSystem>(); |
67 | factory.registerClass<CGContRenderSystem>(); |
68 | factory.listClasses(); |
71 | CRenderSystem *CreateByName( const char *name ) |
73 | return factory.createClass( name ); |
76 | int main( int argc, char *argv[] ) |
80 | CRenderSystem *a1 = CreateByName( "CXWiderRenderSystem" ); |
81 | if ( a1 ) a1->printStuff(); |
82 | CRenderSystem *a3 = CreateByName( "CGContRenderSystem" ); |
83 | if ( a3 ) a3->printStuff(); |
84 | CRenderSystem *a2 = CreateByName( "CXaeroXRenderSystem" ); |
85 | if ( a2 ) a2->printStuff(); |
Можно было сделать покрасивее, оформив фабрику как синглтон и избавившись от глобальной переменной, но мне лениво, сам допишешь. 
Для улучшения портабельности можно избавиться от typeid и передавать имя класса как строку в функцию registerClass, но тогда надо завести макрос, который это сделает сам.
Отправлено ~ X ~ 22-10-2015 в 09:59:
XaeroX спасибки.. оооой... ну ты тут STL накрутил... Принцип понял - всё равно для void InitFactory( void ) придётся все-все хедеры включать в один файл. По сути, за исключением внесённого static Create(), это те же ифы, запрятанные в массив и класс.
PS: сейчас прибежит тхамбс и скажет, какое это говно - наши плюсы. 
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено XaeroX 22-10-2015 в 10:01:
Цитата:
~ X ~ писал:
ну ты тут STL накрутил...
Можно и без STL, он тут не критичен. Я же говорю - по-быстрому написал.
Отправлено Garux 22-10-2015 в 11:17:
Цитата:
Цэ ж Безье, они по определению не круглые.
Но можно делать и круглые круги, просто там в редакторе нет такой фичи
Отправлено XaeroX 22-10-2015 в 11:46:
Garux
Как сделать круглый круг патчем?
Отправлено Garux 22-10-2015 в 12:05:
Curve->Exact Cone/Sphere/Cylinder
Как-то так
Отправлено XaeroX 22-10-2015 в 12:13:
Garux
Это в нетрадианте?
Я просто в фичах этих ваших радиантов плохо ориентируюсь и не всегда знаю, где реализацию искать.
Отправлено Garux 22-10-2015 в 12:27:
Хотел написать, что в любом из ветки 1.5, ан нет, netradiant.
В dark/ufo тоже должно быть.
Отправлено XaeroX 22-10-2015 в 14:38:
Ага, спасибо. Добавлю.
Добавлено 22-10-2015 в 20:38:
Блин, оно, оказывается, очень просто сделано.
Можно было и самому догадаться. Видимо, я в школе геометрию прогуливал.
Отправлено Garux 22-10-2015 в 15:39:
Такая же история, выспался на паре про матрицы.
Подонки не предупредили, что оно в играх задействовано xD
Отправлено ~ X ~ 22-10-2015 в 18:44:
Цитата:
Garux писал:
Цэ ж Безье, они по определению не круглые.
Лолшто? Давно это Безьями нельзя круги рисовать?
Мне тут говорят, что под XDM надо впилить замены всем моделям монстров, а то, видите ли, дефолтные уже никого не радуют. 
А мне суровый барник 1.0 нравится больше хыдыпачного...__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено XaeroX 22-10-2015 в 18:57:
Цитата:
~ X ~ писал:
Давно это Безьями нельзя круги рисовать?
Ну ты сам как представляешь себе задание окружности полиномом? Там же sqrt как минимум.
Отправлено thambs 22-10-2015 в 19:01:
~ X ~
качественных 10 моделей в более менее одном стиле нравятся больше сотни потырпозаимствованных из разных сеттингов.
ps не сразу увидел что речь об нпс
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено Chyvachok 22-10-2015 в 19:08:
Цитата:
~ X ~ писал:
Мне тут говорят, что под XDM надо впилить замены всем моделям монстров, а то, видите ли, дефолтные уже никого не радуют.
А мне суровый барник 1.0 нравится больше хыдыпачного...
Молели НПС мне ЛД-шные тоже больше радуют, у ХД-шых дизайн другой, например барник похож на китайца какого-то, соллдафонов сделали как в опфоре, с квадратными касками, а часть оружия в ХД паке вообще убогое, нормальных глок поменяли на какую-то стремную беретту, руки менее прикольные, толстые и без экранчика, было бы лучше если оставили дизайн оригинальных моделей, и просто добавили им детализации чтобы не настолько квадратные были.
Отправлено ~ X ~ 22-10-2015 в 21:19:
thambs говорить строить не понимать предложения как.
Chyvachok ну, руки у старых в_ моделей ужасные
Я долго мучился, но перерисовал как надо в средне-дефинишен-качестве. А вообще, ХД-монстры на фоне недетализованных карт смотрятся неуместно, имхо.
Ну да дело вкуса. И цвета.
Цитата:
XaeroX писал:
Ну ты сам как представляешь себе задание окружности полиномом? Там же sqrt как минимум.
Мож, я что-то путаю, но в шотофопе, когда безъями рисуешь, для окружности достаточно одной точки (т.е. двух на одном месте) и пары дёрнутых "рычагов".
ЗЫ: кто зимой придёт на ланпати? Будем играть сингловые моды в коопе! 
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]