GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (161 стр.)

Сообщения на форуме пользователя Andrey (161 стр.)

Наложение таблицы(таблиц) Lua на структуру(массив структур) C++.25 окт. 200617:05#6
Дмитрий Ясенев
>честно говоря, не понял, почему поздно внедрять luabind? он никому мешать не будет, его можно использовать параллельно с >вашим LuaScriptManager, удобен для экспорта в Луа С++ классов, енумов и пр.
все вы меня все уговорили :) мне уже несколько раз советовали участники форума. Все сегодня же я собрал luabind и начал ковыряться, расширю класс LuaScriptManager.
>Идея синхронизировать луа таблицу с сишными данными ИМХО не очень удачная, я бы вообще задачу по-другому ставил. >Проэкпортите свою стрктурку через luabind или через напрямую из Луа (используя userdata с метатаблицами) и используйте её >напрямую в Луа, ничего никуда перегонять не нужно, это способ, который подразумевается создателями Луа для экпорта в >скрипт пользовательских типов.
Я так понимаю можно уже не рабоатать со стеком Lua ? ничего класть на стек и назад передавать не надо? так как у  нас есть указатель на массив данных всех объектов.
А вот можно поподробней c примером кода по UserData и Метатаблицы.

Наложение таблицы(таблиц) Lua на структуру(массив структур) C++.25 окт. 200616:17#4
Lion007
Именно так!!!
это нужно срочно :(
сортировка по материалам: критерии25 окт. 200614:42#13
Zemedelec
>Переключение vs и типа вертекс декларации дорого стоит, когда нагружен GPU.
>Переключение ps дорого стоит на NV, как и setpixelconstant.
>Но имхо vs дороже.
хм...  как это определяеться замером времени? собственым опытом или опытным путем?
Наложение таблицы(таблиц) Lua на структуру(массив структур) C++.25 окт. 200613:13#2
the_siv
lua_bind внедрять уже поздно, ручками написан LuaScriptManager который напрямую работаетс Lua API и я вляеться местами простым враппером(не убираеться на всякий случай), а местами обладает полноценной функциональностью и удобвством .
>А как ты хочешь создавать объекты. Что-то вроде: создаёшь с программе - создаётся соответствующий в скрипте, создаёшь в >скрипте - создаётся в программе, убиваешь один любой - умирают оба.
при загрузке уровня создаются объекты одинаковых типов для каждого объекта есть некая структура данных имеющаая все бе массив перменных связанный по указателю с перменными на C++ и скриптовая функция индивидуальная для каждой группы объектов.
неудобство в том что при обновлении 1-го объекта нельзя может получить доступ к другим объектам потому что стек кидаються только переменные текущего объекта. т.е. более сложное поведение не реализуешь.
для всех объетов выделен пул и при смерте просто изменяеться состояние.
>Или это всё хочешь делать в ручную?
что-то не понял.

сортировка по материалам: критерии25 окт. 200612:34#8
Подписываюсь...
Наложение таблицы(таблиц) Lua на структуру(массив структур) C++.25 окт. 200612:00#0
привет всем!!!
Итак есть игровой объект.
все переменные занесены в структуру C++
примерно такого плана:
class GameObject { // игровой объект
  private:
  struct GameObjectData { // структура описывающая данные игрового объекта
    ...
    bool isVisible; // виден ли объект
    int curState;   // текущее состояне объекита    
    ...
        
  };
};

для такого объекта пишеться скрипт который меняет все его переменнные
вот так идет инициализация данныв в ксрипте

-- таблица данных игровых объектов
GameObjectData = {};

-- функция инициализации таблицы
function Init()
-- цикл по числу игровых объектов
  for i=1, numGameObjects do
-- добавляем в таблицу начальные данные
    table.insert( GameObjectData, {   isVisible = false,  curState = 0 } );
  end;
end;
Теперь бы неплохо отобразить каждую структуру игрового объекта в такую таблицу(в елемент массива таблиц).
Я так думаю что нужно пердавать указатель с помощью lua_pushlightuserdata но нужно делать еще что-то с Lua API.
возможно еще нужно вызывать функцию C++ из Lua которая будет класть на стек Lua каждый член данных таблицы C++.
В итоге я хочу что-бы можно было менять данные независимо друг от друга из C++ и из Lua скрипта.
Скажите как это сделать?

cal3d и озвучка.25 окт. 200611:35#7
zebrabug
ушло
OpenIL24 окт. 200620:05#2
3dfox
хм вопрос конечно уже требует не только основ бибилиотеки, но что на это говорит документация?
cal3d и озвучка.24 окт. 200618:02#5
zebrabug
я говорю могу прислать...
cal3d и озвучка.24 окт. 200617:29#3
zebrabug
>неа не нашел. Я что то не до читал?
по ходу дела нет тебе дать это?
если не надо то смотри во тут:
cal3d-0.11.0\docs\modeling
Как сделать проверку что куб попадает в камеру (Frustum)24 окт. 200616:13#11
BUzer,
ILY
>http://www.ce.chalmers.se/~uffe/vfc_bbox.pdf
угу есть такое у меня, про битовые флаги я знал только вот еще не доходил до этого а переносить непонятный хотя-бы в общих чертах код не хотелось.
спасибо буду пробывать...

cal3d и озвучка.24 окт. 200616:09#1
zebrabug
>но вообще был бы рад любой инфе о подобном экспорте.
а в Cal3D SDK разве нет подробностей?
Как сделать проверку что куб попадает в камеру (Frustum)24 окт. 200613:18#8
stim24
INLINE bool BoxInFrustum(const Math3D::Vector3D& center, const Math3D::Vector3D& size) const
  {
    static float xSize;
    static float x_Size;
    static float ySize;
    static float y_Size;
    static float zSize;
    static float z_Size;
    xSize = center.x + size.x;
    x_Size = center.x - size.x;
    ySize = center.y + size.y;
    y_Size = center.y - size.y;
    zSize = center.z + size.z;
    z_Size = center.z - size.z;
    for(int i = 0; i < 6; i++ ) {
      if (planes[i].classifyPoint(x_Size, y_Size, z_Size) != Math3D::Plane::BACK_PLANE) {
        continue;
      }
      if (planes[i].classifyPoint(xSize, y_Size, z_Size) != Math3D::Plane::BACK_PLANE) {
        continue;
      }
      if (planes[i].classifyPoint(x_Size, ySize, z_Size) != Math3D::Plane::BACK_PLANE) {
        continue;
      }
      if (planes[i].classifyPoint(xSize, y_Size, z_Size) != Math3D::Plane::BACK_PLANE) {
        continue;
      }
      if (planes[i].classifyPoint(xSize, ySize, z_Size) != Math3D::Plane::BACK_PLANE) {
        continue;
      }
      if (planes[i].classifyPoint(x_Size, y_Size, zSize) != Math3D::Plane::BACK_PLANE) {
        continue;
      }
      if (planes[i].classifyPoint(xSize, y_Size, zSize) != Math3D::Plane::BACK_PLANE) {
        continue;
      }  
      if (planes[i].classifyPoint(x_Size, ySize, zSize) != Math3D::Plane::BACK_PLANE) {
        continue;
      }  
      if (planes[i].classifyPoint(xSize, ySize, zSize) != Math3D::Plane::BACK_PLANE) {
        continue;
      }      
      // If we get here, it isn't in the frustum
      return false;
    }
    return true;
  }
BUzer
хм можешь подусказать как тут можно прооптимизировать?
Ну подскажите как подключить STLPort!!!24 окт. 200611:58#9
SKoder
Итак я избавился от этого
но появидлись ошибки линковки вот некоторые из них:
 error LNK2001: unresolved external symbol "private: static void * __cdecl stlpmtx_std::__node_alloc::_M_allocate(unsigned int &)" (?_M_allocate@__node_alloc@stlpmtx_std@@CAPAXAAI@Z)
 error LNK2001: unresolved external symbol "private: static void __cdecl stlpmtx_std::__node_alloc::_M_deallocate(void *,unsigned int)" (?_M_deallocate@__node_alloc@stlpmtx_std@@CAXPAXI@Z)
 error LNK2001: unresolved external symbol "void __cdecl stlpmtx_std::__stl_throw_length_error(char const *)" (?__stl_throw_length_error@stlpmtx_std@@YAXPBD@Z)

и еще много других ошибок...
попробывал поставить макрос
#define _STLP_DONT_USE_AUTO_LINK 1
и указать нужную статическую бибилиотеку. Тестировал сборку на простом проекте все равно не собирваеться...
что нужно сделать?
Ну подскажите как подключить STLPort!!!24 окт. 200610:17#8
SKoder
ну а что нибудь посерьезней можешь посоветовать?
неужели ты думаешь я это не пробывал?

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр