private static void ChangeColorsInSubObjects(ExportEntry export, Dictionary <string, CFVector4> vectorValues, Dictionary <string, float> scalarValues, PropertyCollection props = null) { props ??= export.GetProperties(); foreach (var childObjProp in props.OfType <ObjectProperty>()) { var childObj = childObjProp.ResolveToEntry(export.FileRef) as ExportEntry; if (childObj != null && childObj.ClassName == "SkeletalMeshComponent") { var childMaterials = childObj.GetProperty <ArrayProperty <ObjectProperty> >("Materials"); if (childMaterials != null) { foreach (var childMatObj in childMaterials) { if (childMatObj.ResolveToEntry(export.FileRef) is ExportEntry childMat) { RandomizeSubMatInst(childMat, vectorValues, scalarValues); } } } } } }