void ABrush::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) { if(Brush) { Brush->BuildBound(); } if(IsStaticBrush() && PropertyChangedEvent.ChangeType != EPropertyChangeType::Interactive && GUndo) { // BSP can only be rebuilt during a transaction GEditor->RebuildAlteredBSP(); } bool bIsBuilderBrush = FActorEditorUtils::IsABuilderBrush( this ); if (!bIsBuilderBrush && (BrushType == Brush_Default)) { // Don't allow non-builder brushes to be set to the default brush type BrushType = Brush_Add; } else if (bIsBuilderBrush && (BrushType != Brush_Default)) { // Don't allow the builder brush to be set to the anything other than the default brush type BrushType = Brush_Default; } Super::PostEditChangeProperty(PropertyChangedEvent); }
FColor ABrush::GetWireColor() const { FColor Color = GEngine->C_BrushWire; if( IsStaticBrush() ) { Color = bColored ? BrushColor : BrushType == Brush_Subtract ? GEngine->C_SubtractWire : BrushType != Brush_Add ? GEngine->C_BrushWire : (PolyFlags & PF_Portal) ? GEngine->C_SemiSolidWire : (PolyFlags & PF_NotSolid) ? GEngine->C_NonSolidWire : (PolyFlags & PF_Semisolid) ? GEngine->C_ScaleBoxHi : GEngine->C_AddWire; } else if( IsVolumeBrush() ) { Color = bColored ? BrushColor : GEngine->C_Volume; } else if( IsBrushShape() ) { Color = bColored ? BrushColor : GEngine->C_BrushShape; } return Color; }
void ABrush::Destroyed() { Super::Destroyed(); if(IsStaticBrush()) { // Trigger a csg rebuild if we're in the editor. SetNeedRebuild(GetLevel()); } }
void ABrush::Destroyed() { Super::Destroyed(); if(GIsEditor && IsStaticBrush() && !GetWorld()->IsGameWorld()) { // Trigger a csg rebuild if we're in the editor. SetNeedRebuild(GetLevel()); } }
void ABrush::PostLoad() { Super::PostLoad(); #if WITH_EDITOR if (BrushBuilder && BrushBuilder->GetOuter() != this) { BrushBuilder = DuplicateObject<UBrushBuilder>(BrushBuilder, this); } // Assign the default material to brush polys with NULL material references. if ( Brush && Brush->Polys ) { if ( IsStaticBrush() ) { for( int32 PolyIndex = 0 ; PolyIndex < Brush->Polys->Element.Num() ; ++PolyIndex ) { FPoly& CurrentPoly = Brush->Polys->Element[PolyIndex]; if ( !CurrentPoly.Material ) { CurrentPoly.Material = UMaterial::GetDefaultMaterial(MD_Surface); } } } // if the polys of the brush have the wrong outer, fix it up to be the UModel (my Brush member) // UModelFactory::FactoryCreateText was passing in the ABrush as the Outer instead of the UModel if (Brush->Polys->GetOuter() == this) { Brush->Polys->Rename(*Brush->Polys->GetName(), Brush, REN_ForceNoResetLoaders); } } if ( BrushComponent && !BrushComponent->BrushBodySetup ) { UE_LOG(LogPhysics, Log, TEXT("%s does not have BrushBodySetup. No collision."), *GetName()); } #endif }