Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 12.07.2010, 13:12   #1
DeeJex
Разработчик
 
Аватар для DeeJex
 
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений
(для 329 пользователей)
Синхронизация чилдов

мне нужна функция синхронизации позиции и ориентации чилдов и чилдов чилдов source entity и dest по именам.
т.е. SyncChilds(source_entity,dest_entity)
естественно, нужно юзать рекурсию, но т.к. проверяются чилды не одной, а двух интити, значит нужно юзать двойную рекурсию, я не совсем понимаю как это реализовать,
кто может, пожалуйста, напишите такую функцию.

моя неудачная попытка:
Function ChildSyncer(source,dest) 
For tmp_i1 = 1 To CountChildren(source)  
For tmp_i2 = 1 To CountChildren(dest) 
  tmp_c1 = GetChild(source,tmp_i1) 
  tmp_c2 = GetChild(dest,tmp_i2) 
   If EntityName(tmp_c1)=EntityName(tmp_c2) Then 
    PositionEntity tmp_c1,EntityX(tmp_c2),EntityY(tmp_c2),EntityZ(tmp_c2) 
    RotateEntity tmp_c1,EntityPitch(tmp_c2),EntityYaw(tmp_c2),EntityRoll(tmp_c2) 
   End If 
   If CountChildren(tmp_c1) Then ChildSyncer(tmp_c1,dest) 
   If CountChildren(tmp_c2) Then ChildSyncer(source,tmp_c2) 
Next 
Next 
End Function
__________________
299 792 458

Последний раз редактировалось DeeJex, 16.07.2010 в 00:11.
(Offline)
 
Ответить с цитированием
Старый 18.07.2010, 06:16   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Синхронизация чилдов

Блин, ты же у нас крутой, не?
Function SeekChilds(entent2)  
    
Local ichild 
     
    
For i=1 To CountChildren(ent)  
        
child=GetChild(ent,i)  
        If 
child<>0  
            
If CountChildren(child)>0 Then SeekChilds(childent2
            
Local n$=EntityName(child)
            
Local dc FindChild(ent2n)
            If 
dc> -1 Then
                  RotateEntity
(childEntityPitch(dc), EntityYaw(dc), EntityRoll(dc))
                  
PositionEntity(childEntityX(dc), EntityY(dc), EntityZ(dc))
            EndIf
        EndIf  
    
Next  
End 
Function 
UpdateWorld не забываем.
Глобальное локальное изменение и получение значений делай сам.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
ARA (18.07.2010), DeeJex (18.07.2010)
Старый 18.07.2010, 06:50   #3
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Ответ: Синхронизация чилдов

Сообщение от DeeJex
я считаю, что у меня достаточно опыта для создания игры_своей_мечты.
знаю как делается програмный код со_всеми_наворотами и возможностями
Дада, тут тебе ещё не раз это припомнят
Булко-стайл
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Эти 11 пользователя(ей) сказали Спасибо ARA за это полезное сообщение:
ABTOMAT (18.07.2010), Arles (18.07.2010), den (18.07.2010), Fatalix3d (18.07.2010), h1dd3n (18.07.2010), impersonalis (18.07.2010), is.SarCasm (18.07.2010), Nex (18.07.2010), Randomize (18.07.2010), SBJoker (18.07.2010), St_AnGer (18.07.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com