EpicSkookumScript / EpicSkookumScript/SkookumScript-Plugin
BlueprintImplementableEvent's can be called with wrong scope
- Ngôn ngữ chính
- C++
- Star
- 138
- Fork
- 22
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
**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.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện ví dụ UE4 4.23 được cung cấp với hai lớp dẫn xuất và nhiều lần gọi BlueprintImplementableEvent. So sánh lệnh gọi sự kiện trực tiếp với wrapper UFUNCTION được cho là hoạt động, sau đó lần theo cách plugin xử lý BlueprintImplementableEvent. Được xem là hoàn tất khi các lệnh gọi vẫn giữ đúng scope của đối tượng mà không gặp assertion UberGraphFrame đã được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp, unreal-engine
- Lĩnh vực
- game-dev
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 35/100