Я хотел бы добавить несколько сценариев к своим моделям/актерам. Когда загружается новая модель или изменяется сценарий, актер реагирует.
На данный момент у меня есть базовый класс Lua, в котором есть, например, функция Update(), и каждая модель/актер должна перегружать эту функцию. Но как это реализовать? Основная проблема в том, что каждой модели нужно уникальное имя для класса,...
Я думал о таблице, ключевыми значениями которой являются идентификатор актора (уникальный), а значением будет класс, унаследованный от базового класса, но это немного сложно, когда скрипт перезагружается.
Objects[ActorID] = Model(paramater)
Objects[ActorID].Update = function() print("Update: actor 1") end
Возможно, также возможно создать новое состояние lua для каждого актера.
На это меня вдохновил движок Leadwerks: http://www.youtube.com/watch?v=z-EuS1EYk8o
Если кто знает хорошую книгу по написанию скриптов в игровых движках, подскажите пожалуйста
Я думаю, что понял:
Вот некоторый псевдокод:
Онньюактер создал:
//Add actor
Objects[param.ID] = createClass(baseclass)
//Check if this actor has a script to run.
if param.hasScript then
//Add the new ID to the script
Scripts[param.filename][param.ID]
Entity = Objects[param.ID]
doFile(param.filename)
Entity = nil
end
OnFileChanged:
foreach id in Scripts[changedfile] do
Entity = Objects[id]
dofile(changedfile)
Entity = nil
end
Пример сценария:
//check if Entity is valid
if not Entity then
print("[Error] Entity is invalid")
else
function Entity:Update()
print(self.name)
end
end
Может работать ;)