Показать сообщение отдельно
Старый 25.08.2013, 13:11   #8
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Управление отдельными объектами из типа.

Так как поверхность скорее всего будет прямоугольная и непрерывная, лучше всего для нее создать двухмерный массив, в качестве значений использовать хендлы типа, хотя, имхо, это изврат

Кстати, может быть, массиву можно присвоить тип, но я этого в блитце никогда не делал...

Type T_cubes
	Field x
	Field y
	Field z
	Field col$
	Field ent
	Field hndl
End Type

Dim Map(10,10)



For x=1 to 10
	For y=1 to 10
		cube.T_cubes = New T_cubes
		cube\ent = CreateCube()
		cube\x = x*tile_size
		cube\y = y*tile_size
		cube\z = 20
		Map(x,y) = Handle(cube.T_cubes)
	Next
Next
Далее уже можно обращаться к типу через массив, с известными x и y.


Вообще лучше всего бросить блитц, и использовать PureBasic, например в связке с Xors3D или тем же самым B3D.
В нем такая конструкция получится такого вида:

Structure Cube
	X.i:Y.i:Z.i
	Color.i:Entity.i
EndStructure

;Далее любую переменную, массив, список и т.д. можно объявлять с этой структурой:
Dim Tiles_array.Cube(100)
NewList Tiles_list.Cube()
NewMap Tiles_map.Cube()

;Примеры
Tiles_array(1)\X=10:Tiles_array(1)\Y=20

AddElement(Tiles_list())
Tiles_list()\X=10
Tiles_list()\Y=20

Tiles_map("Element_name")\X=10
Tiles_map("Element_name")\Y=20
__________________
galaxies.su | dstalk.ru
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (25.08.2013)