- 1,976
- 68
- 220
Доброго времени суток о/
Решил я сделать меч, у которого на лезвие наложен эффект а-ля горение. Но не такой убогий пиксельный огонь как в минисрафте, а нормальный, полноценный (в пределах моих способностей) огонь на партиклах. Предположим, что они у меня уже есть.
Но теперь вопрос в другом - как "привязать" партиклы к рендерящейся модельке, то есть сделать так, чтобы, допустим, при смене вида от первого/третьего лица, взмахах или блокировке партиклы двигались вслед за мечом, а не оставались висеть в воздухе, ни к чему не привязанные?
Была мысль сделать какой-то лист внутри рендера, запихивать туда все new EntityFX'ы, в методе рендера итерационно вызывать им апдейт и после применения ротейтов и транслейтов вызывать рендер. Но я упёрся в проблему с хранением этого листа - куда его сунуть, чтобы на каждый меч он был свой? Не в NBT стака же, это как-то слишком дорого будет. Вроде же класс рендера один на все предметы, так что если сделать лист в нём, то это всё равно что сделать какое-нибудь статик поле для предмета и удивляться, почему оно везде одинаковое.
Была ещё идея этот лист привязать к мапе, чтобы они все были в одном месте, но в этом случае непонятно, что должно быть ключом к каждому стаку...
В общем, как-то это всё чересчур сложно. Может есть какой-то более простой способ, а-ля геометрического (?) шейдера? Тогда, если можно, скиньте хотя бы примерно как это можно сделать. Заранее спасибо :D
Решил я сделать меч, у которого на лезвие наложен эффект а-ля горение. Но не такой убогий пиксельный огонь как в минисрафте, а нормальный, полноценный (в пределах моих способностей) огонь на партиклах. Предположим, что они у меня уже есть.
Но теперь вопрос в другом - как "привязать" партиклы к рендерящейся модельке, то есть сделать так, чтобы, допустим, при смене вида от первого/третьего лица, взмахах или блокировке партиклы двигались вслед за мечом, а не оставались висеть в воздухе, ни к чему не привязанные?
Была мысль сделать какой-то лист внутри рендера, запихивать туда все new EntityFX'ы, в методе рендера итерационно вызывать им апдейт и после применения ротейтов и транслейтов вызывать рендер. Но я упёрся в проблему с хранением этого листа - куда его сунуть, чтобы на каждый меч он был свой? Не в NBT стака же, это как-то слишком дорого будет. Вроде же класс рендера один на все предметы, так что если сделать лист в нём, то это всё равно что сделать какое-нибудь статик поле для предмета и удивляться, почему оно везде одинаковое.
Была ещё идея этот лист привязать к мапе, чтобы они все были в одном месте, но в этом случае непонятно, что должно быть ключом к каждому стаку...
В общем, как-то это всё чересчур сложно. Может есть какой-то более простой способ, а-ля геометрического (?) шейдера? Тогда, если можно, скиньте хотя бы примерно как это можно сделать. Заранее спасибо :D