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

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

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

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

Ответ
 
Опции темы
Старый 22.08.2012, 22:12   #91
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: addmesh ???

Сообщение от Nerd96 Посмотреть сообщение

Говнокодер.
Это ты мне адресуешь??

Сообщение от Nerd96 Посмотреть сообщение
EntityClass
При удалении класс не меняется! Mesh - Mesh

Сообщение от HolyDel Посмотреть сообщение
ты же сам его удаляешь? своим кодом. ставь у себя где-то флаг.
Я тоже об этом думал, но я думал что есть варианты вроде xEntityExist(ent)...
Я пробывал обнулять меш, но но косяк появляется (2к строк, х*й найдешь!), теперь думаю стоит ли искать косяк? Т.е. нормальный вариант:

xFreeEntity(ent)
ent=0
if ent=0 then ...
?
__________________
(Offline)
 
Ответить с цитированием
Старый 22.08.2012, 22:21   #92
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: addmesh ???

да. нормальный вариант.

вариант с xEntityExist(ent) был бы приемлем если завтра сдавать проект.
но вообще - это не красиво. зачем лишний раз перебирать сценграф? клиентский код должен знать существует ентити или нет. он ее создавал и удалял в конце концов.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
burovalex (22.08.2012)
Старый 22.08.2012, 23:04   #93
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: addmesh ???


Сообщение от burovalex Посмотреть сообщение
Это ты мне адресуешь??
Да. При правильной архитектуре кода битых ссылок не бывает.
(Offline)
 
Ответить с цитированием
Старый 22.08.2012, 23:18   #94
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: addmesh ???

Сообщение от Nerd96 Посмотреть сообщение


Да. При правильной архитектуре кода битых ссылок не бывает.
Слушай умник, у тебя чтоли багов не бывает?! Ведешь себя как гамно с задранным носом
Даже виндовс не без багов пишется
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
L-ee-X (01.11.2012)
Старый 22.08.2012, 23:22   #95
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: addmesh ???

HolyDel, объясни плиз, а почему надо все перебирать, есть же конкретная ссылка от ентити?!
__________________
(Offline)
 
Ответить с цитированием
Старый 22.08.2012, 23:27   #96
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: addmesh ???

HolyDel, объясни плиз, а почему надо все перебирать, есть же конкретная ссылка от ентити?!
ну так мы же эту ентити возможно удалили? по ссылке мусор.
нам надо перебрать все существующие и проверить есть с таким адресом ссылка или нет. и то это может не работать.
например мы удалили ентити и создали новую.
может так статься - что у новой ентити такой же адрес.
вобщем это очень не по пацански не обнулять ссылку при удалении.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
burovalex (31.10.2012)
Старый 31.10.2012, 14:34   #97
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: addmesh ???

Короче, написал функцию и постоянно пользуюсь, которая сразу обнуляет и проблема исчерпана

Function FreeEntityFull(entity)
FreeEntity(entity)
entity=0
End Function
__________________
(Offline)
 
Ответить с цитированием
Старый 31.10.2012, 15:44   #98
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: addmesh ???

твой вариант бесполезен, потому что в функции ты оперируешь локальными переменными. Вот так будет работать:
Function FreeEntityF(entity)
    FreeEntity(entity)
    Return 0
End Function

entity = FreeEntityF(entity)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
L-ee-X (01.11.2012), mr.DIMAS (31.10.2012)
Старый 01.11.2012, 01:03   #99
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: addmesh ???

Ты ошибаешься. Оперирую я локальной переменной только в функции, а вот когда ты вместо entity используешь глобальную переменную, соответственно она и используется.
Ну тут даже говорить не о чем. Я в школе проходил как функции работают)...
Без обид. Просто я разражает когда говорят что я не прав, не разобравшись.

Вот сам посуди. У тебя есть:
global a=10

Function oper(i)
i=0
end function

После вызова oper(a) что станет с "ГЛОБАЛЬНОЙ ПЕРЕМЕННОЙ а" ??
Согласись что в моем случае с Entity тоже глобально будет работать!?
__________________
(Offline)
 
Ответить с цитированием
Старый 01.11.2012, 01:25   #100
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: addmesh ???

Эм, ты как бе неправ, это тебе не basic. Блитц создает внутри функции локальную переменную и уже оперирует с ней, а не с той, которую ты указал. Прежде чем что-то доказывать - проверь.
Graphics3D 800, 600, 32, 2

Global entity = CreateSphere()
Print "number entity: "+entity
FreeEntityNEPRAVILNO(entity)
Print "after use FreeEntityNEPRAVILNO: "+entity
entity = FreeEntityPRAVILNO(entity)
Print "after use FreeEntityPRAVILNO: "+entity

WaitKey()
End


Function FreeEntityNEPRAVILNO(entity)
	FreeEntity entity
	entity = 0
End Function

Function FreeEntityPRAVILNO(ent)
	;для теста закоментируем
	;FreeEntity ent
	Return 0
End Function
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
L-ee-X (01.11.2012), St_AnGer (01.11.2012)
Старый 01.11.2012, 14:48   #101
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: addmesh ???

Блин, извини меня, H@NON!!
Вообще не прав был!
Просто у меня в проекте было обращение к несуществующему ентити, и почему то после "неправильной" функции косяк пропал, может я чтото еще изменил в коде...
Извини еще раз!
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
H@NON (01.11.2012)
Старый 01.11.2012, 15:11   #102
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: addmesh ???

Щас сделал самый простой пример, думал вдруг в ентити такая особенность.
Global a=10
Print a
ff(a)
Print a
WaitKey()
End

Function ff(ent)
	ent=0
End Function
ВСЕ РАВНО НЕ МЕНЯЕТ.

Это чушь какая то.
У меня в проекте пару десятков функций, которые работают с типами, массивами, гл. переменными, ентитями - всё работает. Я практически нигде не использую Return.
__________________
(Offline)
 
Ответить с цитированием
Старый 01.11.2012, 15:14   #103
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: addmesh ???

Function ff(ent)
ent=0
End Function
у тебя при передаче числовой переменной в функцию, создаётся её локальная копия в ней, инфа 100%. и ты меняешь её а не глобал.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (01.11.2012)
Старый 01.11.2012, 15:40   #104
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: addmesh ???

Global a=10
Print a
a = ff(a)
Print a
WaitKey()
End

Function ff(ent)
	Return ent + 1
End Function
Так будет ок.
Как Mr_F_ сказал - блиц передаёт не указатель а данное, что делает так сказать копию данного тем самым ты работаешь уже с другой переменной.
(Offline)
 
Ответить с цитированием
Старый 01.11.2012, 17:43   #105
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: addmesh ???

В функции при указании у нее переменной(function ss(ent)) внутри создается копия и работа идет уже с ней, а не с оригиналом. Кто-нибудь еще хочет объяснить?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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