Вопрос: У меня есть карта уровня, сделанная в 3Ds max и я хочу чтобы в тех местах карты, которые указал создавались разнообразные объекты. Как сделать?
Ответ: Очень просто. Мы просто перебираем все объекты в модели уровня и ищем нужные нам, а на их местах создаем необходимые объекты. Итак рассмотрим этот алгоритм по подробнее.
Как известно в каждой модели есть множество подмоделей, так называемых чайлдов (child - ребенок). Эти подмодели могут свободно трансформироватся(вращение, перемещение, растяжение\сжатие), удаляться, и т.п, т.е с ними можно делать все что и с обычными блицевскими объектами, а так же получить его имя, которое было задано в редакторе. Этим мы и воспользуемся. Теперь напишем небольшую функцию анализа модели.
Function AnalyzeModel( mesh$ )
temp = LoadAnimMesh(mesh$)
For ch = 1 to CountChildren( temp )
obj = GetChild(temp,ch)
name$ = EntityName$(obj)
If InStr(name$,"имя объекта в модели уровня") <> 0 Then
Нужное_Действие
End if
Next
FreeEntity temp
End Function
Теперь рассмотрим эту функцию. В нее передается всего один параметр - путь к модели уровня. Второй строкой - загружаем сам уровень как анимированную модель чтобы иметь доступ к чайлдам. Третьей строкой запускаем цикл перебора всех моделей в уровне. Четвертой строкой получаем модель с нужным номером(указывается циклом). Пятой - получаем имя модели, которое указывали в редакторе. Шестой - анализируем строку с именем модели и находим в нем нужное имя ( указывается вместо "имя объекта в модели уровня" ) и если таковое нашлось то выполняем Седьмую строку. Предпоследней строкой - удаляем модель уровня.
Результат: на указанных местах появляются указанные объкты.
Вроде все разжвевал как надо.
Вопрос: Как её использовать и вообще работает она?
Ответ: Пишем в нужном месте AnalyzeModel и указываем путь к анализируемой модели уровня. Функция сто пудов работает.
Вопрос: Насколько быстра эта функция?
Ответ: Все зависит от выполняемых операций внутри If Instr... End If .