Здесь у меня просто случилась аневризма. Стэк так не работает. При чем тут стек и зачем эта переменная названа стек - непонятно. Это random access list. В стеке нет доступа ни к чему, кроме хвоста.
Честно просто смешная попытка замутить нечто похожее на entity-component-system, ни о какой модульности речи тут не идет, с тем же успехом можно было слить все эти чайлд структуры в основную и ничего бы не изменилось. Оверинжиниринг без цели и бенефитсов.
Снаряды тупо всегда уничтожают себя при колижне с юнитами. Это та самая хваленая "матмодель"? Я не знаю смеяться или плакать. Это преимущество над движком тсх? Ты понимаешь вообще что там было основано на входе в ректангл только чтобы максимально перенести отсеивание колижнов в нативный код? Что наверняка в движке реализовано какое-нибудь quadtree которое нормально работает с большим количеством юнитов? Что есть у тебя? GroupEnumUnits? Я уже не говорю о том что поделие совершенно нерасширяемое, ты просто сам попробуй не трогая основной код реализовать пару спеллов. Тут даже такие банальности как то, что гравитация это скаляр, а не вектор. Зато зачем-то есть настраиваемый тикрейт и сила трения. Сила трения правда одна на всю карту, удобно.
Мега физика в "движке" это семплинг нормали граунда через GetTerrainZ? А, нет, вот, нашел:
this.impulse.z -= this.mass*gravity;
вот с этого просто в АХАХАХА, т.е. объект который весит меньше будет медленнее падать?
Какбы в итоге зашибись, учиться - учись. Но понты и умничанье в оффтопке лучше попридержать до момента пока не научишься. Тонна таких и намного лучше систем валяется на барахолке уже с десяток лет, без шуток. Код с семплингом нормали я видел в каждой из них, да и сам писал такой. Подобная система есть, например, у ханабиши.
Очень сомневаюсь в "нельзя". Если искать пересечение между линией и плоскостью, но используя вместо уравнения плоскости уравнение безье то наверное может получиться. Советую спросить не здесь, а на stackoverflow/math.stackexchange
Функшн поинтеров помимо типа code в жассе нет. Можно полагаться только на ExecuteFunc, куда аргументы передаются только глобалками, соответственно никакого тайпчекинга.
Использовать можно например так
struct mystruct
static method mymethod takes nothing returns nothing
call BJDebugMsg("this works")
endmethod
endstruct
function myfunction takes nothing returns nothing
call ExecuteFunc(mystruct.mymethod.name) //ExecuteFunc compatibility
call OnAbilityCast('A000',mystruct.mymethod.name)
//for example, caster system's OnAbilityCast, requires a function name
endfunction
Module Initializers are used because they run first :p
After module initializers -> struct initializers
After that -> library initializers
After that -> scope initializers
After that -> ... nothing :p
Вы че тут рофлите просто? Че это за жесть. Ну попытались бы хоть развернуть формулы и посмотреть что вы конвертите из одного в другого а потом обратно, зачем?
// target = origin + normalize(source - origin) * speed
u = GetEnumUnit()
ux = GetUnitX(u)
uy = GetUnitY(u)
tx = GetUnitX(udg_topot_caster)
ty = GetUnitY(udg_topot_caster)
dx = ux - tx
dy = uy - ty
len = SquareRoot(dx * dx + dy * dy)
// Also need a 0 len check
dx = dx / len
dy = dy / len
SetUnitX(u, ux + dx * 10)
SetUnitY(u, uy + dy * 10)
struct
real x
real y
endstruct
Нужна только чтобы туда добавить методы для работы с векторами.
Углы, косинусы, синусы в большинстве случаев не нужны ВООБЩЕ.
Щас бы использовать рекурсию для прохода по массива в языке без поддержки хвостовой рекурсии и засирать стек вызовов ммм.
Плохо читал, это уже написали оказывается.
Рекурсия это просто использование стека вызовов для хранения стейта, ничего больше. Не нужно её использовать там где проще без нее обойтись.
В чем смысл чето городить. На 1 юнита достаточно одной структуры в любой карте. Адрес структуры можно хранить в кастом велью. Единственные места где нужно пользоваться самим юнитом это там куда этот юнит приходит (ивенты) и там куда он уходит (нативки). В остальном пользуемся самой структурой.
Ред. Doc
» Clamp'ова кухня / Clamp's Physics
Я бы ничего это не писал если бы не заявления в духе
Ред. Doc
» Clamp'ова кухня / Clamp's Physics
» Game Dev / Поиск ближайшей точки к кривой
Ред. Doc
» WarCraft 3 / 8. Кортежи
» WarCraft 3 / 1. Основы
» Game Dev / Поиск ближайшей точки к кривой
» Dota 2 / Продление конкурса героев до 1-го июня
Ред. Doc
» WarCraft 3 / Экономия cjass и vjass триггера функций в редакторе NewGen?
Ред. Doc
» WarCraft 3 / vJass
» WarCraft 3 / vJass
» WarCraft 3 / World Editor - Не смогла найти даже вопросы, чтобы найти ответ.
» Unity / Это реально?
Ред. Doc
» WarCraft 3 / Array Timer
» WarCraft 3 / Не работает ForGroup в структуре
Ред. Doc
» Dota 2 / Продление конкурса героев до 1-го июня
Мне не обидно за задержку.
Ред. Doc
» WarCraft 3 / движение через ( X . y )
» Dota 2 / Продление конкурса героев до 1-го июня
» WarCraft 3 / JASS: группа или массив?
Ред. Doc
» WarCraft 3 / JASS: группа или массив?
Плохо читал, это уже написали оказывается.
» WarCraft 3 / JASS: группа или массив?
» WarCraft 3 / local и global timer нагружаются в локальной сети?
» Блог имени меня / Я тоже хочу сделать игру #1
» WarCraft 3 / Jass New Gen Pack - Rebuild 1.4
» WarCraft 3 / Jass New Gen Pack - Rebuild 1.4
» Блог имени меня / Я тоже хочу сделать игру #1