HLFX.Ru Forum Страницы (103): « Первая ... « 10 11 12 13 [14] 15 16 17 18 » ... Последняя »
Показать все 1540 сообщений этой темы на одной странице

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:
1
#include <iostream>
2
#include <map>
3
#include <string>
4
 
5
class CRenderSystem
6
{
7
public:
8
  virtual ~CRenderSystem() {}
9
  virtual void printStuff() = 0;
10
};
11
 
12
class CXWiderRenderSystem : public CRenderSystem
13
{
14
public:
15
  virtual ~CXWiderRenderSystem() {}
16
  static CXWiderRenderSystem *create() { return new CXWiderRenderSystem(); }
17
  virtual void printStuff() { std::cout << "CXWiderRenderSystem::printStuff()" << std::endl; }
18
};
19
 
20
class CXaeroXRenderSystem: public CRenderSystem
21
{
22
public:
23
  virtual ~CXaeroXRenderSystem() {}
24
  static CXaeroXRenderSystem *create() { return new CXaeroXRenderSystem(); }
25
  virtual void printStuff() { std::cout << "CXaeroXRenderSystem::printStuff()" << std::endl; }
26
};
27
 
28
class CGContRenderSystem: public CRenderSystem
29
{
30
public:
31
  virtual ~CGContRenderSystem() {}
32
  static CGContRenderSystem *create() { return new CGContRenderSystem(); }
33
  virtual void printStuff() { std::cout << "CGContRenderSystem::printStuff()" << std::endl; }
34
};
35
 
36
class CRenderSystemFactory
37
{
38
  typedef CRenderSystem *( *CreateFn )();
39
  typedef std::map<std::string,CreateFn> ClassMap;
40
public:
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 ) ) );
45
  }
46
  CRenderSystem *createClass( const std::string &name ) const {
47
    ClassMap::const_iterator it = m_types.find( name );
48
    if ( it == m_types.cend() )
49
      return nullptr;
50
    return (it->second)();
51
  }
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;
55
    }
56
  }
57
private:
58
  ClassMap m_types;
59
};
60
 
61
static CRenderSystemFactory factory;
62
 
63
void InitFactory( void )
64
{
65
  factory.registerClass<CXWiderRenderSystem>();
66
  factory.registerClass<CXaeroXRenderSystem>();
67
  factory.registerClass<CGContRenderSystem>();
68
  factory.listClasses();
69
}
70
 
71
CRenderSystem *CreateByName( const char *name )
72
{
73
  return factory.createClass( name );
74
}
75
 
76
int main( int argc, char *argv[] )
77
{
78
  InitFactory();
79
 
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();
86
}


Можно было сделать покрасивее, оформив фабрику как синглтон и избавившись от глобальной переменной, но мне лениво, сам допишешь.
Для улучшения портабельности можно избавиться от 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:

Цитата:
thambs писал:
>False Dawn
>http://media.moddb.com/images/mods/...p1_jun_14_8.png
эхх, в который раз убеждаюсь насколько уродливо выглядят патчевые "цилиндры" радиусом больше 8и юнитов.


Цэ ж Безье, они по определению не круглые.
Но можно делать и круглые круги, просто там в редакторе нет такой фичи

http://pix.academ.info/img/2015/10/22/9c0e90da2140b277cd79a3af3ab1002f.png


Отправлено 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]


Временная зона GMT. Текущее время 01:37. Страницы (103): « Первая ... « 10 11 12 13 [14] 15 16 17 18 » ... Последняя »
Показать все 1540 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024