FArchive& operator<<( FArchive& Ar, FObjectExport& E ) { Ar << E.ClassIndex; Ar << E.SuperIndex; Ar << E.OuterIndex; Ar << E.ObjectName; if (Ar.UE4Ver() < VER_UE4_REMOVE_ARCHETYPE_INDEX_FROM_LINKER_TABLES) { FPackageIndex OldArchetypeIndex; Ar << OldArchetypeIndex; } uint32 Save = E.ObjectFlags & RF_Load; Ar << Save; if (Ar.IsLoading()) { E.ObjectFlags = EObjectFlags(Save & RF_Load); } Ar << E.SerialSize; Ar << E.SerialOffset; Ar << E.bForcedExport; Ar << E.bNotForClient; Ar << E.bNotForServer; if (Ar.UE4Ver() < VER_UE4_REMOVE_NET_INDEX) { TArray<int32> OldGenerationNetObjectCount; Ar << OldGenerationNetObjectCount; } Ar << E.PackageGuid; Ar << E.PackageFlags; if (Ar.UE4Ver() >= VER_UE4_LOAD_FOR_EDITOR_GAME) { Ar << E.bNotForEditorGame; } return Ar; }
void GetObjectsWithAnyMarks(TArray<UObject *>& Results, EObjectMark Marks) { // We don't want to return any objects that are currently being background loaded unless we're using the object iterator during async loading. EObjectFlags ExclusionFlags = RF_Unreachable; if (!IsInAsyncLoadingThread()) { ExclusionFlags = EObjectFlags(ExclusionFlags | RF_AsyncLoading); } const TMap<const UObjectBase *, FObjectMark>& Map = MarkAnnotation.GetAnnotationMap(); Results.Empty(Map.Num()); for (TMap<const UObjectBase *, FObjectMark>::TConstIterator It(Map); It; ++It) { if (It.Value().Marks & Marks) { UObject* Item = (UObject*)It.Key(); if (!Item->HasAnyFlags(ExclusionFlags)) { Results.Add(Item); } } } }
//--------------------------------------------------------------------------------------- // !new constructor - creates new object void mthd_ctor_new(SkInvokedMethod * scope_p, SkInstance ** result_pp) { UObject * outer_p = scope_p->get_arg<SkUEEntity>(SkArg_1); FName name = scope_p->get_arg<SkUEName>(SkArg_2); uint32_t flags = scope_p->get_arg<SkInteger>(SkArg_3); // The scope of a constructor is always some form of an SkInstance SkInstance * receiver_p = static_cast<SkInstance *>(scope_p->m_scope_p.get_obj()); UClass * ue_class_p = SkUEClassBindingHelper::get_ue_class_from_sk_class(receiver_p->get_class()); SK_ASSERTX(ue_class_p, a_cstr_format("The UE4 equivalent of class type '%s' is not known to SkookumScript. Maybe it is the class of a Blueprint that is not loaded yet?", receiver_p->get_class()->get_name_cstr_dbg())); scope_p->get_this()->construct<SkUEEntity>(NewObject<UObject>(outer_p, ue_class_p, name, EObjectFlags(flags))); }
UObjectBase* FObjectBaseArchiveProxy::CreateObjectBase(const FUHTMakefile& UHTMakefile) const { UObjectBase* ObjectBase = new UObjectBase(nullptr, EObjectFlags(ObjectFlagsUint32), EInternalObjectFlags::Native, nullptr, Name.CreateName(UHTMakefile)); PostConstruct(ObjectBase); return ObjectBase; }