Большое спасибо за подсказку. Хотелось бы продолжить эту тему на конкретном примере с типами. Имеется
Type Box с переменными. Создаем 100 кубиков и заполняем их переменные значениями. С помощью Picked мы можем выделить любой из кубиков и получить значения
EntityName и
EntityX, а затем присвоить эти значения каким то переменным (в нашем случае значения присваиваются переменным
item_info$ и
item_xxx#). Отсюда возникает вопрос: а можно ли прочесть переменные Type "пикнутого" кубика (чтобы не использовать перебор всех кубиков) и затем присвоить их каким-либо переменным ... ну например - "пикнуть" какой-нибудь кубик, прочитать его переменную
room\index и присвоить её значение переменной
room_id#. Заранее спасибо.
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
Global cam=CreateCamera()
PositionEntity cam,100,400,120
TurnEntity cam,90,0,0
light=CreateLight()
RotateEntity light,30,0,0
SetFont LoadFont("courier",18)
;===================================================
Type box
Field entity
Field index
Field x
Field z
End Type
For a=1 To 10
For b=1 To 10
i=i+1
room.box=New box
room\index=i
room\x=30*a
room\z=30*b
room\entity=CreateCube()
NameEntity room\entity,"item_"+i
EntityPickMode room\entity,2
ScaleEntity room\entity,10,2,10
PositionEntity room\entity, room\x, 0, room\z
Next
Next
;====================================================
While Not KeyHit(1)
x_mouse=MouseX()
y_mouse=MouseY()
Picked=CameraPick(cam,MouseX(),MouseY())
; ------------------
If Picked<>0 Then
item_info$=EntityName(Picked)
item_xxx#=EntityX(Picked)
Else
item_info$="none"
item_xxx#=0
EndIf
; ------------------
If Picked<>target Then
If target Then EntityAlpha target,1
target=Picked
EndIf
If target
EntityAlpha target,Sin( MilliSecs() )*.5+.5
EndIf
UpdateWorld
RenderWorld
Color 255,0,0
Text 20, 40, "EntityName..."+item_info$
Text 20, 60, "EntityX......"+item_xxx#
Text 20,100, "room_id....."+room_id#
Rect x_mouse,y_mouse-3,1,7
Rect x_mouse-3,y_mouse,7,1
Flip
Cls
Wend
End