EpicSkookumScript / EpicSkookumScript/SkookumScript-Plugin

BlueprintImplementableEvent's can be called with wrong scope

Ouverte
#22 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug
Langage dominant
C++
Étoiles
138
Forks
22
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

**UE4 Version**
4.23

**SkookumScript Version**
4.23

**Describe the bug**
Calling mulltiple `BlueprintImplementableEvent`'s in the same script can result in them being called with the wrong scope.

**To Reproduce**
```javascript
// Classes A and B derive from the same subclass
// The subclass defines some_event as a BlueprintImplementableEvent
!class_a : SomeClassA.instances_first
!class_b : SomeClassB.instances_first

a.simulate_physics_set(true)
a.some_event(0, true)

b.simulate_physics_set(true)
b.some_event(0, true) // <--- Crash here
```
Crashes with assert:
```
Assertion failed: ((UObject*)ContainerPtr)->IsA((UClass*)GetOuter()) [File:C:\Epic Games\4.23\Engine\Source\Runtime\CoreUObject\Public\UObject/UnrealType.h] [Line: 367]
'SomeClassA_2' is of class 'SomeClassA_C' however property 'UberGraphFrame' belongs to class 'SomeClassB_C'
```

If I call the `BlueprintImplementableEvent` via a `UFUNCTION` marked method that is not `BlueprintImplementableEvent` then it works fine.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par reproduire l’exemple UE4 4.23 fourni avec deux classes dérivées et plusieurs appels à BlueprintImplementableEvent. Comparez l’appel direct de l’événement avec le wrapper UFUNCTION qui fonctionnerait, puis suivez le traitement de BlueprintImplementableEvent du plugin. Le travail est terminé lorsque les appels conservent la portée correcte de l’objet sans l’assertion UberGraphFrame signalée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
cpp, unreal-engine
Domaine
game-dev
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.