public static List <IssueRecord> CheckSceneSettingsForMissingReferences(AssetInfo sceneAsset) { var result = new List <IssueRecord>(); var sceneSettingsObject = CSSettingsTools.GetInSceneLightmapSettings(); if (sceneSettingsObject != null) { var initialInfo = new SerializedObjectTraverseInfo(sceneSettingsObject); CSTraverseTools.TraverseObjectProperties(initialInfo, (info, property) => { if (MissingReferenceDetector.IsPropertyHasMissingReference(property)) { var record = SceneSettingsIssueRecord.Create(SceneSettingsKind.LightmapSettings, IssueKind.MissingReference, sceneAsset.Path, property.propertyPath); result.Add(record); } }); } sceneSettingsObject = CSSettingsTools.GetInSceneRenderSettings(); if (sceneSettingsObject != null) { var initialInfo = new SerializedObjectTraverseInfo(sceneSettingsObject); CSTraverseTools.TraverseObjectProperties(initialInfo, (info, property) => { if (MissingReferenceDetector.IsPropertyHasMissingReference(property)) { var record = SceneSettingsIssueRecord.Create(SceneSettingsKind.RenderSettings, IssueKind.MissingReference, sceneAsset.Path, property.propertyPath); result.Add(record); } }); } return(result); }
private static void CheckRenderSettingsTexture(TreeConjunction conjunction, int candidateInstanceId) { renderSettings = renderSettings ? renderSettings : CSSettingsTools.GetInSceneRenderSettings(); if (renderSettings == null) { return; } renderSettingsSo = renderSettingsSo ?? new SerializedObject(renderSettings); renderHaloField = renderHaloField ?? renderSettingsSo.FindProperty("m_HaloTexture"); if (renderHaloField != null && renderHaloField.propertyType == SerializedPropertyType.ObjectReference) { if (renderHaloField.objectReferenceInstanceIDValue == candidateInstanceId) { var entry = new ReferencingEntryData { location = Location.SceneLightingSettings, prefixLabel = "Lighting settings (Scene tab > Other Settings > Halo Texture)" }; conjunction.referencedAtInfo.AddNewEntry(entry); } } else { Debug.LogError(Maintainer.ConstructError("Can't find m_HaloTexture at the RenderSettings!")); } renderSpotField = renderSpotField ?? renderSettingsSo.FindProperty("m_SpotCookie"); if (renderSpotField != null && renderSpotField.propertyType == SerializedPropertyType.ObjectReference) { if (renderSpotField.objectReferenceInstanceIDValue == candidateInstanceId) { var entry = new ReferencingEntryData { location = Location.SceneLightingSettings, prefixLabel = "Lighting settings (Scene tab > Other Settings > Spot Cookie)" }; conjunction.referencedAtInfo.AddNewEntry(entry); } } else { Debug.LogError(Maintainer.ConstructError("Can't find m_SpotCookie at the RenderSettings!")); } /*var iterator = renderSettingsSo.GetIterator(); * while (iterator.Next(true)) * { * if (iterator.propertyType == SerializedPropertyType.ObjectReference) * { * Debug.Log(iterator.propertyPath + " [" + iterator.objectReferenceValue + "]"); * } * }*/ }
private Object GetSettingsObjectWithThisIssue() { Object result; switch (SettingsKind) { case SceneSettingsKind.LightmapSettings: result = CSSettingsTools.GetInSceneLightmapSettings(); break; case SceneSettingsKind.RenderSettings: result = CSSettingsTools.GetInSceneRenderSettings(); break; default: throw new ArgumentOutOfRangeException(); } return(result); }