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=14627)

metalpasha 23.04.2011 05:05

Связанные списки (тип Массив)
 
Привет Всем !
Помогите Очень нужна help
Очень интересно

Код:

Type Mesh4f
        Field x#,y#,z#,r#
End Type

Type Teleport
Field En
Field pos_a.Mesh4f
End Type

То без проблем  Создаю!

t.Teleport=new Teleport       
        m.Mesh4f=new Mesh4f
        m\x=10 :        m\y=15 :        m\z=20 :        m\r=45
t\pos_a.Mesh4f=m.Mesh4f

;-----------------------------------
а так у меня я не знаю как
Type Mesh4f
        Field x#,y#,z#,r#
End Type

Type Tri_test ; ВРЕМЕНО
  Field p.Mesh4f[3] ; Тут Массив из Типов
End Type

Type Teleport
Field En
Field pos_a. Tri_test
End Type




t.Teleport=new Teleport       
t1. Tri_test =new Tri_test
        ;А тут я не знаю как
        m.Mesh4f=new Mesh4f

ни так m.Mesh4f[3]=new Mesh4f
ни так m[3].Mesh4f=new Mesh4f
        и не так m(3).Mesh4f=new Mesh4f

t\pos_a. Tri_test =t1. Tri_test

хотя на сам тип в типе (массив) не ругается значит правильно Объявил

Crayzi 23.04.2011 07:54

Ответ: Связанные списки (тип Массив)
 
Не совсем понял что именно ты хочеш добится этим кодом... Позже вдумавшись в название, у меня родилась (оО) теория что ты хош сделать )) :crazy:
П.с. В приведенном коде так ниче и не понял, хотя вроде слышал что както так можно пользоватся типами...
Всеже привожу свой говнокодерский вариант)
Код:

Type Mesh4f
        Field x#,y#,z#,r#
End Type
Type Tri_test ; Чё за хня хз
  Field Mesh4f%[3] ; Проще было сразу в телепорты запихать,
;но эт не мое дело)
End Type
Type Teleport
  Field En
  Field Tri_testHandle%
End Type

;Создаем всякую гадость
t.Teleport=new Teleport
t\En=1;я так понял это ID телепорта?
  t1. Tri_test =new Tri_test
    For gg%=0 to 3
      m.Mesh4f=new Mesh4f
      m\x#=15.0
      m\y#=22.5
      m\z#=399.1
      m\r#=99.0
      t1\Mesh4f[gg%]=Handle(m)
    Next
t\Tri_testHandle%=Handle(t1)

;Теперь можно получить доступ к нужным координатам нужного
;телепорта (ппц закручено)
For Tp.Teleport = Each Teleport
  If Tp\En=1
      TrTst.Tri_test=Object.Tri_test(Tp\Tri_testHandle%)
      For gg%=0 to 3
        Crds.Mesh4f=Object.Mesh4f(TrTst\Mesh4f[gg%])
        Print gg%
        Print Crds\x#
        Print Crds\y#
        Print Crds\z#
        Print Crds\r#
      Next
      Exit
  EndIf
Next
Waitkey()


metalpasha 23.04.2011 08:54

Ответ: Связанные списки (тип Массив)
 
Спасибо очень хороший вариант
Я уже думал тупа вот так
Замутит

Код:

Type Tri_f ;
  Field p0.Mesh3f ;
  Field p1.Mesh3f ;
  Field p2.Mesh3f ;
  Field p3.Mesh3f ;

  Field t0.Mesh2f;
  Field t1.Mesh2f;
  Field t2.Mesh2f;
  Field t3.Mesh2f;
End Type

Указатели на массив это круто
Мне надо было именно так
>Не совсем понял что именно ты хочеш добится этим кодом.

В типе Teleport
Нужен внутренний Тип Tri_f
А уже в Этом Типе массив p.Mesh3f[3] и t.Mesh2f[3];
А уже в них переменные
Код:

Type Mesh3f
        Field x#,y#,z#
End Type
Type Mesh2f
        Field x#,y#
End Type

Type Tri_f ;
  Field p.Mesh3f[3] ; // точки треугольника в  пространстве
  Field t.Mesh2f[3]; // текстурные координаты треугольника
End Type

Type Teleport
Field En
Field pos_a.Tri_f
End Type

Вообще если копилятор не ругался на
Код:

Type Tri_f ;
  Field p.Mesh3f[3] ; // точки треугольника в  пространстве
  Field t.Mesh2f[3]; // текстурные координаты треугольника
End Type

Такую вереницу значит всё правильно
Я только не знаю как заполнит ну и как достать
Но если это всё же не реально Твой Вариант лучше чем мой (пришлось бы использоват)

Код:

Type Tri_f ;
  Field p0.Mesh3f ;
  Field p1.Mesh3f ;
  Field p2.Mesh3f ;
  Field p3.Mesh3f ;

  Field t0.Mesh2f;
  Field t1.Mesh2f;
  Field t2.Mesh2f;
  Field t3.Mesh2f;
End Type

Спасибо!!!! Если есть другой вариант с удовольвием посмотрю


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

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