public void GeneratedMethodIsIntercepted_WithCorrectBase() { _builder.OverrideMethod(typeof(SampleTarget).GetMethod("StringMethod")); Type t = _builder.BuildMixinType(_invocationHandler); using (MixinConfiguration.BuildFromActive().ForClass(typeof(SampleTarget)).Clear().AddMixins(t).EnterScope()) { SampleTarget target = ObjectFactory.Create <SampleTarget> (ParamList.Empty); string result = target.StringMethod(4); Assert.That(result, Is.EqualTo("Intercepted: SampleTarget.StringMethod (4)")); } }
public void GeneratedMethodIsIntercepted() { _builder.OverrideMethod(typeof(SampleTarget).GetMethod("StringMethod")); Type t = _builder.BuildMixinType(_invocationHandler); using (MixinConfiguration.BuildFromActive().ForClass(typeof(SampleTarget)).Clear().AddMixins(t).EnterScope()) { SampleTarget target = ObjectFactory.Create <SampleTarget> (ParamList.Empty); target.StringMethod(4); Assert.That(_calls.Count == 1, Is.True); } }
protected virtual void Awake() { SplineUser user = (SplineUser)target; if (user.user != null) { sampleTarget = SampleTarget.User; } else { sampleTarget = SampleTarget.Computer; } user.EditorAwake(); }
public void GeneratedMethodIsIntercepted_WithRightReturnValue() { _builder.OverrideMethod(typeof(SampleTarget).GetMethod("StringMethod")); Type t = _builder.BuildMixinType(_invocationHandler); using (MixinConfiguration.BuildFromActive().ForClass(typeof(SampleTarget)).Clear().AddMixins(t).EnterScope()) { SampleTarget target = ObjectFactory.Create <SampleTarget> (ParamList.Empty); target.StringMethod(4); Tuple <object, MethodInfo, object[], object> callInfo = _calls[0]; Assert.That(callInfo.Item4, Is.EqualTo("SampleTarget.StringMethod (4)")); } }
public void InterceptVoidMethod() { _builder.OverrideMethod(typeof(SampleTarget).GetMethod("VoidMethod")); Type t = _builder.BuildMixinType(_invocationHandler); using (MixinConfiguration.BuildFromActive().ForClass(typeof(SampleTarget)).Clear().AddMixins(t).EnterScope()) { SampleTarget target = ObjectFactory.Create <SampleTarget> (ParamList.Empty); target.VoidMethod(); Assert.That(target.VoidMethodCalled, Is.True); Tuple <object, MethodInfo, object[], object> callInfo = _calls[0]; Assert.That(callInfo.Item4, Is.EqualTo(null)); } }
protected virtual void HeaderGUI() { SplineUser user = (SplineUser)target; bool isTargetComputer = (user.user == null || sampleTarget == SampleTarget.Computer); if (user.computer != null && !user.computer.IsSubscribed(user)) { user.computer.Subscribe(user); } Undo.RecordObject(user, "Inspector Change"); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Spline User", EditorStyles.boldLabel, GUILayout.Width(85)); GUI.color = new Color(1f, 1f, 1f, 0.75f); sampleTarget = (SampleTarget)EditorGUILayout.EnumPopup(sampleTarget, GUILayout.Width(75)); GUI.color = Color.white; EditorGUILayout.EndHorizontal(); if (sampleTarget == SampleTarget.Computer) { user.computer = (SplineComputer)EditorGUILayout.ObjectField("Computer", user.computer, typeof(SplineComputer), true); } else { SplineUser lastUser = user.user; user.user = (SplineUser)EditorGUILayout.ObjectField("User", user.user, typeof(SplineUser), true); if (lastUser != user.user && user.rootUser == user) { user.user = null; EditorUtility.DisplayDialog("Cannot assign user.", "A SplineUser component cannot sample itself, please select another user to sample.", "OK"); } } if (user.computer == null && isTargetComputer) { EditorGUILayout.HelpBox("No SplineComputer or SplineUser is referenced. Reference a SplineComputer or another SplineUser component to make this SplineUser work.", MessageType.Error); } if (showResolution && isTargetComputer) { user.resolution = (double)EditorGUILayout.Slider("Resolution", (float)user.resolution, 0f, 1f); } if (showClip) { float clipFrom = (float)user.clipFrom; float clipTo = (float)user.clipTo; if (user.rootUser.computer != null && user.rootUser.computer.isClosed && user.loopSamples) { EditorGUILayout.BeginHorizontal(); if (EditButton(_editIndex == 0)) { if (_editIndex == 0) { _editIndex = -1; } else { _editIndex = 0; } } EditorGUILayout.BeginVertical(); user.clipFrom = EditorGUILayout.Slider("Clip From", (float)user.clipFrom, 0f, 1f); user.clipTo = EditorGUILayout.Slider("Clip To", (float)user.clipTo, 0f, 1f); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); } else { EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginHorizontal(); if (EditButton(_editIndex == 0)) { if (_editIndex == 0) { _editIndex = -1; } else { _editIndex = 0; } } EditorGUIUtility.labelWidth = 80f; EditorGUILayout.MinMaxSlider(new GUIContent("Clip Range:"), ref clipFrom, ref clipTo, 0f, 1f); EditorGUIUtility.labelWidth = 0f; EditorGUILayout.EndHorizontal(); user.clipFrom = clipFrom; user.clipTo = clipTo; EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth(30)); user.clipFrom = EditorGUILayout.FloatField((float)user.clipFrom); user.clipTo = EditorGUILayout.FloatField((float)user.clipTo); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); } SplineEditor.hold = _editIndex >= 0; if (user.rootUser.computer != null && user.rootUser.computer.isClosed) { user.loopSamples = EditorGUILayout.Toggle("Loop Samples", user.loopSamples); } } settings = EditorGUILayout.Foldout(settings, "Settings"); if (settings) { EditorGUI.indentLevel++; if (showUpdateMethod && isTargetComputer) { user.updateMethod = (SplineUser.UpdateMethod)EditorGUILayout.EnumPopup("Update Method", user.updateMethod); } if (showUniform && (user.user == null || sampleTarget == SampleTarget.Computer)) { user.uniformSample = EditorGUILayout.Toggle("Unform samples", user.uniformSample); if (user.uniformSample) { user.uniformPreserveClipRange = EditorGUILayout.Toggle("Preserve clip range", user.uniformPreserveClipRange); } } user.autoUpdate = EditorGUILayout.Toggle("Runtime Auto Update", user.autoUpdate); if (showMultithreading) { user.multithreaded = EditorGUILayout.Toggle("Multithreading", user.multithreaded); } user.buildOnAwake = EditorGUILayout.Toggle("Build on Awake", user.buildOnAwake); user.buildOnEnable = EditorGUILayout.Toggle("Build on Enable", user.buildOnEnable); EditorGUI.indentLevel--; } if (user.computer != null && user.computer.nodeLinks.Length > 0 && isTargetComputer) { if (GUILayout.Button("Edit junction path")) { pathWindow = EditorWindow.GetWindow <PathWindow>(); pathWindow.Init(this); } } }
public __Mixins(SampleTarget host) { CopaceticSoftware_pMixins_VSPackage_Tests_IntegrationTests_DummyMixin = global::CopaceticSoftware.pMixins.Infrastructure.MixinActivatorFactory.GetCurrentActivator().CreateInstance <__pMixinAutoGenerated.CopaceticSoftware_pMixins_VSPackage_Tests_IntegrationTests_DummyMixin.DummyMixinMasterWrapper> ((global::pMixin.AutoGenerated.CopaceticSoftware.pMixins.VSPackage.Tests.IntegrationTests.SampleTarget.CopaceticSoftware.pMixins.VSPackage.Tests.IntegrationTests.DummyMixin.IDummyMixinRequirements)host); }
public virtual void BaseGUI() { if (initGUI) { SplineEditorGUI.Initialize(); initGUI = false; } base.OnInspectorGUI(); SplineUser user = (SplineUser)target; bool isTargetComputer = (user.user == null || sampleTarget == SampleTarget.Computer); if (user.computer != null && !user.computer.IsSubscribed(user)) { user.computer.Subscribe(user); } Undo.RecordObject(user, "Inspector Change"); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Spline User", EditorStyles.boldLabel, GUILayout.Width(85)); GUI.color = new Color(1f, 1f, 1f, 0.75f); sampleTarget = (SampleTarget)EditorGUILayout.EnumPopup(sampleTarget, GUILayout.Width(75)); GUI.color = Color.white; EditorGUILayout.EndHorizontal(); if (sampleTarget == SampleTarget.Computer) { user.computer = (SplineComputer)EditorGUILayout.ObjectField("Computer", user.computer, typeof(SplineComputer), true); } else { SplineUser lastUser = user.user; user.user = (SplineUser)EditorGUILayout.ObjectField("User", user.user, typeof(SplineUser), true); if (lastUser != user.user && user.rootUser == user) { user.user = null; EditorUtility.DisplayDialog("Cannot assign user.", "A SplineUser component cannot sample itself, please select another user to sample.", "OK"); } } if (showUpdateMethod && isTargetComputer) { user.updateMethod = (SplineUser.UpdateMethod)EditorGUILayout.EnumPopup("Update Method", user.updateMethod); } if (user.computer == null && isTargetComputer) { EditorGUILayout.HelpBox("No SplineComputer or SplineUser is referenced. Reference a SplineComputer or another SplineUser component to make this SplineUser work.", MessageType.Error); } if (showResolution && isTargetComputer) { user.resolution = (double)EditorGUILayout.Slider("Resolution", (float)user.resolution, 0f, 1f); } if (showClip) { EditorGUILayout.BeginHorizontal(); float clipFrom = (float)user.clipFrom; float clipTo = (float)user.clipTo; EditorGUILayout.MinMaxSlider(new GUIContent("Clip Range:"), ref clipFrom, ref clipTo, 0f, 1f); user.clipFrom = clipFrom; user.clipTo = clipTo; EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth(30)); user.clipFrom = EditorGUILayout.FloatField((float)user.clipFrom); user.clipTo = EditorGUILayout.FloatField((float)user.clipTo); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal(); } if (showAveraging && (user.user == null || sampleTarget == SampleTarget.Computer)) { user.averageResultVectors = EditorGUILayout.Toggle("Average Result Vectors", user.averageResultVectors); } if (showMultithreading) { user.multithreaded = EditorGUILayout.Toggle("Multithreading", user.multithreaded); } user.buildOnAwake = EditorGUILayout.Toggle("Build on Awake", user.buildOnAwake); if (user.computer != null && user.computer.nodeLinks.Length > 0 && isTargetComputer) { if (GUILayout.Button("Edit junction path")) { pathWindow = EditorWindow.GetWindow <PathWindow>(); pathWindow.init(this, "Junction Path", new Vector2(300, 150)); } } }