Показать сообщение отдельно
Старый 21.09.2007, 20:53   #9
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Re: Редактор карт

Идем дальше. Сосбсно сейчас мы научимся масштабировать, двигать объекты.
Для этого всего расширяем тип MObject.
Type MObject
Field Entity
Field SX#,SY#,SZ#
Field X#,Y#,Z#
Field Picked
End Type
Все эти обновления нужны для того что я выше перечислил, а параметр Picked нужен для того чтобы проверять выбран ли объект или нет. Едем далее. Создаем ф-цию масштабирования и движения.

Function Deformation()
For m.mobject=Each Mobject
If m\picked=1 Then
If KeyDown(2) Then
ScaleEntity m\entity,MeshWidth(m\entity)+0.01,MeshHeight(m\ent ity),MeshDepth(m\entity)
End If
If KeyDown(3) Then
ScaleEntity m\entity,MeshWidth(m\entity)-0.01,MeshHeight(m\entity),MeshDepth(m\entity)
End If
If KeyDown(4) Then
ScaleEntity m\entity,MeshWidth(m\entity),MeshHeight(m\entity)+ .01,MeshDepth(m\entity)
End If
If KeyDown(5) Then
ScaleEntity m\entity,MeshWidth(m\entity),MeshHeight(m\entity)-.01,MeshDepth(m\entity)
End If
If KeyDown(6) Then
ScaleEntity m\entity,MeshWidth(m\entity),MeshHeight(m\entity), MeshDepth(m\entity)+.01
End If
If KeyDown(7) Then
ScaleEntity m\entity,MeshWidth(m\entity),MeshHeight(m\entity)-.01,MeshDepth(m\entity)-0.01
End If


If KeyDown( Then
PositionEntity m\entity,EntityX(m\entity)+0.01,EntityY(m\entity), EntityZ(m\entity)
End If
If KeyDown(9) Then
PositionEntity m\entity,EntityX(m\entity)-0.01,EntityY(m\entity),EntityZ(m\entity)
End If

If KeyDown(10) Then
PositionEntity m\entity,EntityX(m\entity),EntityY(m\entity)+0.01, EntityZ(m\entity)
End If
If KeyDown(11) Then
PositionEntity m\entity,EntityX(m\entity),EntityY(m\entity)-0.01,EntityZ(m\entity)
End If

If KeyDown(12) Then
PositionEntity m\entity,EntityX(m\entity),EntityY(m\entity),Entit yZ(m\entity)-.01
End If
If KeyDown(13) Then
PositionEntity m\entity,EntityX(m\entity),EntityY(m\entity),Entit yZ(m\entity)+.01
End If
End If
Next

End Function

Вот. Млин правда управление кривее не придумаешь... ну да ладно... сейчас я разъясню усё... короче клавиши наверху(те что от 1-7) управляют масштабированием объекта, а от 7 до = (включительно) передвижение.

Ой ёмаё. Чуть не забыл надо подправить коечто в главном цикле. Вот после этого

pik=CameraPick(camera,MouseX(),Mouse())
If pik = world Then
If MouseHit(1) Then
CreateStena(PickedX(),PickedY(),PickedZ(),0,0,0,0. 5,2,2)
End If
End If

Пишем вот это:

If pik=m\entity then
m\picked=1-m\picked
End if

И в начале цикла пишем:

For m.mobject = Each Mobject

И в конце перед RenderWorld:

Next

Ну вот редактор у нас расширился.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Gide_ (22.02.2009)