Вопрос GlowColor

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
364
Реакции
24
Я очень долго смотрел и выяснил что почему при выходе из матча крашит игру каждый раз когда что-то делаю с glowColor героя. Ну у меня простая механика (if health < 350 ) { SetColor(R,G,B,A); } ) краш происходит в какой-то из вмтшек героя в деструкторе.

C++:
Expand Collapse Copy
bool CGlowProperty::IsColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
{
    return this->m_glowColorOverride.r == r &&
    this->m_glowColorOverride.g == g &&
    this->m_glowColorOverride.b == b &&
    this->m_glowColorOverride.a == a;
}

void CGlowProperty::SetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
{
    this->m_glowColorOverride.r = r;
    this->m_glowColorOverride.g = g;
    this->m_glowColorOverride.b = b;
    this->m_glowColorOverride.a = a;
    return;
}

void CGlowProperty::SetGlowing(bool value = false)
{
    this->m_bGlowing = value;
    return;
}
void CBaseEntity::SetGlowColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255)
{
     
    auto Glow = GetGlowProperty();
    return;
    if (Glow->IsColor(r, g, b, a))
    {
        return;
    }
    Glow->SetColor(r, g, b, a);
    Glow->SetGlowing(true);

    OnGlowColorChanged(this);
}

OnGlowColorChanged это вот эта функцаяя (подсвечена на скрине)
hHai9l6.png
 
Я очень долго смотрел и выяснил что почему при выходе из матча крашит игру каждый раз когда что-то делаю с glowColor героя. Ну у меня простая механика (if health < 350 ) { SetColor(R,G,B,A); } ) краш происходит в какой-то из вмтшек героя в деструкторе.

C++:
Expand Collapse Copy
bool CGlowProperty::IsColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
{
    return this->m_glowColorOverride.r == r &&
    this->m_glowColorOverride.g == g &&
    this->m_glowColorOverride.b == b &&
    this->m_glowColorOverride.a == a;
}

void CGlowProperty::SetColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
{
    this->m_glowColorOverride.r = r;
    this->m_glowColorOverride.g = g;
    this->m_glowColorOverride.b = b;
    this->m_glowColorOverride.a = a;
    return;
}

void CGlowProperty::SetGlowing(bool value = false)
{
    this->m_bGlowing = value;
    return;
}
void CBaseEntity::SetGlowColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255)
{
   
    auto Glow = GetGlowProperty();
    return;
    if (Glow->IsColor(r, g, b, a))
    {
        return;
    }
    Glow->SetColor(r, g, b, a);
    Glow->SetGlowing(true);

    OnGlowColorChanged(this);
}

OnGlowColorChanged это вот эта функцаяя (подсвечена на скрине)
hHai9l6.png
контекста мало. где вызываешь(в каком месте, в каком треде), когда вызываешь, на ком вызываешь, где конкретно и почему крашит(при лайв дебаггинге тебе же брейкнет дебаггер если "крашнет" вот и смотри где и почему, а если ты без дебагера сидел но у тебя есть краш дамп то пост-мортем дебажь)
тем более что если тебе крашит игру каждый раз стабильно то это ваще ахуенно потому что легко репродуцируется и можно сколько угодно дебажить(потому что бывает что баг проявляется абсолютно рандомно и редко и непредсказуемо и такое сложно анализировать)
мб ты на нуллптр забыл чекнуть что-нибудь прост?
 
Назад
Сверху Снизу