forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Типы в типах. ??? (http://forum.boolean.name/showthread.php?t=1387)

radiantstudio 29.08.2006 17:01

Типы в типах. ???
 
Помогите пожалуйста :''((
Почему мой код не работает.
Пречитал все темы про типы.Делал вроде как учили.

Код:

Function create_missile()
P.phmissile = New phmissile ;создаём ракету
        P\life=0
        k.strail = New strail ; создаём шлейф
        k\life=0
        k\mesh=CreateMesh()
        EntityFX k\mesh,2+32
        k\surf=CreateSurface( k\mesh )
        k\life=k\life+1
        k\trail.typetrail=New typetrail
        k\trail\alpha=1
        k\trail\v1=AddVertex  (k\surf,EntityX (p\entity,1)+0.1,EntityY (p\entity,1)-0.1,EntityZ (p\entity,1)+0.1)
        k\trail\v2=AddVertex  (k\surf,EntityX (p\entity,1)+0.1,EntityY (p\entity,1)-0.1,EntityZ (p\entity,1))
        P\trail_handle=Handle(k) ;передаём указатель на шлейф
End Function
Function update_missile()
        For P.phmissile= Each phmissile
                P\Life=P\Life+1
                k.strail=Object.strail(P\trail_handle) ;получаем указатель
                k\life=k\life+1
                k\trail.typetrail=New typetrail ;продолжаем шлейф
                k\trail\alpha=1
                k\trail\v1=AddVertex  (k\surf,EntityX (P\entity,1)-0.1,EntityY (P\entity,1)-0.1,EntityZ (P\entity,1),0,0)
                k\trail\v2=AddVertex  (k\surf,EntityX (P\entity,1)+0.1,EntityY (P\entity,1)-0.1,EntityZ (P\entity,1),0,0)
                AddTriangle  k\surf,k\vert,k\vert+2,k\vert+3
                AddTriangle  k\surf,k\vert,k\vert+3,k\vert+1
                AddTriangle  k\surf,k\vert,k\vert+3,k\vert+2
                AddTriangle  k\surf,k\vert,k\vert+1,k\vert+3
                k\vert=k\vert+2
                ; управление ракетой       
        Local dx#=EntityX(target)-EntityX (P\entity)
        Local dy#=EntityY(target)-EntityY (P\entity)
        Local dz#=EntityZ(target)-EntityZ (P\entity)
        AlignToVector P\entity,dx,dy,dz,0,0.005
        MoveEntity p\entity,0,0,0.5
        TurnEntity p\entity,0,0,1
        Next
End Function
Function update_trail()
        For t.strail=Each strail
        If t\life>0
        t\life=t\life+1
                For t\trail.typetrail=Each typetrail
                        If t\trail\alpha>0
                                t\trail\alpha=t\trail\alpha-0.001
                                VertexColor t\surf,t\trail\v1,255,255,255,t\trail\alpha
                                VertexColor t\surf,t\trail\v2,255,255,255,t\trail\alpha
                        Else
                                t\life=t\life-1
                                Delete t\trail
                                EndIf
                        Next
                Else
                        FreeEntity t\mesh
                        Delete t
                EndIf
        Next
End Function


Type typetrail
        Field v1,v2,alpha#
End Type

Type strail
        Field mesh,surf,vert,life
        Field trail.typetrail
End Type

Type phmissile
        Field trail_handle
        Field entity,body
        Field target_number%
        Field x,y,z
        Field life%
        Field d_pitch#,d_yaw#
        Field snd_ch
        Field no_smoke
End Type


jimon 29.08.2006 19:52

Re: Типы в типах. ???
 
мож типы надо обьявлять перед функциями ?
особо в код не вникал
где ошибка ?

alcoSHoLiK 29.08.2006 22:06

Re: Типы в типах. ???
 
Или покажи рабочий код, или скажи, какая ошибка и где она вылазит.

radiantstudio 31.08.2006 11:25

Re: Типы в типах. ???
 
Рабочий код немогу выдернуть, много лишнего. Пока с этими типами разбирался ещё всякой ерунды наворотил.
Вот основа

[/code]
Type missile; Raketa
Field trail_handle
End Type

Type sTrail ;Shleif
Field trail.typetrail
End Type

Type typetrail
Field v1,v2,alpha#
End type
;создаём новую ракету
P.missile=New missile
k.strail=new strail
P\trail_handle=Handle(k)

;в функции Перебераем всё ракеты
for P.missile=Each missile
;находим шлейф данной ракеты
k.strail=Object.strail(P\trail_handle)
;удлинняем шлейф
k\trail.typetrail=new typetrail
k\trail\v1=...;добавляем вертекс
k\trail\v2=...;и ещё вертекс
next

;Это в функции обновления шлейфа
for k.strail=Each strail ;перебераем все шлейфы
for k\trail.typetrail=each typetrail ;пербираем все вертексы шлейфа
;сдесь я изменяю альфу вертекса текущего шлейфа
VertexColor k\surf,k\trail\v1,255,255,255,k\trail\alpha
VertexColor k\surf,k\trail\v2,255,255,255,k\trail\alpha
k\trail\alpha=k\trail\alpha-0.01
next
next
[code]
Перебор типа typetrail хранящийся в типе strail я правильно делаю?
И обращение через handle и object ???

А ошибка вылазит на Renderworld в тот момент когда я выпускаю вторую ракету до уничтожения первой.


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

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