Загрузка...

Aim на турели ( если - или )

Тема в разделе C/C++ создана пользователем c0dez 1 янв 2021. (поднята 30 дек 2020) 229 просмотров

  1. c0dez
    c0dez Автор темы 1 янв 2021 1 14 дек 2020
    Код
    if (strstr(Name, "Turret"))
    {
    if (strstr(Name, "MR_TurretFloor_ASR_Cart_Indoor_"))
    {
    if (GetBoneId(pEntity, BoneName::bone_disk) == -1)continue;
    LocBonePos = GetBoneName(pEntity, BoneName::bone_disk);
    }
    else
    if (strstr(Name, "Drone_MG"))
    {
    if (GetBoneId(pEntity, BoneName::weaponPos_law) == -1)continue;
    LocBonePos = GetBoneName(pEntity, BoneName::weaponPos_law);
    }
    else
    if (
    strstr(Name, "TurretHunt_") ||
    strstr(Name, "Turret_MG"))
    {
    if (GetBoneId(pEntity, BoneName::eye_right_bone) == -1)continue;
    Vec3 St1 = GetBoneName(pEntity, BoneName::eye_right_bone);
    Vec3 St2 = GetBoneName(pEntity, BoneName::eye_left_bone);
    LocBonePos = (St1 + St2) * 0.5;
    LocBonePos.z = LocBonePos.z - 0.1f;
    }
    else
    if (strstr(Name, "TurretFloor_MG") ||
    strstr(Name, "TurretFloor_mg") ||
    strstr(Name, "TurretRail_mg") ||
    strstr(Name, "TurretRail_MG"))
    {
    if (GetBoneId(pEntity, BoneName::bone_head_left_rockets) == -1)continue;
    LocBonePos = GetBoneName(pEntity, BoneName::bone_head_left_rockets);
    }
    else
    if (strstr(Name, "TurretFloor_ASR"))
    {
    if (GetBoneId(pEntity, BoneName::bone_head) == -1)continue;
    LocBonePos = GetBoneName(pEntity, BoneName::bone_head);
    }
    else
    if (strstr(Name, "HeavyTurret"))
    {
    if (GetBoneId(pEntity, BoneName::weapon_bone) == -1)continue;
    LocBonePos = GetBoneName(pEntity, BoneName::weapon_bone);
    }
    }
    Код
    int GetBoneId(IEntity* pEnt, string BoneName)
    {
    ICharacterInstance* GetCharacter = pEnt->GetCharacter();
    if (!GetCharacter)return ZERO;

    ISkeletonPose* m_pSkeleton = GetCharacter->GetISkeletonPose();
    if (!m_pSkeleton)return ZERO;

    return m_pSkeleton->GetJointIDByName(BoneName.c_str());
    }

    Vec3 GetBoneName(IEntity* pEnt, string BoneName)
    {

    ICharacterInstance* GetCharacter = pEnt->GetCharacter();
    if (!GetCharacter)return ZERO;

    ISkeletonPose* m_pSkeleton = GetCharacter->GetISkeletonPose();
    if (!m_pSkeleton)return ZERO;

    if (GetBoneId(pEnt, BoneName) != -1)
    {
    Matrix34 HeadPos = pEnt->GetProjectedWorldBBox() * Matrix34(m_pSkeleton->GetAbsJointByID(GetBoneId(pEnt, BoneName)));
    return HeadPos.GetTranslation();
    }
    return ZERO;
    }
    Конечной позицией является LocBonePos
     
Загрузка...
Top