Skip to content

Commit c24bf33

Browse files
committed
refactor of how input settings are instanciated/initalized by the recorder editors.
1 parent c3d4169 commit c24bf33

File tree

12 files changed

+48
-68
lines changed

12 files changed

+48
-68
lines changed

source/FrameRecorder/Core/Editor/RTInputSelector.cs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ namespace UnityEditor.FrameRecorder
88
public class RTInputSelector
99
{
1010
string title { get; set; }
11-
bool enforceEvenSize { get; set; }
1211
string[] candidates = { "Camera output", "Offscreen rendering", "Render Texture" };
12+
RecorderSettings recSettings;
1313

14-
public RTInputSelector(string title, bool enforceEvenSize )
14+
public RTInputSelector( RecorderSettings recSettings, string title )
1515
{
16+
this.recSettings = recSettings;
1617
this.title = title;
17-
this.enforceEvenSize = enforceEvenSize;
1818
}
1919

2020
public bool OnInputGui( ref RecorderInputSetting input)
@@ -25,28 +25,18 @@ public bool OnInputGui( ref RecorderInputSetting input)
2525

2626
if (index != newIndex)
2727
{
28-
Type newType = null;
2928
switch (newIndex)
3029
{
3130
case 0:
32-
newType = typeof(CBRenderTextureInputSettings);
31+
input = recSettings.NewInputSettingsObj<CBRenderTextureInputSettings>( title );
3332
break;
3433
case 1:
35-
newType = typeof(AdamBeautyInputSettings);
34+
input = recSettings.NewInputSettingsObj<AdamBeautyInputSettings>( title );
3635
break;
3736
case 2:
38-
newType = typeof(RenderTextureInputSettings);
37+
input = recSettings.NewInputSettingsObj<RenderTextureInputSettings>( title );
3938
break;
4039
}
41-
var newSettings = ScriptableObject.CreateInstance(newType) as RecorderInputSetting;
42-
newSettings.m_DisplayName = title;
43-
input = newSettings;
44-
45-
if (newSettings is CBRenderTextureInputSettings)
46-
(newSettings as CBRenderTextureInputSettings).m_PadSize = enforceEvenSize;
47-
if (newSettings is AdamBeautyInputSettings)
48-
(newSettings as AdamBeautyInputSettings).m_ForceEvenSize = enforceEvenSize;
49-
5040
return true;
5141
}
5242

source/FrameRecorder/Core/Editor/RecorderEditor.cs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,6 @@ public override void OnInspectorGUI()
132132

133133
protected void AddSourceSettings(RecorderInputSetting sourceSettings)
134134
{
135-
sourceSettings.name = GUID.Generate().ToString();
136-
137-
AssetDatabase.AddObjectToAsset(sourceSettings, serializedObject.targetObject);
138-
AssetDatabase.Refresh();
139-
140135
m_Inputs.InsertArrayElementAtIndex(m_Inputs.arraySize);
141136
var arryItem = m_Inputs.GetArrayElementAtIndex(m_Inputs.arraySize-1);
142137
arryItem.objectReferenceValue = sourceSettings;
@@ -150,8 +145,6 @@ public void ChangeInputSettings(int atIndex, RecorderInputSetting newSettings)
150145
{
151146
if (newSettings != null)
152147
{
153-
newSettings.name = GUID.Generate().ToString();
154-
155148
AssetDatabase.AddObjectToAsset(newSettings, serializedObject.targetObject);
156149
AssetDatabase.Refresh();
157150

@@ -167,19 +160,6 @@ public void ChangeInputSettings(int atIndex, RecorderInputSetting newSettings)
167160
}
168161
}
169162

170-
protected void PrepareInitialSources()
171-
{
172-
var recSettings = (RecorderSettings)target;
173-
if (recSettings.m_SourceSettings == null || recSettings.m_SourceSettings.Length == 0)
174-
{
175-
var newSettings = recSettings.GetDefaultSourcesSettings();
176-
foreach (var newSetting in newSettings)
177-
{
178-
AddSourceSettings(newSetting);
179-
}
180-
}
181-
}
182-
183163
protected virtual void OnInputGui()
184164
{
185165
bool multiInputs = m_Inputs.arraySize > 1;
@@ -213,6 +193,7 @@ protected virtual void OnOutputGui()
213193

214194
protected virtual void OnEncodingGui()
215195
{
196+
// place holder
216197
}
217198

218199
protected virtual void OnTimeGui()
@@ -295,7 +276,6 @@ protected virtual void OnInputGroupGui()
295276
m_FoldoutInput = EditorGUILayout.Foldout(m_FoldoutInput, "Input(s)");
296277
if (m_FoldoutInput)
297278
{
298-
PrepareInitialSources();
299279
++EditorGUI.indentLevel;
300280
OnInputGui();
301281
--EditorGUI.indentLevel;

source/FrameRecorder/Core/Engine/RecorderSettings.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using UnityEditor;
45

56
namespace UnityEngine.FrameRecorder
67
{
@@ -111,6 +112,19 @@ public virtual void OnDestroy()
111112
}
112113

113114
public abstract List<RecorderInputSetting> GetDefaultSourcesSettings();
115+
116+
public T NewInputSettingsObj<T>( string title ) where T: class
117+
{
118+
return NewInputSettingsObj(typeof(T), title) as T;
119+
}
120+
121+
public virtual RecorderInputSetting NewInputSettingsObj(Type type,string title )
122+
{
123+
var obj = (RecorderInputSetting)ScriptableObject.CreateInstance(type) ;
124+
obj.m_DisplayName = title;
125+
obj.name = GUID.Generate().ToString();
126+
return obj;
127+
}
114128

115129
}
116130
}

source/FrameRecorder/Core/Engine/RecordersInventory.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,13 @@ public static RecorderSettings GenerateNewSettingsAsset(UnityEngine.Object paren
186186
settings = ScriptableObject.CreateInstance(recorderinfo.settings) as RecorderSettings;
187187
settings.name = "Frame Recorder Settings";
188188
settings.recorderType = recorderType;
189-
189+
settings.m_SourceSettings = settings.GetDefaultSourcesSettings().ToArray();
190190
AssetDatabase.AddObjectToAsset(settings, parentAsset);
191+
foreach (var obj in settings.m_SourceSettings)
192+
AssetDatabase.AddObjectToAsset(obj, parentAsset);
193+
191194
AssetDatabase.Refresh();
195+
192196
return settings;
193197
}
194198
else

source/FrameRecorder/Core/Engine/RecordingSession.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void RecordFrame()
9797
}
9898
else if (sleep < -frameLen)
9999
m_InitialFrame--;
100-
else
100+
else if(settings.m_Verbose)
101101
Debug.Log( string.Format("Recording session info => fps: {0:F1}", frameCount / elapsed ));
102102

103103
// reset every 30 frames

source/FrameRecorder/Inputs/Adam/Engine/AdamBeautyInput.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ public override void BeginRecording(RecordingSession session)
115115
m_outputWidth = Mathf.Min(16 * 1024, Mathf.RoundToInt(m_outputHeight * aspect));
116116
if (adamSettings.m_ForceEvenSize)
117117
{
118-
m_outputWidth &= ~1;
119-
m_outputHeight &= ~1;
118+
m_outputWidth = (m_outputWidth + 1) & ~1;
119+
m_outputHeight = (m_outputHeight + 1) & ~1;
120120
}
121121

122122
m_superMaterial = new Material(superShader);

source/FrameRecorder/Inputs/Adam/Engine/AdamBeautyInputSettings.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@ public class AdamBeautyInputSettings : InputSettings<AdamBeautyInput>
1313
public string m_CameraTag;
1414
public bool m_ForceEvenSize = false;
1515

16-
public AdamBeautyInputSettings()
17-
{
18-
m_DisplayName = "Pixels";
19-
}
20-
2116
public override bool isValid {
2217
get
2318
{

source/FrameRecorder/Inputs/CBRenderTexture/Engine/CBRenderTextureInput.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public override void BeginRecording(RecordingSession session)
7373
outputWidth = screenWidth;
7474
outputHeight = screenHeight;
7575

76-
if (cbSettings.m_PadSize)
76+
if (cbSettings.m_ForceEvenSize)
7777
{
7878
outputWidth = (outputWidth + 1) & ~1;
7979
outputHeight = (outputHeight + 1) & ~1;
@@ -87,7 +87,7 @@ public override void BeginRecording(RecordingSession session)
8787
outputHeight = (int)cbSettings.m_RenderSize;
8888
outputWidth = (int)(outputHeight * AspectRatioHelper.GetRealAR(cbSettings.m_RenderAspect));
8989

90-
if (cbSettings.m_PadSize)
90+
if (cbSettings.m_ForceEvenSize)
9191
{
9292
outputWidth = (outputWidth + 1) & ~1;
9393
outputHeight = (outputHeight + 1) & ~1;

source/FrameRecorder/Inputs/CBRenderTexture/Engine/CBRenderTextureInputSettings.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,9 @@ public class CBRenderTextureInputSettings : InputSettings<CBRenderTextureInput>
77
public EImageAspect m_RenderAspect = EImageAspect.x5_4;
88
public string m_CameraTag;
99
public bool m_FlipVertical = false;
10-
public bool m_PadSize = false;
10+
public bool m_ForceEvenSize = false;
1111
public bool m_AllowTransparency = false;
1212

13-
public CBRenderTextureInputSettings()
14-
{
15-
m_DisplayName = "Pixels";
16-
}
17-
1813
public override bool isValid {
1914
get { return source != EImageSource.TaggedCamera || !string.IsNullOrEmpty(m_CameraTag); }
2015
}

source/FrameRecorder/Inputs/RenderTexture/Engine/RenderTextureInputSettings.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,8 @@ public class RenderTextureInputSettings : InputSettings<RenderTextureInput>
44
{
55
public RenderTexture m_SourceRTxtr;
66

7-
public RenderTextureInputSettings()
7+
public override bool isValid
88
{
9-
m_DisplayName = "Pixels";
10-
}
11-
12-
public override bool isValid {
139
get
1410
{
1511
return m_SourceRTxtr != null;

source/FrameRecorder/Recorders/ImageRecorder/Editor/ImageRecorderEditor.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ protected override void OnEnable()
2424
if (target == null)
2525
return;
2626

27-
m_RTInputSelector = new RTInputSelector("Pixels", false);
27+
m_RTInputSelector = new RTInputSelector( target as RecorderSettings, "Pixels");
2828

2929
var pf = new PropertyFinder<ImageRecorderSettings>(serializedObject);
3030
m_Inputs = pf.Find(w => w.m_SourceSettings);
@@ -40,12 +40,7 @@ protected override void OnInputGui( int inputIndex)
4040
{
4141
var input = m_Inputs.GetArrayElementAtIndex(inputIndex).objectReferenceValue as RecorderInputSetting;
4242
if (m_RTInputSelector.OnInputGui(ref input))
43-
{
44-
if( input is CBRenderTextureInputSettings )
45-
(input as CBRenderTextureInputSettings).m_FlipVertical = true;
46-
4743
ChangeInputSettings(inputIndex, input);
48-
}
4944

5045
base.OnInputGui(inputIndex);
5146
}

source/FrameRecorder/Recorders/ImageRecorder/Engine/ImageRecorderSettings.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using UnityEngine.FrameRecorder.Input;
34

@@ -23,9 +24,10 @@ public class ImageRecorderSettings : RecorderSettings
2324

2425
public override List<RecorderInputSetting> GetDefaultSourcesSettings()
2526
{
26-
var defaultSettings = ScriptableObject.CreateInstance<CBRenderTextureInputSettings>();
27-
defaultSettings.m_FlipVertical = true;
28-
return new List<RecorderInputSetting>() { defaultSettings};
27+
return new List<RecorderInputSetting>()
28+
{
29+
NewInputSettingsObj<CBRenderTextureInputSettings>("Pixels")
30+
};
2931
}
3032

3133
public override bool isValid
@@ -35,5 +37,14 @@ public override bool isValid
3537
return base.isValid && !string.IsNullOrEmpty(m_DestinationPath.GetFullPath()) && !string.IsNullOrEmpty(m_BaseFileName.pattern);
3638
}
3739
}
40+
41+
public override RecorderInputSetting NewInputSettingsObj(Type type, string title )
42+
{
43+
var obj = base.NewInputSettingsObj(type, title);
44+
if (type == typeof(CBRenderTextureInputSettings))
45+
(obj as CBRenderTextureInputSettings).m_FlipVertical = true;
46+
47+
return obj ;
48+
}
3849
}
3950
}

0 commit comments

Comments
 (0)