EpicSkookumScript / EpicSkookumScript/SkookumScript-Plugin

BlueprintImplementableEvent's can be called with wrong scope

Đang mở
#22 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug
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

Mở 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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.