void UDebugSkelMeshComponent::ToggleClothSectionsVisibility(bool bShowOnlyClothSections) { FSkeletalMeshResource* SkelMeshResource = GetSkeletalMeshResource(); if (SkelMeshResource) { PreEditChange(NULL); for (int32 LODIndex = 0; LODIndex < SkelMeshResource->LODModels.Num(); LODIndex++) { FStaticLODModel& LODModel = SkelMeshResource->LODModels[LODIndex]; for (int32 SecIdx = 0; SecIdx < LODModel.Sections.Num(); SecIdx++) { FSkelMeshSection& Section = LODModel.Sections[SecIdx]; // toggle visibility between cloth sections and non-cloth sections if (bShowOnlyClothSections) { // enables only cloth sections if (LODModel.Chunks[Section.ChunkIndex].HasApexClothData()) { Section.bDisabled = false; } else { Section.bDisabled = true; } } else { // disables cloth sections and also corresponding original sections if (LODModel.Chunks[Section.ChunkIndex].HasApexClothData()) { Section.bDisabled = true; LODModel.Sections[Section.CorrespondClothSectionIndex].bDisabled = true; } else { Section.bDisabled = false; } } } } PostEditChange(); } }
void UAnimGraphNode_SkeletalControlBase::SetDefaultValue(const FString& UpdateDefaultValueName, const FVector& Value) { for (UEdGraphPin* Pin : Pins) { if (Pin->PinName == UpdateDefaultValueName) { if (GetSchema()->IsCurrentPinDefaultValid(Pin).IsEmpty()) { FString Str = FString::Printf(TEXT("%.3f,%.3f,%.3f"), Value.X, Value.Y, Value.Z); if (Pin->DefaultValue != Str) { PreEditChange(NULL); GetSchema()->TrySetDefaultValue(*Pin, Str); PostEditChange(); break; } } } } }
bool UAnimGraphNode_TwoBoneIK::SetPinsVisibility(bool bShow) { bool bChanged = false; for (FOptionalPinFromProperty& Pin : ShowPinForProperties) { if (Pin.PropertyName == GET_MEMBER_NAME_CHECKED(FAnimNode_TwoBoneIK, JointTargetLocation)) { PreEditChange(NULL); if (Pin.bShowPin != bShow) { Pin.bShowPin = bShow; bChanged = true; } break; } } return bChanged; }
void UK2Node_Switch::RemovePinFromSwitchNode(UEdGraphPin* TargetPin) { // If removing the default pin, we'll need to reconstruct the node, so send a property changed event to handle that if(bHasDefaultPin && TargetPin == GetDefaultPin()) { UProperty* HasDefaultPinProperty = FindField<UProperty>(GetClass(), "bHasDefaultPin"); if(HasDefaultPinProperty != NULL) { PreEditChange(HasDefaultPinProperty); bHasDefaultPin = false; FPropertyChangedEvent HasDefaultPinPropertyChangedEvent(HasDefaultPinProperty); PostEditChangeProperty(HasDefaultPinPropertyChangedEvent); } } else { TargetPin->MarkPendingKill(); Pins.Remove(TargetPin); } }
void UDebugSkelMeshComponent::RestoreClothSectionsVisibility() { // if this skeletal mesh doesn't have any clothing assets, just return if (!SkeletalMesh || SkeletalMesh->ClothingAssets.Num() == 0) { return; } FSkeletalMeshResource* SkelMeshResource = GetSkeletalMeshResource(); if (SkelMeshResource) { PreEditChange(NULL); for(int32 LODIndex = 0; LODIndex < SkelMeshResource->LODModels.Num(); LODIndex++) { FStaticLODModel& LODModel = SkelMeshResource->LODModels[LODIndex]; // enables all sections first for(int32 SecIdx = 0; SecIdx < LODModel.Sections.Num(); SecIdx++) { LODModel.Sections[SecIdx].bDisabled = false; } // disables corresponding original section to enable the cloth section instead for(int32 SecIdx = 0; SecIdx < LODModel.Sections.Num(); SecIdx++) { FSkelMeshSection& Section = LODModel.Sections[SecIdx]; if(LODModel.Chunks[Section.ChunkIndex].HasApexClothData()) { LODModel.Sections[Section.CorrespondClothSectionIndex].bDisabled = true; } } } PostEditChange(); } }