|
3D-программирование Вопросы, касающиеся программирования 3D мира |
21.03.2009, 18:07
|
#1
|
ПроЭктировщик
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений (для 23 пользователей)
|
Удаление типа с ентитями!
Привет!
Есть такая у меня функция, удаляет типы и ентити связанные с ними!
Вот этот код:
For objct.mapObject=Each mapObject
FreeEntity(objct\mesh)
Delete objct
Next
По идее обязан очищать память от ентитей(скажу по секрету в этом типе у меня дома и деревья), но блин, он ничего не удаляет!!! Т.е. при загрузке нового уровня объекты старого остаются на своих места =((.. Что же это за лаг такой?
|
(Offline)
|
|
21.03.2009, 18:17
|
#2
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Удаление типа с ентитями!
с виду всё прально, ошибка не здесь
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
light=CreateLight()
cam=CreateCamera()
MoveEntity cam,0,0,-30
Type ent
Field mesh
Field x,y,z
End Type
Function create()
e.ent = New ent
e\mesh = CreateCube()
e\x=Rnd(-10,10)
e\y=Rnd(-10,10)
e\z=Rnd(-10,10)
PositionEntity e\mesh,e\x,e\y,e\z
End Function
For i=1 To 20
create()
Next
Repeat
If KeyHit(57)
For e.ent = Each ent
FreeEntity e\mesh
Delete e
Next
EndIf
UpdateWorld()
RenderWorld()
Flip
Until KeyHit(1)
End
например это у меня работает на ура ))
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо NitE за это полезное сообщение:
|
|
21.03.2009, 18:35
|
#3
|
ПроЭктировщик
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений (для 23 пользователей)
|
Ответ: Удаление типа с ентитями!
ОМГ! Срочно закройте тему, прощу прощения! Я втупую два раза из создавал xD
=============
Нет, проблема осталась!
For Objects.mapObject=Each mapObject
DebugLog(Objects\mesh)
FreeEntity(Objects\mesh)
DebugLog(Objects\mesh)
DebugLog("==========")
Delete Objects
Next
Лог:
126912584
126912584
==========
127454328
127454328
==========
125644752
125644752
==========
Значит не удалаяется, кстати у меня там через LoadMesh эти ентити грузятся, может чето еще надо писать?
Последний раз редактировалось Baisangur, 21.03.2009 в 19:15.
|
(Offline)
|
|
21.03.2009, 20:01
|
#4
|
|
Ответ: Удаление типа с ентитями!
Baisangur
они удаляются, просто переменная не устанавливается в ноль
|
|
|
Сообщение было полезно следующим пользователям:
|
|
21.03.2009, 20:38
|
#5
|
ПроЭктировщик
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений (для 23 пользователей)
|
Ответ: Удаление типа с ентитями!
Я уже ее сам устанавливаю в ноль! Все пофигу ему!
Чтобы удалились старые, нужно чтобы их место заняли новые, как я уже тока не удалял их они всеравно остаются.. =(
|
(Offline)
|
|
21.03.2009, 21:18
|
#6
|
Оператор ЭВМ
Регистрация: 13.12.2008
Сообщений: 35
Написано 7 полезных сообщений (для 12 пользователей)
|
Ответ: Удаление типа с ентитями!
Сообщение от Baisangur
они всеравно остаются
|
скинь свой код с инициализацией объектов типа.
|
(Offline)
|
|
21.03.2009, 22:50
|
#7
|
ПроЭктировщик
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений (для 23 пользователей)
|
Ответ: Удаление типа с ентитями!
Хм.. оказывается надо всетаки спать более 8 часов в 2 дня дня... =))
Оказывается я забыл очищать массив куда у меня парсятся пути до файлов моделей =)
|
(Offline)
|
|
22.03.2009, 01:20
|
#8
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Удаление типа с ентитями!
Сообщение от Baisangur
Я уже ее сам устанавливаю в ноль! Все пофигу ему!
Чтобы удалились старые, нужно чтобы их место заняли новые, как я уже тока не удалял их они всеравно остаются.. =(
|
Чё-т херню ты какую-то нагнал...
1. Установка переменной в нуль ничего не даст
Переменная - это всего лишь ссылка. То есть назначив в неё ноль ты просто потеряешь ссылку а объект останется где и был.
Надо FreeEntity делать на ту переменную, а то что после FreeEntit6y в ней цифра остаётся - то это роли не играет - объект-то уже удалён.
2. "Чтобы удалились старые, нужно чтобы их место заняли новые"
Если так сделаешь то просто ссылки заменятся ссылками на новые антити, а старые останутся) Т.е. тоже эффекта не даст.
З.Ы. А спать и правда надо. Я вон меньше 6 час/сутки не могу, хотя и стараюсь.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
22.03.2009, 01:22
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Удаление типа с ентитями!
a = createcube()
a = createcube()
все. первый куб для нас потерян, не удалить его, не переместить. разве что только ClearWorld()
|
(Offline)
|
|
22.03.2009, 23:02
|
#10
|
ПроЭктировщик
Регистрация: 10.03.2009
Адрес: Казахстан->Кустанай
Сообщений: 147
Написано 12 полезных сообщений (для 23 пользователей)
|
Ответ: Удаление типа с ентитями!
Спс ХолиДел и Автомат за помощь! Проблема уже решена, я строю объекты на локации из файла такого вида:
name=tree
type_num=2
x=217.802
y=29.4682
z=275.679
angle=-36.0
scale=1.95
name=tree
type_num=2
x=253.182
y=28.8648
z=226.584
angle=-18.0
scale=2.14
И у меня в отдельном файле функция есть, которая все это дело парсит в 3Д объекты и вставляет их в сцену, поворачивает, скейлит.. просто пути до них я сохраняю в массив(для некоторых целей), и при загрузке следующей локации я забывал очищать этот самый массив и у меня парсилось все то что уже было в массиве, если в сцене новой объектов было меньше чем в старой то те что есть занимали места прежних, а те что не заменялись так и выводились поновай. =) Все проблема решена! Тему можна закрыть!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:20.
|