-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #138 from StartAutomating/obs-powershell-updates
obs-powershell 0.1.9
- Loading branch information
Showing
63 changed files
with
1,869 additions
and
90 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
function Set-OBS3DFilter | ||
{ | ||
<# | ||
.SYNOPSIS | ||
Sets an OBS 3D Filter. | ||
.DESCRIPTION | ||
Adds or Changes a 3D Filter on an OBS Input. | ||
This requires the [3D Effect](https://github.com/exeldro/obs-3d-effect). | ||
#> | ||
[inherit(Command={ | ||
Import-Module ..\..\obs-powershell.psd1 -Global | ||
"Add-OBSSourceFilter" | ||
}, Dynamic, Abstract, ExcludeParameter='FilterKind','FilterSettings')] | ||
[Alias('Add-OBS3DFilter')] | ||
param( | ||
# The Field of View | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("fov")] | ||
[double] | ||
$FieldOfView, | ||
|
||
# The Rotation along the X-axis | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("rot_x")] | ||
[double] | ||
$RotationX, | ||
|
||
# The Rotation along the Y-axis | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("rot_y")] | ||
[double] | ||
$RotationY, | ||
|
||
# The Rotation along the Z-axis | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("rot_z")] | ||
[double] | ||
$RotationZ, | ||
|
||
# The Position along the X-axis | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("pos_x")] | ||
[double] | ||
$PositionX, | ||
|
||
# The Position along the Y-axis | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("pos_y")] | ||
[double] | ||
$PositionY, | ||
|
||
# The Position along the Z-axis | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("pos_z")] | ||
[double] | ||
$PositionZ, | ||
|
||
# The scale of the source along the X-axis | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("scale_x")] | ||
[double] | ||
$ScaleX, | ||
|
||
# The scale of the source along the Y-axis | ||
[Parameter(ValueFromPipelineByPropertyName)] | ||
[ComponentModel.DefaultBindingProperty("scale_y")] | ||
[double] | ||
$ScaleY, | ||
|
||
# If set, will remove a filter if one already exists. | ||
# If this is not provided and the filter already exists, the settings of the filter will be changed. | ||
[switch] | ||
$Force | ||
) | ||
|
||
process { | ||
$myParameters = [Ordered]@{} + $PSBoundParameters | ||
|
||
if (-not $myParameters["FilterName"]) { | ||
$filterName = $myParameters["FilterName"] = "3Band3D" | ||
} | ||
|
||
$myParameterData = [Ordered]@{} | ||
foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { | ||
|
||
$bindToPropertyName = $null | ||
|
||
foreach ($attribute in $parameter.Attributes) { | ||
if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { | ||
$bindToPropertyName = $attribute.Name | ||
break | ||
} | ||
} | ||
|
||
if (-not $bindToPropertyName) { continue } | ||
if ($myParameters.Contains($parameter.Name)) { | ||
$myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] | ||
if ($myParameters[$parameter.Name] -is [switch]) { | ||
$myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] | ||
} | ||
} | ||
} | ||
|
||
$addSplat = @{ | ||
filterName = $myParameters["FilterName"] | ||
SourceName = $myParameters["SourceName"] | ||
filterKind = "3d_effect_filter" | ||
filterSettings = $myParameterData | ||
NoResponse = $myParameters["NoResponse"] | ||
} | ||
|
||
if ($MyParameters["PassThru"]) { | ||
$addSplat.Passthru = $MyParameters["PassThru"] | ||
if ($MyInvocation.InvocationName -like 'Add-*') { | ||
Add-OBSSourceFilter @addSplat | ||
} else { | ||
$addSplat.Remove('FilterKind') | ||
Set-OBSSourceFilterSettings @addSplat | ||
} | ||
return | ||
} | ||
|
||
# Add the input. | ||
$outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 | ||
|
||
|
||
# If we got back an error | ||
if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { | ||
# and that error was saying the source already exists, | ||
if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { | ||
# then check if we use the -Force. | ||
if ($Force) { # If we do, remove the input | ||
Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName | ||
# and re-add our result. | ||
$outputAddedResult = Add-OBSInput @addSplat *>&1 | ||
} else { | ||
# Otherwise, get the existing filter. | ||
$existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName | ||
# then apply the settings | ||
$existingFilter.Set($addSplat.filterSettings) | ||
# and output them | ||
$existingFilter | ||
# (don't forget to null the result, so we don't show this error) | ||
$outputAddedResult = $null | ||
} | ||
} | ||
|
||
# If the output was still an error | ||
if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { | ||
# use $psCmdlet.WriteError so that it shows the error correctly. | ||
$psCmdlet.WriteError($outputAddedResult) | ||
} | ||
|
||
} | ||
# Otherwise, if we had a result | ||
elseif ($outputAddedResult) { | ||
# Otherwise, get the input from the filters. | ||
Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName | ||
|
||
} | ||
} | ||
} |
Oops, something went wrong.