forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   объекты сцены (http://forum.boolean.name/showthread.php?t=18401)

ant0N 26.07.2013 11:28

объекты сцены
 
Привет всем!
Такой вопрос: Создаю уровень в блендере (двиг Xors3D), расставляю всякие объекты, даю им имена и по этим именам с помощью всем известной функции выцепляю их в движке, чтобы подвесить скрипты.
Но что делать если мне нужно поставить много одинаковых объектов (cube1, cube2...cube100500)? Каждый же индивидуально не станешь по имени вытягивать... Знаю можно называть типа cube.1, cube.2.... а потом читать только до точки. НО КАК?

ABTOMAT 26.07.2013 12:34

Ответ: объекты сцены
 
Перебирать все чайлды при помощи xCountChildren и xGetChild и сравнивать их имена.

ant0N 26.07.2013 12:39

Ответ: объекты сцены
 
я так и делаю. Ты предлагаешь для каждого объекта (а у меня их 1000) писать:
Код:

if xEntityName child = "cube1"
'.....
endif

if xEntityName child = "cube2"
'.....
endif
.......
.......

if xEntityName child = "cube1000"
'.....
endif

можно же как-то сразу для всех одинаковых объектов написать...

SBJoker 26.07.2013 12:49

Ответ: объекты сцены
 
а что тебе мешает создавать имена в цикле по шаблону:
"cube" + i

ant0N 26.07.2013 13:07

Ответ: объекты сцены
 
SBJoker, как вариант. Но я знаю что должен быть другой способ. Есть ли команда которая читает слово до точки?

Nex 26.07.2013 13:58

Ответ: объекты сцены
 
Код:

Global tempString$ = "cube.321"
temp$ = Mid (tempString$,1,Instr (tempString,".",1)-1)


ant0N 26.07.2013 14:24

Ответ: объекты сцены
 
Nex, спасибо!!!!! вроде то, что нужно (сейчас нет возможности проверить)

Nex 26.07.2013 18:01

Ответ: объекты сцены
 
Ну надо проверить сначала, а потом спасибо говорить. :)

Еще если ты в будущем захочешь замутить что нибудь типа консоли или скриптов или просто запарсить из файла такое "Move box,1,2,3", то тебя ждет огорчение ибо "Instr" найдет только первую запятую. В общем унылая функция.

ant0N 26.07.2013 19:09

Ответ: объекты сцены
 
Все работает, даже проще
Код:

Name:String = Lower(xEntityName(child))
If Instr(name:String, "cube")
  ....
endif



Часовой пояс GMT +4, время: 08:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot