danisimus AntonivkA VIRrusR
Опытным путём установлено что лучше делать так
bool so_my_Debug = true;
void SpawnObject( string type, vector position, vector orientation )
{
Object obj = NULL;
if (so_my_Debug) Print("::: [SpawnObject() DEBUG]: Request: Class: " + type + " : ori:" + position.ToString() + " : ori:" + orientation.ToString());
if (position[1] == 0) position[1] = GetGame().SurfaceY(position[0], position[2]);
obj = GetGame().CreateObject(type, vector.Zero);
if (obj)
{
if (so_my_Debug) Print("::: [SpawnObject() DEBUG]: CreateObject: " + obj.ToString());
if (so_my_Debug) Print("::: [SpawnObject() DEBUG]: Set pos:" + position.ToString());
obj.SetPosition(position);
if (so_my_Debug) Print("::: [SpawnObject() DEBUG]: Set ori: " + orientation.ToString());
obj.SetOrientation(orientation);
//Force collision update
vector roll = obj.GetOrientation();
roll[2] = roll[2] - 1;
if (so_my_Debug) Print("::: [SpawnObject() DEBUG]: Collision update: " + roll.ToString());
obj.SetOrientation(roll);
roll[2] = roll[2] + 1;
if (so_my_Debug) Print("::: [SpawnObject() DEBUG]: Collision update: " + roll.ToString());
obj.SetOrientation(roll);
if (so_my_Debug) Print("::: [SpawnObject() DEBUG]: Result: Object: " + obj.ToString() + " : pos:" + obj.GetPosition().ToString() + " : ori:" + obj.GetOrientation().ToString());
}
else
{
Print("::: [SpawnObject() DEBUG]: Spawn object error: " + type + " : pos:" + position.ToString() + " : ori:" + orientation.ToString());
}
}
дебагнутые принты не убирал,
а добавил я их тк на некоторых обьектах был краш и надо было выяснить почему
Вобщем если после создания этих обьектов попытаться им заново установить те же координаты - краш без записей в лог
100% краш на след обьектах
Land_Mil_ATC_Big
Land_Ship_Big_FrontA
потому немного переделал
сначала обьект создается по нулевым координатам
obj = GetGame().CreateObject(type, vector.Zero);
и затем, если он все же создался, устанавливаем позицию и остальное.
если же не создался об этом напишет в лог независимо включен дебаг или нет (bool so_my_Debug = true;)
Вобщем удивительно
переустановка горизонтальной ориентации действительно привела к положительным результатам