void UJavascriptEditorLibrary::GetAlphamapDataToMemory(ULandscapeInfo* LandscapeInfo, ULandscapeLayerInfoObject* LayerInfo, int32 MinX, int32 MinY, int32 MaxX, int32 MaxY) { if (LayerInfo == nullptr) { return; } const int32 SizeX = (1 + MaxX - MinX); const int32 SizeY = (1 + MaxY - MinY); if (SizeX * SizeY * 1 == FArrayBufferAccessor::GetSize()) { auto Buffer = (uint8*)FArrayBufferAccessor::GetData(); FAlphamapAccessor<false, false> Accessor(LandscapeInfo, LayerInfo); TMap<FIntPoint, uint8> Data; Accessor.GetData(MinX, MinY, MaxX, MaxY, Data); FMemory::Memzero(Buffer, SizeX * SizeY); for (auto it = Data.CreateConstIterator(); it; ++it) { const auto& Point = it.Key(); Buffer[Point.X + Point.Y * SizeX] = it.Value(); } } }
//virtual BcBool CsSerialiserPackageObjectCodec::shouldSerialiseField( void* InData, BcU32 ParentFlags, const class ReField* Field ) { BcU32 Flags = Field->getFlags() | ( ParentFlags & PropagateFieldFlags_ ); BcBool ShouldSerialise = ( ( ( Flags & ExcludeFieldFlags_ ) == 0 ) && ( ( Flags & IncludeFieldFlags_ ) != 0 ) ); // If the field is an ReObject, we should check if it's a CsPackage. // - We don't want to serialise CsPackages. const ReClass* InClass = static_cast< const ReClass* >( Field->getType() ); // Check if it's an object. if( InClass->hasBaseClass( ReObject::StaticGetClass() ) ) { ReFieldAccessor Accessor( InData, Field ); if( !Accessor.isContainerType() ) { const ReClass* UpperClass = Accessor.getUpperClass(); if( UpperClass == CsPackage::StaticGetClass() ) { return BcFalse; } } } return ShouldSerialise; }
void UJavascriptEditorLibrary::SetHeightmapDataFromMemory(ULandscapeInfo* LandscapeInfo, int32 MinX, int32 MinY, int32 MaxX, int32 MaxY) { const int32 SizeX = (1 + MaxX - MinX); const int32 SizeY = (1 + MaxY - MinY); if (SizeX * SizeY * 2 == FArrayBufferAccessor::GetSize()) { FHeightmapAccessor<false> Accessor(LandscapeInfo); Accessor.SetData(MinX, MinY, MaxX, MaxY, (uint16*)FArrayBufferAccessor::GetData()); } }
T reduce( GlobalAddress<P> localizable ) { CompletionEvent ce(cores() - 1); T total = Accessor(localizable); Core origin = mycore(); for (Core c=0; c<cores(); c++) { if (c != origin) { send_heap_message(c, [localizable, &ce, &total, origin]{ T val = Accessor(localizable); send_heap_message(origin, [val,&ce,&total] { total = ReduceOp(total, val); ce.complete(); }); }); } } ce.wait(); return total; }
void UJavascriptEditorLibrary::SetAlphamapDataFromMemory(ULandscapeInfo* LandscapeInfo, ULandscapeLayerInfoObject* LayerInfo, int32 MinX, int32 MinY, int32 MaxX, int32 MaxY, ELandscapeLayerPaintingRestriction::Type PaintingRestriction) { if (LayerInfo == nullptr) { return; } const int32 SizeX = (1 + MaxX - MinX); const int32 SizeY = (1 + MaxY - MinY); if (SizeX * SizeY * 1 == FArrayBufferAccessor::GetSize()) { FAlphamapAccessor<false,false> Accessor(LandscapeInfo, LayerInfo); Accessor.SetData(MinX, MinY, MaxX, MaxY, (uint8*)FArrayBufferAccessor::GetData(), PaintingRestriction); } }
void UJavascriptEditorLibrary::GetHeightmapDataToMemory(ULandscapeInfo* LandscapeInfo, int32 MinX, int32 MinY, int32 MaxX, int32 MaxY) { const int32 SizeX = (1 + MaxX - MinX); const int32 SizeY = (1 + MaxY - MinY); if (SizeX * SizeY * 2 == FArrayBufferAccessor::GetSize()) { auto Buffer = (uint16*)FArrayBufferAccessor::GetData(); FHeightmapAccessor<false> Accessor(LandscapeInfo); TMap<FIntPoint, uint16> Data; Accessor.GetData(MinX, MinY, MaxX, MaxY, Data); FMemory::Memzero(Buffer, SizeX * SizeY * 2); for (auto it = Data.CreateConstIterator(); it; ++it) { const auto& Point = it.Key(); Buffer[Point.X + Point.Y * SizeX] = it.Value(); } } }
Accessor operator*() { return Accessor(*this, index); }
Accessor operator[](size_t idx) { return Accessor(*this, index + idx); };
/* get a cursor at the top left pixel * access via a Float<3> reference */ inline Cursor origin() { return Cursor(Accessor(this->png), cursor::MultiIndexNavigator<2>(), math::Int<2>(0)); }
Technique_Common::Technique_Common() { this->m_accessor = Accessor(); }