From a35efe29c9a4d04411ebc8f188068cc8b10c22b1 Mon Sep 17 00:00:00 2001 From: monsieurgustav Date: Thu, 7 Apr 2016 20:10:24 +0200 Subject: [PATCH] add the example Project "OscDemo" --- Examples/OscDemo/Config/DefaultEditor.ini | 5 + Examples/OscDemo/Config/DefaultEngine.ini | 12 + Examples/OscDemo/Config/DefaultGame.ini | 2 + .../Content/LocationReceiver_Component.uasset | Bin 0 -> 27517 bytes .../OscDemo/Content/LocationSender.uasset | Bin 0 -> 27603 bytes Examples/OscDemo/Content/Map.umap | Bin 0 -> 640561 bytes Examples/OscDemo/OscDemo.uproject | 13 + Examples/OscDemo/Plugins/OSC/OSC.uplugin | 25 + .../OscDemo/Plugins/OSC/Resources/Icon128.png | Bin 0 -> 16284 bytes .../Plugins/OSC/Source/OSC/OSC.Build.cs | 53 + .../OSC/Private/Common/OscDataElemStruct.h | 196 ++++ .../Source/OSC/Private/Common/OscDataStruct.h | 31 + .../OSC/Private/Common/OscFunctionLibrary.cpp | 285 ++++++ .../OSC/Private/Common/OscFunctionLibrary.h | 112 +++ .../OSC/Private/Common/OscMessageStruct.h | 17 + .../Private/Common/oscpack/osc/OscException.h | 62 ++ .../Common/oscpack/osc/OscHostEndianness.h | 127 +++ .../oscpack/osc/OscOutboundPacketStream.cpp | 735 ++++++++++++++ .../oscpack/osc/OscOutboundPacketStream.h | 130 +++ .../oscpack/osc/OscReceivedElements.cpp | 903 ++++++++++++++++++ .../Common/oscpack/osc/OscReceivedElements.h | 581 +++++++++++ .../Private/Common/oscpack/osc/OscTypes.cpp | 103 ++ .../OSC/Private/Common/oscpack/osc/OscTypes.h | 282 ++++++ .../Plugins/OSC/Source/OSC/Private/Osc.h | 19 + .../OSC/Source/OSC/Private/OscModule.cpp | 146 +++ .../OSC/Source/OSC/Private/OscPrivatePCH.h | 22 + .../OSC/Source/OSC/Private/OscSettings.cpp | 176 ++++ .../OSC/Source/OSC/Private/OscSettings.h | 74 ++ .../OSC/Private/Receive/OscDispatcher.cpp | 237 +++++ .../OSC/Private/Receive/OscDispatcher.h | 57 ++ .../OSC/Private/Receive/OscReceiverActor.cpp | 35 + .../OSC/Private/Receive/OscReceiverActor.h | 44 + .../Private/Receive/OscReceiverComponent.cpp | 60 ++ .../Private/Receive/OscReceiverComponent.h | 50 + .../Private/Receive/OscReceiverInputKey.cpp | 62 ++ .../OSC/Private/Receive/OscReceiverInputKey.h | 33 + .../Private/Receive/OscReceiverInterface.h | 33 + Examples/OscDemo/Source/OscDemo.Target.cs | 25 + .../OscDemo/Source/OscDemo/OscDemo.Build.cs | 26 + Examples/OscDemo/Source/OscDemo/OscDemo.cpp | 5 + Examples/OscDemo/Source/OscDemo/OscDemo.h | 6 + .../Source/OscDemo/OscDemoGameMode.cpp | 8 + .../OscDemo/Source/OscDemo/OscDemoGameMode.h | 19 + .../OscDemo/Source/OscDemoEditor.Target.cs | 25 + 44 files changed, 4836 insertions(+) create mode 100644 Examples/OscDemo/Config/DefaultEditor.ini create mode 100644 Examples/OscDemo/Config/DefaultEngine.ini create mode 100644 Examples/OscDemo/Config/DefaultGame.ini create mode 100644 Examples/OscDemo/Content/LocationReceiver_Component.uasset create mode 100644 Examples/OscDemo/Content/LocationSender.uasset create mode 100644 Examples/OscDemo/Content/Map.umap create mode 100644 Examples/OscDemo/OscDemo.uproject create mode 100644 Examples/OscDemo/Plugins/OSC/OSC.uplugin create mode 100644 Examples/OscDemo/Plugins/OSC/Resources/Icon128.png create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/OSC.Build.cs create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscDataElemStruct.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscDataStruct.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscFunctionLibrary.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscFunctionLibrary.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscMessageStruct.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscException.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscHostEndianness.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscOutboundPacketStream.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscOutboundPacketStream.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscReceivedElements.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscReceivedElements.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscTypes.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscTypes.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Osc.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscModule.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscPrivatePCH.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscSettings.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscSettings.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscDispatcher.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscDispatcher.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverActor.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverActor.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverComponent.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverComponent.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInputKey.cpp create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInputKey.h create mode 100644 Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInterface.h create mode 100644 Examples/OscDemo/Source/OscDemo.Target.cs create mode 100644 Examples/OscDemo/Source/OscDemo/OscDemo.Build.cs create mode 100644 Examples/OscDemo/Source/OscDemo/OscDemo.cpp create mode 100644 Examples/OscDemo/Source/OscDemo/OscDemo.h create mode 100644 Examples/OscDemo/Source/OscDemo/OscDemoGameMode.cpp create mode 100644 Examples/OscDemo/Source/OscDemo/OscDemoGameMode.h create mode 100644 Examples/OscDemo/Source/OscDemoEditor.Target.cs diff --git a/Examples/OscDemo/Config/DefaultEditor.ini b/Examples/OscDemo/Config/DefaultEditor.ini new file mode 100644 index 0000000..6838df0 --- /dev/null +++ b/Examples/OscDemo/Config/DefaultEditor.ini @@ -0,0 +1,5 @@ +[EditoronlyBP] +bAllowClassAndBlueprintPinMatching=true +bReplaceBlueprintWithClass=true +bDontLoadBlueprintOutsideEditor=true +bBlueprintIsNotBlueprintType=true diff --git a/Examples/OscDemo/Config/DefaultEngine.ini b/Examples/OscDemo/Config/DefaultEngine.ini new file mode 100644 index 0000000..ae03fb4 --- /dev/null +++ b/Examples/OscDemo/Config/DefaultEngine.ini @@ -0,0 +1,12 @@ +[URL] + +[/Script/HardwareTargeting.HardwareTargetingSettings] +TargetedHardwareClass=Desktop +AppliedTargetedHardwareClass=Desktop +DefaultGraphicsPerformance=Maximum +AppliedDefaultGraphicsPerformance=Maximum + +[/Script/EngineSettings.GameMapsSettings] +EditorStartupMap=/Game/Map.Map +GameDefaultMap=/Game/Map.Map + diff --git a/Examples/OscDemo/Config/DefaultGame.ini b/Examples/OscDemo/Config/DefaultGame.ini new file mode 100644 index 0000000..c14e6ae --- /dev/null +++ b/Examples/OscDemo/Config/DefaultGame.ini @@ -0,0 +1,2 @@ +[/Script/EngineSettings.GeneralProjectSettings] +ProjectID=316644CF469FFDAC26DC92ADB05D7359 diff --git a/Examples/OscDemo/Content/LocationReceiver_Component.uasset b/Examples/OscDemo/Content/LocationReceiver_Component.uasset new file mode 100644 index 0000000000000000000000000000000000000000..cb36424e74a18c8895f0d69035ffc70876d62238 GIT binary patch literal 27517 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 literal 0 HcmV?d00001 diff --git a/Examples/OscDemo/Content/LocationSender.uasset b/Examples/OscDemo/Content/LocationSender.uasset new file mode 100644 index 0000000000000000000000000000000000000000..76490c786d2d9fefa1bd3330491631489811f62e GIT binary patch literal 27603 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 literal 0 HcmV?d00001 diff --git a/Examples/OscDemo/Content/Map.umap b/Examples/OscDemo/Content/Map.umap new file mode 100644 index 0000000000000000000000000000000000000000..8e55679667b2d3f14b72db0e0cc169aef427f051 GIT binary patch literal 640561 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

    ;T-49|O66 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ÐN+!6a~`@vsYdZ^XS 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 + check(value == AsFloatValue()); + } + + double AsFloatValue() const + { + check(IsFloat()); + return *reinterpret_cast(&Data); + } + + bool IsFloat() const + { + return Type == FLOAT; + } + + //------------------------------------------------------------------------- + + void SetInt(int64 value) + { + static_assert(sizeof(value) <= sizeof(Data), "Too short to hold the integer value."); + Type = INT; + Data = value; + check(value == AsIntValue()); + } + + int64 AsIntValue() const + { + check(IsInt()); + return Data; + } + + bool IsInt() const + { + return Type == INT; + } + + //------------------------------------------------------------------------- + + void SetBool(bool value) + { + static_assert(sizeof(value) <= sizeof(Data), "Too short to hold the bool value."); + Type = BOOL; + Data = value; + check(value == AsBoolValue()); + } + + bool AsBoolValue() const + { + check(IsBool()); + return Data != 0; + } + + bool IsBool() const + { + return Type == BOOL; + } + + //------------------------------------------------------------------------- + + void SetString(FName value) + { + static_assert(sizeof(FMinimalName) <= sizeof(Data), "Too short to hold the string value."); + const auto mininal = NameToMinimalName(value); + Data = *reinterpret_cast(&mininal); + Type = STRING; + check(value == AsStringValue()); + } + + FName AsStringValue() const + { + check(IsString()); + return MinimalNameToName(*reinterpret_cast(&Data)); + } + + bool IsString() const + { + return Type == STRING; + } + + //------------------------------------------------------------------------- + + /// Cast the value to T. + template + T GetValue() const + { + static const bool isNumber = (std::is_integral::value || std::is_floating_point::value); + if(IsFloat()) + { + if(isNumber) + { + const auto value = AsFloatValue(); + return Cast::eval(value); + } + } + else if(IsInt()) + { + if(isNumber) + { + const auto value = AsIntValue(); + return Cast::eval(value); + } + } + else if(IsBool()) + { + if(isNumber) + { + const auto value = AsBoolValue(); + return Cast::eval(value); + } + } + else if(IsString()) + { + const bool isString = std::is_same::value; + if(isString) + { + const auto value = AsStringValue(); + return Cast::eval(value); + } + } + return T(); + } + +private: + template + struct Cast + { + template + static T eval(const U &) + { + return T(); + } + }; +}; + + +template +struct FOscDataElemStruct::Cast +{ + static T eval(double value) + { + if(std::is_integral::value) + { + value += 0.4999999; + } + return static_cast(value); + } + + template + static T eval(const U & value) + { + return static_cast(value); + } +}; + +template <> +struct FOscDataElemStruct::Cast +{ + template + static bool eval(const U & value) + { + return value != 0; + } +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscDataStruct.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscDataStruct.h new file mode 100644 index 0000000..5ce5ec4 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscDataStruct.h @@ -0,0 +1,31 @@ +#pragma once + +#include "OscDataElemStruct.h" +#include "OscDataStruct.generated.h" + + +USTRUCT() +struct FOscDataStruct +{ + GENERATED_USTRUCT_BODY() + + UPROPERTY() + int32 Index; + + UPROPERTY() + TArray Queue; + + FOscDataStruct() : Index(0) + { } + + FOscDataElemStruct Pop() + { + const auto idx = std::max(Index, 0); + if(idx < Queue.Num()) + { + ++Index; + return Queue[idx]; + } + return FOscDataElemStruct(); + } +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscFunctionLibrary.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscFunctionLibrary.cpp new file mode 100644 index 0000000..2778e48 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscFunctionLibrary.cpp @@ -0,0 +1,285 @@ +#include "OscPrivatePCH.h" +#include "OscSettings.h" +#include "OscFunctionLibrary.h" +#include "oscpack/osc/OscOutboundPacketStream.h" + + +template +static inline +void PopValueImpl(const TArray & input, TArray & output, T & Value) +{ + if(input.Num() > 0) + { + output.Reserve(input.Num() - 1); + for(int32 i=1, n=input.Num(); i!=n; ++i) + { + output.Add(input[i]); + } + Value = input[0].GetValue(); + } + else + { + output.Empty(); + Value = FOscDataElemStruct().GetValue(); + } +} + +void UOscFunctionLibrary::PopBool(const TArray & input, TArray & output, bool & Value) +{ + PopValueImpl(input, output, Value); +} + +void UOscFunctionLibrary::PopFloat(const TArray & input, TArray & output, float & Value) +{ + PopValueImpl(input, output, Value); +} + +void UOscFunctionLibrary::PopInt(const TArray & input, TArray & output, int32 & Value) +{ + PopValueImpl(input, output, Value); +} + +void UOscFunctionLibrary::PopString(const TArray & input, TArray & output, FName & Value) +{ + PopValueImpl(input, output, Value); +} + + +void UOscFunctionLibrary::PushBool(const TArray & input, bool Value, TArray & output) +{ + output = input; + FOscDataElemStruct elem; + elem.SetBool(Value); + output.Add(elem); +} + +void UOscFunctionLibrary::PushFloat(const TArray & input, float Value, TArray & output) +{ + output = input; + FOscDataElemStruct elem; + elem.SetFloat(Value); + output.Add(elem); +} + +void UOscFunctionLibrary::PushInt(const TArray & input, int32 Value, TArray & output) +{ + output = input; + FOscDataElemStruct elem; + elem.SetInt(Value); + output.Add(elem); +} + +void UOscFunctionLibrary::PushString(const TArray & input, FName Value, TArray & output) +{ + if(Value.GetDisplayNameEntry()->IsWide()) + { + const auto tmp = Value.GetPlainNameString(); + UE_LOG(LogOSC, Error, TEXT("Invalid string argument \"%s\": ASCII only"), *tmp); + return; + } + + output = input; + FOscDataElemStruct elem; + elem.SetString(Value); + output.Add(elem); +} + + +bool UOscFunctionLibrary::AsBool(const FOscDataElemStruct & input) +{ + return input.GetValue(); +} + +float UOscFunctionLibrary::AsFloat(const FOscDataElemStruct & input) +{ + return input.GetValue(); +} + +int32 UOscFunctionLibrary::AsInt(const FOscDataElemStruct & input) +{ + return input.GetValue(); +} + +FName UOscFunctionLibrary::AsString(const FOscDataElemStruct & input) +{ + return input.GetValue(); +} + + +FOscDataElemStruct UOscFunctionLibrary::FromBool(bool input) +{ + FOscDataElemStruct result; + result.SetBool(input); + return result; +} + +FOscDataElemStruct UOscFunctionLibrary::FromFloat(float input) +{ + FOscDataElemStruct result; + result.SetFloat(input); + return result; +} + +FOscDataElemStruct UOscFunctionLibrary::FromInt(int32 input) +{ + FOscDataElemStruct result; + result.SetInt(input); + return result; +} + +FOscDataElemStruct UOscFunctionLibrary::FromString(FName input) +{ + FOscDataElemStruct result; + result.SetString(input); + return result; +} + + +namespace +{ + bool isValidAddress(const FName & Address) + { + if(!Address.IsValid()) + { + UE_LOG(LogOSC, Error, TEXT("Empty OSC address")); + return false; + } + + if(Address.GetDisplayNameEntry()->IsWide()) + { + const auto tmp = Address.GetPlainNameString(); + UE_LOG(LogOSC, Error, TEXT("Invalid OSC address \"%s\": ASCII only"), *tmp); + return false; + } + + if(Address.GetPlainANSIString()[0] != '/') + { + const auto tmp = Address.GetPlainNameString(); + UE_LOG(LogOSC, Error, TEXT("Invalid OSC address \"%s\": must start with '/'"), *tmp); + return false; + } + + return true; + } + + void appendMessage(osc::OutboundPacketStream & output, FName Address, const TArray & Data) + { + output << osc::BeginMessage(Address.GetPlainANSIString()); + if(output.State() != osc::SUCCESS) + { + return; + } + + for(const auto & elem : Data) + { + if(elem.IsFloat()) + { + output << (float)elem.AsFloatValue(); + } + else if(elem.IsInt()) + { + output << (int32)elem.AsIntValue(); + } + else if(elem.IsBool()) + { + output << elem.AsBoolValue(); + } + else if(elem.IsString()) + { + output << elem.AsStringValue().GetPlainANSIString(); + } + + if(output.State() != osc::SUCCESS) + { + return; + } + } + output << osc::EndMessage; + } + + TArray GlobalBuffer(TArray(), 1024); +} + +void UOscFunctionLibrary::SendOsc(FName Address, const TArray & Data, int32 TargetIndex) +{ + if(!isValidAddress(Address)) + { + return; + } + + static_assert(sizeof(uint8) == sizeof(char), "Cannot cast uint8 to char"); + + osc::OutboundPacketStream output((char *)GlobalBuffer.GetData(), GlobalBuffer.Max()); + check(reinterpret_cast(GlobalBuffer.GetData()) == reinterpret_cast(output.Data())); + + appendMessage(output, Address, Data); + + if(output.State() == osc::OUT_OF_BUFFER_MEMORY_ERROR) + { + GlobalBuffer.Reserve(GlobalBuffer.Max() * 2); // not enough memory: double the size + SendOsc(Address, Data, TargetIndex); // try again + return; + } + + if(output.State() == osc::SUCCESS) + { + GetMutableDefault()->Send(GlobalBuffer.GetData(), output.Size(), TargetIndex); + } + else + { + UE_LOG(LogOSC, Error, TEXT("OSC Send Message Error: %s"), osc::errorString(output.State())); + } +} + +void UOscFunctionLibrary::SendOscBundle(const TArray & Messages, int32 TargetIndex) +{ + static_assert(sizeof(uint8) == sizeof(char), "Cannot cast uint8 to char"); + + osc::OutboundPacketStream output((char *)GlobalBuffer.GetData(), GlobalBuffer.Max()); + check(reinterpret_cast(GlobalBuffer.GetData()) == reinterpret_cast(output.Data())); + + output << osc::BeginBundle(); + for(const auto & message : Messages) + { + if(!isValidAddress(message.Address)) + { + return; + } + + appendMessage(output, message.Address, message.Data); + + if(output.State() == osc::OUT_OF_BUFFER_MEMORY_ERROR) + { + GlobalBuffer.Reserve(GlobalBuffer.Max() * 2); // not enough memory: double the size + SendOscBundle(Messages, TargetIndex); // try again + return; + } + if(output.State() != osc::SUCCESS) + { + UE_LOG(LogOSC, Error, TEXT("OSC Send Bundle Error: %s"), osc::errorString(output.State())); + return; + } + } + output << osc::EndBundle; + + if(output.State() == osc::OUT_OF_BUFFER_MEMORY_ERROR) + { + GlobalBuffer.Reserve(GlobalBuffer.Max() * 2); // not enough memory: double the size + SendOscBundle(Messages, TargetIndex); // try again + return; + } + + if(output.State() == osc::SUCCESS) + { + GetMutableDefault()->Send(GlobalBuffer.GetData(), output.Size(), TargetIndex); + } + else + { + UE_LOG(LogOSC, Error, TEXT("OSC Send Bundle Error: %s"), osc::errorString(output.State())); + } +} + +int32 UOscFunctionLibrary::AddSendOscTarget(FString IpPort) +{ + return GetMutableDefault()->GetOrAddSendTarget(IpPort); +} diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscFunctionLibrary.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscFunctionLibrary.h new file mode 100644 index 0000000..d2b1c59 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscFunctionLibrary.h @@ -0,0 +1,112 @@ +#pragma once + +#include "OscDataElemStruct.h" +#include "OscMessageStruct.h" +#include "OscFunctionLibrary.generated.h" + + +UCLASS() +class UOscFunctionLibrary : public UBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + + /// Get the next value from an OSC message as a boolean. + UFUNCTION(BlueprintPure, Category=OSC) + static void PopBool(const TArray & input, TArray & output, bool & Value); + + /// Get the next value from an OSC message as a floating point. + UFUNCTION(BlueprintPure, Category=OSC) + static void PopFloat(const TArray & input, TArray & output, float & Value); + + /// Get the next value from an OSC message as a integer. + UFUNCTION(BlueprintPure, Category=OSC) + static void PopInt(const TArray & input, TArray & output, int32 & Value); + + /// Get the next value from an OSC message as a string. + UFUNCTION(BlueprintPure, Category=OSC) + static void PopString(const TArray & input, TArray & output, FName & Value); + + + /// Add a boolean value to an OSC message. + UFUNCTION(BlueprintPure, Category=OSC, meta=(AutoCreateRefTerm = "input")) + static void PushBool(const TArray & input, bool Value, TArray & output); + + /// Add a floating point value to an OSC message. + UFUNCTION(BlueprintPure, Category=OSC, meta=(AutoCreateRefTerm = "input")) + static void PushFloat(const TArray & input, float Value, TArray & output); + + /// Add a integer value to an OSC message. + UFUNCTION(BlueprintPure, Category=OSC, meta=(AutoCreateRefTerm = "input")) + static void PushInt(const TArray & input, int32 Value, TArray & output); + + /// Add a string value to an OSC message. + UFUNCTION(BlueprintPure, Category=OSC, meta=(AutoCreateRefTerm = "input")) + static void PushString(const TArray & input, FName Value, TArray & output); + + + /// Interpret an OSC argument as a boolean + UFUNCTION(BlueprintPure, Category=OSC) + static bool AsBool(const FOscDataElemStruct & input); + + /// Interpret an OSC argument as a floating point. + UFUNCTION(BlueprintPure, Category=OSC) + static float AsFloat(const FOscDataElemStruct & input); + + /// Interpret an OSC argument as a integer. + UFUNCTION(BlueprintPure, Category=OSC) + static int32 AsInt(const FOscDataElemStruct & input); + + /// Interpret an OSC argument as a string. + UFUNCTION(BlueprintPure, Category=OSC) + static FName AsString(const FOscDataElemStruct & input); + + + /// Create an OSC argument from a boolean + UFUNCTION(BlueprintPure, Category=OSC) + static FOscDataElemStruct FromBool(bool input); + + /// Create an OSC argument from a floating point. + UFUNCTION(BlueprintPure, Category=OSC) + static FOscDataElemStruct FromFloat(float input); + + /// Create an OSC argument from a integer. + UFUNCTION(BlueprintPure, Category=OSC) + static FOscDataElemStruct FromInt(int32 input); + + /// Create an OSC argument from a string. + UFUNCTION(BlueprintPure, Category=OSC) + static FOscDataElemStruct FromString(FName input); + + + /** + * @brief Send an OSC message. + * @param Address OSC address. + * @param Data result of successive PushFloat/Int/String/etc. + * @param TargetIndex index of the destination, -1 for all destinations. (SendTarget list of the plugin settings) + */ + UFUNCTION(BlueprintCallable, Category=OSC, meta=(AutoCreateRefTerm = "Data")) + static void SendOsc(FName Address, const TArray & Data, int32 TargetIndex); + + /** + * @brief Send several OSC messages in an OSC bundle. + * @param Messages of the bundle. + * @param TargetIndex index of the destination, -1 for all destinations. (SendTarget list of the plugin settings) + */ + UFUNCTION(BlueprintCallable, Category=OSC) + static void SendOscBundle(const TArray & Messages, int32 TargetIndex); + + /** + * @brief Add Ip:Port to the available OSC send targets. + * @param IpPort "ip:port". e.g. "192.168.0.1:7777" + * @return The created TargetIndex to pass to the SendOsc function. + * + * Use this function to add target at runtime. Generally, it is best + * to define your targets in the OSC plugin settings. + * + * @see SendOsc + */ + UFUNCTION(BlueprintCallable, Category=OSC) + static int32 AddSendOscTarget(FString IpPort); +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscMessageStruct.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscMessageStruct.h new file mode 100644 index 0000000..b4e6dd7 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/OscMessageStruct.h @@ -0,0 +1,17 @@ +#pragma once + +#include "OscDataElemStruct.h" +#include "OscMessageStruct.generated.h" + + +USTRUCT(BlueprintType) +struct FOscMessageStruct +{ + GENERATED_USTRUCT_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FName Address; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TArray Data; +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscException.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscException.h new file mode 100644 index 0000000..e9be222 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscException.h @@ -0,0 +1,62 @@ +/* + oscpack -- Open Sound Control (OSC) packet manipulation library + http://www.rossbencina.com/code/oscpack + + Copyright (c) 2004-2013 Ross Bencina + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + The text above constitutes the entire oscpack license; however, + the oscpack developer(s) also make the following non-binding requests: + + Any person wishing to distribute modifications to the Software is + requested to send the modifications to the original developer so that + they can be incorporated into the canonical version. It is also + requested that these non-binding requests be included whenever the + above license is reproduced. +*/ +#ifndef INCLUDED_OSCPACK_OSCEXCEPTION_H +#define INCLUDED_OSCPACK_OSCEXCEPTION_H + +#include + +namespace osc{ + +class Exception : public std::exception { + const char *what_; + +public: + Exception() throw() {} + Exception( const Exception& src ) throw() + : std::exception( src ) + , what_( src.what_ ) {} + Exception( const char *w ) throw() + : what_( w ) {} + Exception& operator=( const Exception& src ) throw() + { what_ = src.what_; return *this; } + virtual ~Exception() throw() {} + virtual const char* what() const throw() { return what_; } +}; + +} // namespace osc + +#endif /* INCLUDED_OSCPACK_OSCEXCEPTION_H */ diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscHostEndianness.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscHostEndianness.h new file mode 100644 index 0000000..a396c5a --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscHostEndianness.h @@ -0,0 +1,127 @@ +/* + oscpack -- Open Sound Control (OSC) packet manipulation library + http://www.rossbencina.com/code/oscpack + + Copyright (c) 2004-2013 Ross Bencina + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + The text above constitutes the entire oscpack license; however, + the oscpack developer(s) also make the following non-binding requests: + + Any person wishing to distribute modifications to the Software is + requested to send the modifications to the original developer so that + they can be incorporated into the canonical version. It is also + requested that these non-binding requests be included whenever the + above license is reproduced. +*/ +#ifndef INCLUDED_OSCPACK_OSCHOSTENDIANNESS_H +#define INCLUDED_OSCPACK_OSCHOSTENDIANNESS_H + +/* + Make sure either OSC_HOST_LITTLE_ENDIAN or OSC_HOST_BIG_ENDIAN is defined + + We try to use preprocessor symbols to deduce the host endianness. + + Alternatively you can define one of the above symbols from the command line. + Usually you do this with the -D flag to the compiler. e.g.: + + $ g++ -DOSC_HOST_LITTLE_ENDIAN ... +*/ + +#if defined(OSC_HOST_LITTLE_ENDIAN) || defined(OSC_HOST_BIG_ENDIAN) + +// endianness defined on the command line. nothing to do here. + +#elif defined(__WIN32__) || defined(WIN32) || defined(WINCE) + +// assume that __WIN32__ is only defined on little endian systems + +#define OSC_HOST_LITTLE_ENDIAN 1 +#undef OSC_HOST_BIG_ENDIAN + +#elif defined(__APPLE__) + +#if defined(__LITTLE_ENDIAN__) + +#define OSC_HOST_LITTLE_ENDIAN 1 +#undef OSC_HOST_BIG_ENDIAN + +#elif defined(__BIG_ENDIAN__) + +#define OSC_HOST_BIG_ENDIAN 1 +#undef OSC_HOST_LITTLE_ENDIAN + +#endif + +#elif defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) + +// should cover gcc and clang + +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) + +#define OSC_HOST_LITTLE_ENDIAN 1 +#undef OSC_HOST_BIG_ENDIAN + +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) + +#define OSC_HOST_BIG_ENDIAN 1 +#undef OSC_HOST_LITTLE_ENDIAN + +#endif + +#else + +// gcc defines __LITTLE_ENDIAN__ and __BIG_ENDIAN__ +// for others used here see http://sourceforge.net/p/predef/wiki/Endianness/ +#if (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) \ + || (defined(__ARMEL__) && !defined(__ARMEB__)) \ + || (defined(__AARCH64EL__) && !defined(__AARCH64EB__)) \ + || (defined(_MIPSEL) && !defined(_MIPSEB)) \ + || (defined(__MIPSEL) && !defined(__MIPSEB)) \ + || (defined(__MIPSEL__) && !defined(__MIPSEB__)) + +#define OSC_HOST_LITTLE_ENDIAN 1 +#undef OSC_HOST_BIG_ENDIAN + +#elif (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) \ + || (defined(__ARMEB__) && !defined(__ARMEL__)) \ + || (defined(__AARCH64EB__) && !defined(__AARCH64EL__)) \ + || (defined(_MIPSEB) && !defined(_MIPSEL)) \ + || (defined(__MIPSEB) && !defined(__MIPSEL)) \ + || (defined(__MIPSEB__) && !defined(__MIPSEL__)) + +#define OSC_HOST_BIG_ENDIAN 1 +#undef OSC_HOST_LITTLE_ENDIAN + +#endif + +#endif + +#if !defined(OSC_HOST_LITTLE_ENDIAN) && !defined(OSC_HOST_BIG_ENDIAN) + +#error please edit OSCHostEndianness.h or define one of {OSC_HOST_LITTLE_ENDIAN, OSC_HOST_BIG_ENDIAN} to configure endianness + +#endif + +#endif /* INCLUDED_OSCPACK_OSCHOSTENDIANNESS_H */ + diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscOutboundPacketStream.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscOutboundPacketStream.cpp new file mode 100644 index 0000000..2a908d4 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscOutboundPacketStream.cpp @@ -0,0 +1,735 @@ +/* + oscpack -- Open Sound Control (OSC) packet manipulation library + http://www.rossbencina.com/code/oscpack + + Copyright (c) 2004-2013 Ross Bencina + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + The text above constitutes the entire oscpack license; however, + the oscpack developer(s) also make the following non-binding requests: + + Any person wishing to distribute modifications to the Software is + requested to send the modifications to the original developer so that + they can be incorporated into the canonical version. It is also + requested that these non-binding requests be included whenever the + above license is reproduced. +*/ + +#include "OscPrivatePCH.h" + +#include "OscOutboundPacketStream.h" + +#if defined(__WIN32__) || defined(WIN32) || defined(_WIN32) +#include // for alloca +#else +//#include // alloca on Linux (also OSX) +#include // alloca on OSX and FreeBSD (and Linux?) +#endif + +#include +#include // memcpy, memmove, strcpy, strlen +#include // ptrdiff_t + +#include "OscHostEndianness.h" + +#if defined(__BORLANDC__) // workaround for BCB4 release build intrinsics bug +namespace std { +using ::__strcpy__; // avoid error: E2316 '__strcpy__' is not a member of 'std'. +} +#endif + +namespace osc{ + +static void FromInt32( char *p, int32 x ) +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::int32 i; + char c[4]; + } u; + + u.i = x; + + p[3] = u.c[0]; + p[2] = u.c[1]; + p[1] = u.c[2]; + p[0] = u.c[3]; +#else + *reinterpret_cast(p) = x; +#endif +} + + +static void FromUInt32( char *p, uint32 x ) +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::uint32 i; + char c[4]; + } u; + + u.i = x; + + p[3] = u.c[0]; + p[2] = u.c[1]; + p[1] = u.c[2]; + p[0] = u.c[3]; +#else + *reinterpret_cast(p) = x; +#endif +} + + +static void FromInt64( char *p, int64 x ) +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::int64 i; + char c[8]; + } u; + + u.i = x; + + p[7] = u.c[0]; + p[6] = u.c[1]; + p[5] = u.c[2]; + p[4] = u.c[3]; + p[3] = u.c[4]; + p[2] = u.c[5]; + p[1] = u.c[6]; + p[0] = u.c[7]; +#else + *reinterpret_cast(p) = x; +#endif +} + + +static void FromUInt64( char *p, uint64 x ) +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::uint64 i; + char c[8]; + } u; + + u.i = x; + + p[7] = u.c[0]; + p[6] = u.c[1]; + p[5] = u.c[2]; + p[4] = u.c[3]; + p[3] = u.c[4]; + p[2] = u.c[5]; + p[1] = u.c[6]; + p[0] = u.c[7]; +#else + *reinterpret_cast(p) = x; +#endif +} + + +// round up to the next highest multiple of 4. unless x is already a multiple of 4 +static inline std::size_t RoundUp4( std::size_t x ) +{ + return (x + 3) & ~((std::size_t)0x03); +} + + +OutboundPacketStream::OutboundPacketStream( char *buffer, std::size_t capacity ) + : data_( buffer ) + , end_( data_ + capacity ) + , typeTagsCurrent_( end_ ) + , messageCursor_( data_ ) + , argumentCurrent_( data_ ) + , elementSizePtr_( 0 ) + , messageIsInProgress_( false ) + , state_( SUCCESS ) +{ + // sanity check integer types declared in OscTypes.h + // you'll need to fix OscTypes.h if any of these asserts fail + assert( sizeof(osc::int32) == 4 ); + assert( sizeof(osc::uint32) == 4 ); + assert( sizeof(osc::int64) == 8 ); + assert( sizeof(osc::uint64) == 8 ); +} + + +OutboundPacketStream::~OutboundPacketStream() +{ + +} + + +char *OutboundPacketStream::BeginElement( char *beginPtr ) +{ + if( elementSizePtr_ == 0 ){ + + elementSizePtr_ = reinterpret_cast(data_); + + return beginPtr; + + }else{ + // store an offset to the old element size ptr in the element size slot + // we store an offset rather than the actual pointer to be 64 bit clean. + *reinterpret_cast(beginPtr) = + (uint32)(reinterpret_cast(elementSizePtr_) - data_); + + elementSizePtr_ = reinterpret_cast(beginPtr); + + return beginPtr + 4; + } +} + + +void OutboundPacketStream::EndElement( char *endPtr ) +{ + assert( elementSizePtr_ != 0 ); + + if( elementSizePtr_ == reinterpret_cast(data_) ){ + + elementSizePtr_ = 0; + + }else{ + // while building an element, an offset to the containing element's + // size slot is stored in the elements size slot (or a ptr to data_ + // if there is no containing element). We retrieve that here + uint32 *previousElementSizePtr = + reinterpret_cast(data_ + *elementSizePtr_); + + // then we store the element size in the slot. note that the element + // size does not include the size slot, hence the - 4 below. + + std::ptrdiff_t d = endPtr - reinterpret_cast(elementSizePtr_); + // assert( d >= 4 && d <= 0x7FFFFFFF ); // assume packets smaller than 2Gb + + uint32 elementSize = static_cast(d - 4); + FromUInt32( reinterpret_cast(elementSizePtr_), elementSize ); + + // finally, we reset the element size ptr to the containing element + elementSizePtr_ = previousElementSizePtr; + } +} + + +bool OutboundPacketStream::ElementSizeSlotRequired() const +{ + return (elementSizePtr_ != 0); +} + + +Errors OutboundPacketStream::CheckForAvailableBundleSpace() +{ + std::size_t required = Size() + ((ElementSizeSlotRequired())?4:0) + 16; + return (required > Capacity()) ? OUT_OF_BUFFER_MEMORY_ERROR : SUCCESS; +} + + +Errors OutboundPacketStream::CheckForAvailableMessageSpace( const char *addressPattern ) +{ + // plus 4 for at least four bytes of type tag + std::size_t required = Size() + ((ElementSizeSlotRequired())?4:0) + + RoundUp4(std::strlen(addressPattern) + 1) + 4; + + return (required > Capacity()) ? OUT_OF_BUFFER_MEMORY_ERROR : SUCCESS; +} + + +Errors OutboundPacketStream::CheckForAvailableArgumentSpace( std::size_t argumentLength ) +{ + // plus three for extra type tag, comma and null terminator + std::size_t required = (argumentCurrent_ - data_) + argumentLength + + RoundUp4( (end_ - typeTagsCurrent_) + 3 ); + + return (required > Capacity()) ? OUT_OF_BUFFER_MEMORY_ERROR : SUCCESS; +} + + +void OutboundPacketStream::Clear() +{ + typeTagsCurrent_ = end_; + messageCursor_ = data_; + argumentCurrent_ = data_; + elementSizePtr_ = 0; + messageIsInProgress_ = false; + state_ = SUCCESS; +} + + +std::size_t OutboundPacketStream::Capacity() const +{ + return end_ - data_; +} + + +std::size_t OutboundPacketStream::Size() const +{ + std::size_t result = argumentCurrent_ - data_; + if( IsMessageInProgress() ){ + // account for the length of the type tag string. the total type tag + // includes an initial comma, plus at least one terminating \0 + result += RoundUp4( (end_ - typeTagsCurrent_) + 2 ); + } + + return result; +} + + +const char *OutboundPacketStream::Data() const +{ + return data_; +} + + +bool OutboundPacketStream::IsReady() const +{ + return (!IsMessageInProgress() && !IsBundleInProgress()); +} + + +bool OutboundPacketStream::IsMessageInProgress() const +{ + return messageIsInProgress_; +} + + +bool OutboundPacketStream::IsBundleInProgress() const +{ + return (elementSizePtr_ != 0); +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const BundleInitiator& rhs ) +{ + check( !IsMessageInProgress() ) + check( state_ == SUCCESS ) + state_ = CheckForAvailableBundleSpace(); + if(state_ == SUCCESS) + { + messageCursor_ = BeginElement( messageCursor_ ); + + std::memcpy( messageCursor_, "#bundle\0", 8 ); + FromUInt64( messageCursor_ + 8, rhs.timeTag ); + + messageCursor_ += 16; + argumentCurrent_ = messageCursor_; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const BundleTerminator& rhs ) +{ + (void) rhs; + + check( IsBundleInProgress() ) + check( !IsMessageInProgress() ) + check( state_ == SUCCESS ) + + EndElement( messageCursor_ ); + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const BeginMessage& rhs ) +{ + check( !IsMessageInProgress() ) + check( state_ == SUCCESS ) + + state_ = CheckForAvailableMessageSpace( rhs.addressPattern ); + + if(state_ == SUCCESS) + { + messageCursor_ = BeginElement( messageCursor_ ); + + std::strcpy( messageCursor_, rhs.addressPattern ); + std::size_t rhsLength = std::strlen(rhs.addressPattern); + messageCursor_ += rhsLength + 1; + + // zero pad to 4-byte boundary + std::size_t i = rhsLength + 1; + while( i & 0x3 ){ + *messageCursor_++ = '\0'; + ++i; + } + + argumentCurrent_ = messageCursor_; + typeTagsCurrent_ = end_; + + messageIsInProgress_ = true; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const MessageTerminator& rhs ) +{ + (void) rhs; + + check( IsMessageInProgress() ) + check( state_ == SUCCESS ) + + std::size_t typeTagsCount = end_ - typeTagsCurrent_; + + if( typeTagsCount ){ + + char *tempTypeTags = (char*)alloca(typeTagsCount); + std::memcpy( tempTypeTags, typeTagsCurrent_, typeTagsCount ); + + // slot size includes comma and null terminator + std::size_t typeTagSlotSize = RoundUp4( typeTagsCount + 2 ); + + std::size_t argumentsSize = argumentCurrent_ - messageCursor_; + + std::memmove( messageCursor_ + typeTagSlotSize, messageCursor_, argumentsSize ); + + messageCursor_[0] = ','; + // copy type tags in reverse (really forward) order + for( std::size_t i=0; i < typeTagsCount; ++i ) + messageCursor_[i+1] = tempTypeTags[ (typeTagsCount-1) - i ]; + + char *p = messageCursor_ + 1 + typeTagsCount; + for( std::size_t i=0; i < (typeTagSlotSize - (typeTagsCount + 1)); ++i ) + *p++ = '\0'; + + typeTagsCurrent_ = end_; + + // advance messageCursor_ for next message + messageCursor_ += typeTagSlotSize + argumentsSize; + + }else{ + // send an empty type tags string + std::memcpy( messageCursor_, ",\0\0\0", 4 ); + + // advance messageCursor_ for next message + messageCursor_ += 4; + } + + argumentCurrent_ = messageCursor_; + + EndElement( messageCursor_ ); + + messageIsInProgress_ = false; + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( bool rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(0); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = (char)((rhs) ? TRUE_TYPE_TAG : FALSE_TYPE_TAG); + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const NilType& rhs ) +{ + (void) rhs; + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(0); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = NIL_TYPE_TAG; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const InfinitumType& rhs ) +{ + (void) rhs; + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(0); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = INFINITUM_TYPE_TAG; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( int32 rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(4); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = INT32_TYPE_TAG; + FromInt32( argumentCurrent_, rhs ); + argumentCurrent_ += 4; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( float rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(4); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = FLOAT_TYPE_TAG; + +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + float f; + char c[4]; + } u; + + u.f = rhs; + + argumentCurrent_[3] = u.c[0]; + argumentCurrent_[2] = u.c[1]; + argumentCurrent_[1] = u.c[2]; + argumentCurrent_[0] = u.c[3]; +#else + *reinterpret_cast(argumentCurrent_) = rhs; +#endif + + argumentCurrent_ += 4; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( char rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(4); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = CHAR_TYPE_TAG; + FromInt32( argumentCurrent_, rhs ); + argumentCurrent_ += 4; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const RgbaColor& rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(4); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = RGBA_COLOR_TYPE_TAG; + FromUInt32( argumentCurrent_, rhs ); + argumentCurrent_ += 4; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const MidiMessage& rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(4); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = MIDI_MESSAGE_TYPE_TAG; + FromUInt32( argumentCurrent_, rhs ); + argumentCurrent_ += 4; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( int64 rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(8); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = INT64_TYPE_TAG; + FromInt64( argumentCurrent_, rhs ); + argumentCurrent_ += 8; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const TimeTag& rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(8); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = TIME_TAG_TYPE_TAG; + FromUInt64( argumentCurrent_, rhs ); + argumentCurrent_ += 8; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( double rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(8); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = DOUBLE_TYPE_TAG; + +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + double f; + char c[8]; + } u; + + u.f = rhs; + + argumentCurrent_[7] = u.c[0]; + argumentCurrent_[6] = u.c[1]; + argumentCurrent_[5] = u.c[2]; + argumentCurrent_[4] = u.c[3]; + argumentCurrent_[3] = u.c[4]; + argumentCurrent_[2] = u.c[5]; + argumentCurrent_[1] = u.c[6]; + argumentCurrent_[0] = u.c[7]; +#else + *reinterpret_cast(argumentCurrent_) = rhs; +#endif + + argumentCurrent_ += 8; + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const char *rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace( RoundUp4(std::strlen(rhs) + 1) ); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = STRING_TYPE_TAG; + std::strcpy( argumentCurrent_, rhs ); + std::size_t rhsLength = std::strlen(rhs); + argumentCurrent_ += rhsLength + 1; + + // zero pad to 4-byte boundary + std::size_t i = rhsLength + 1; + while( i & 0x3 ){ + *argumentCurrent_++ = '\0'; + ++i; + } + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const Symbol& rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace( RoundUp4(std::strlen(rhs) + 1) ); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = SYMBOL_TYPE_TAG; + std::strcpy( argumentCurrent_, rhs ); + std::size_t rhsLength = std::strlen(rhs); + argumentCurrent_ += rhsLength + 1; + + // zero pad to 4-byte boundary + std::size_t i = rhsLength + 1; + while( i & 0x3 ){ + *argumentCurrent_++ = '\0'; + ++i; + } + } + + return *this; +} + + +OutboundPacketStream& OutboundPacketStream::operator<<( const Blob& rhs ) +{ + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace( 4 + RoundUp4(rhs.size) ); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = BLOB_TYPE_TAG; + FromUInt32( argumentCurrent_, rhs.size ); + argumentCurrent_ += 4; + + std::memcpy( argumentCurrent_, rhs.data, rhs.size ); + argumentCurrent_ += rhs.size; + + // zero pad to 4-byte boundary + unsigned long i = rhs.size; + while( i & 0x3 ){ + *argumentCurrent_++ = '\0'; + ++i; + } + } + + return *this; +} + +OutboundPacketStream& OutboundPacketStream::operator<<( const ArrayInitiator& rhs ) +{ + (void) rhs; + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(0); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = ARRAY_BEGIN_TYPE_TAG; + } + + return *this; +} + +OutboundPacketStream& OutboundPacketStream::operator<<( const ArrayTerminator& rhs ) +{ + (void) rhs; + check( state_ == SUCCESS ) + state_ = CheckForAvailableArgumentSpace(0); + if(state_ == SUCCESS) + { + *(--typeTagsCurrent_) = ARRAY_END_TYPE_TAG; + } + + return *this; +} + +} // namespace osc + + diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscOutboundPacketStream.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscOutboundPacketStream.h new file mode 100644 index 0000000..26eb58d --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscOutboundPacketStream.h @@ -0,0 +1,130 @@ +/* + oscpack -- Open Sound Control (OSC) packet manipulation library + http://www.rossbencina.com/code/oscpack + + Copyright (c) 2004-2013 Ross Bencina + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + The text above constitutes the entire oscpack license; however, + the oscpack developer(s) also make the following non-binding requests: + + Any person wishing to distribute modifications to the Software is + requested to send the modifications to the original developer so that + they can be incorporated into the canonical version. It is also + requested that these non-binding requests be included whenever the + above license is reproduced. +*/ +#ifndef INCLUDED_OSCPACK_OSCOUTBOUNDPACKETSTREAM_H +#define INCLUDED_OSCPACK_OSCOUTBOUNDPACKETSTREAM_H + +#include // size_t + +#include "OscTypes.h" + + +namespace osc{ + + +class OutboundPacketStream{ +public: + OutboundPacketStream( char *buffer, std::size_t capacity ); + ~OutboundPacketStream(); + + Errors State() const { return state_; } + + void Clear(); + + std::size_t Capacity() const; + + // invariant: size() is valid even while building a message. + std::size_t Size() const; + + const char *Data() const; + + // indicates that all messages have been closed with a matching EndMessage + // and all bundles have been closed with a matching EndBundle + bool IsReady() const; + + bool IsMessageInProgress() const; + bool IsBundleInProgress() const; + + OutboundPacketStream& operator<<( const BundleInitiator& rhs ); + OutboundPacketStream& operator<<( const BundleTerminator& rhs ); + + OutboundPacketStream& operator<<( const BeginMessage& rhs ); + OutboundPacketStream& operator<<( const MessageTerminator& rhs ); + + OutboundPacketStream& operator<<( bool rhs ); + OutboundPacketStream& operator<<( const NilType& rhs ); + OutboundPacketStream& operator<<( const InfinitumType& rhs ); + OutboundPacketStream& operator<<( int32 rhs ); + +#if !(defined(__x86_64__) || defined(_M_X64)) + OutboundPacketStream& operator<<( int rhs ) + { *this << (int32)rhs; return *this; } +#endif + + OutboundPacketStream& operator<<( float rhs ); + OutboundPacketStream& operator<<( char rhs ); + OutboundPacketStream& operator<<( const RgbaColor& rhs ); + OutboundPacketStream& operator<<( const MidiMessage& rhs ); + OutboundPacketStream& operator<<( int64 rhs ); + OutboundPacketStream& operator<<( const TimeTag& rhs ); + OutboundPacketStream& operator<<( double rhs ); + OutboundPacketStream& operator<<( const char* rhs ); + OutboundPacketStream& operator<<( const Symbol& rhs ); + OutboundPacketStream& operator<<( const Blob& rhs ); + + OutboundPacketStream& operator<<( const ArrayInitiator& rhs ); + OutboundPacketStream& operator<<( const ArrayTerminator& rhs ); + +private: + + char *BeginElement( char *beginPtr ); + void EndElement( char *endPtr ); + + bool ElementSizeSlotRequired() const; + Errors CheckForAvailableBundleSpace(); + Errors CheckForAvailableMessageSpace( const char *addressPattern ); + Errors CheckForAvailableArgumentSpace( std::size_t argumentLength ); + + char *data_; + char *end_; + + char *typeTagsCurrent_; // stored in reverse order + char *messageCursor_; + char *argumentCurrent_; + + // elementSizePtr_ has two special values: 0 indicates that a bundle + // isn't open, and elementSizePtr_==data_ indicates that a bundle is + // open but that it doesn't have a size slot (ie the outermost bundle) + uint32 *elementSizePtr_; + + bool messageIsInProgress_; + + Errors state_; +}; + +} // namespace osc + +#endif /* INCLUDED_OSCPACK_OSCOUTBOUNDPACKETSTREAM_H */ diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscReceivedElements.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscReceivedElements.cpp new file mode 100644 index 0000000..c9d895b --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscReceivedElements.cpp @@ -0,0 +1,903 @@ +/* + oscpack -- Open Sound Control (OSC) packet manipulation library + http://www.rossbencina.com/code/oscpack + + Copyright (c) 2004-2013 Ross Bencina + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + The text above constitutes the entire oscpack license; however, + the oscpack developer(s) also make the following non-binding requests: + + Any person wishing to distribute modifications to the Software is + requested to send the modifications to the original developer so that + they can be incorporated into the canonical version. It is also + requested that these non-binding requests be included whenever the + above license is reproduced. +*/ + +#include "OscPrivatePCH.h" + +#include "OscReceivedElements.h" + +#include "OscHostEndianness.h" + +#include // ptrdiff_t + +namespace osc{ + + +// return the first 4 byte boundary after the end of a str4 +// be careful about calling this version if you don't know whether +// the string is terminated correctly. +static inline const char* FindStr4End( const char *p ) +{ + if( p[0] == '\0' ) // special case for SuperCollider integer address pattern + return p + 4; + + p += 3; + + while( *p ) + p += 4; + + return p + 1; +} + + +// return the first 4 byte boundary after the end of a str4 +// returns 0 if p == end or if the string is unterminated +static inline const char* FindStr4End( const char *p, const char *end ) +{ + if( p >= end ) + return 0; + + if( p[0] == '\0' ) // special case for SuperCollider integer address pattern + return p + 4; + + p += 3; + end -= 1; + + while( p < end && *p ) + p += 4; + + if( *p ) + return 0; + else + return p + 1; +} + + +// round up to the next highest multiple of 4. unless x is already a multiple of 4 +static inline uint32 RoundUp4( uint32 x ) +{ + return (x + 3) & ~((uint32)0x03); +} + + +static inline int32 ToInt32( const char *p ) +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::int32 i; + char c[4]; + } u; + + u.c[0] = p[3]; + u.c[1] = p[2]; + u.c[2] = p[1]; + u.c[3] = p[0]; + + return u.i; +#else + return *(int32*)p; +#endif +} + + +static inline uint32 ToUInt32( const char *p ) +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::uint32 i; + char c[4]; + } u; + + u.c[0] = p[3]; + u.c[1] = p[2]; + u.c[2] = p[1]; + u.c[3] = p[0]; + + return u.i; +#else + return *(uint32*)p; +#endif +} + + +static inline int64 ToInt64( const char *p ) +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::int64 i; + char c[8]; + } u; + + u.c[0] = p[7]; + u.c[1] = p[6]; + u.c[2] = p[5]; + u.c[3] = p[4]; + u.c[4] = p[3]; + u.c[5] = p[2]; + u.c[6] = p[1]; + u.c[7] = p[0]; + + return u.i; +#else + return *(int64*)p; +#endif +} + + +static inline uint64 ToUInt64( const char *p ) +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::uint64 i; + char c[8]; + } u; + + u.c[0] = p[7]; + u.c[1] = p[6]; + u.c[2] = p[5]; + u.c[3] = p[4]; + u.c[4] = p[3]; + u.c[5] = p[2]; + u.c[6] = p[1]; + u.c[7] = p[0]; + + return u.i; +#else + return *(uint64*)p; +#endif +} + +//------------------------------------------------------------------------------ + +bool ReceivedPacket::IsBundle() const +{ + return (Size() > 0 && Contents()[0] == '#'); +} + +//------------------------------------------------------------------------------ + +bool ReceivedBundleElement::IsBundle() const +{ + return (Size() > 0 && Contents()[0] == '#'); +} + + +osc_bundle_element_size_t ReceivedBundleElement::Size() const +{ + return ToInt32( sizePtr_ ); +} + +//------------------------------------------------------------------------------ + +bool ReceivedMessageArgument::AsBool(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == TRUE_TYPE_TAG ) + return true; + else if( *typeTagPtr_ == FALSE_TYPE_TAG ) + return false; + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return false; +} + + +bool ReceivedMessageArgument::AsBoolUnchecked(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == TRUE_TYPE_TAG ) + return true; + else + return false; + return false; +} + + +int32 ReceivedMessageArgument::AsInt32(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == INT32_TYPE_TAG ) + return AsInt32Unchecked(); + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return 0; +} + + +int32 ReceivedMessageArgument::AsInt32Unchecked() const +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + osc::int32 i; + char c[4]; + } u; + + u.c[0] = argumentPtr_[3]; + u.c[1] = argumentPtr_[2]; + u.c[2] = argumentPtr_[1]; + u.c[3] = argumentPtr_[0]; + + return u.i; +#else + return *(int32*)argument_; +#endif +} + + +float ReceivedMessageArgument::AsFloat(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == FLOAT_TYPE_TAG ) + return AsFloatUnchecked(); + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return 0.f; +} + + +float ReceivedMessageArgument::AsFloatUnchecked() const +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + float f; + char c[4]; + } u; + + u.c[0] = argumentPtr_[3]; + u.c[1] = argumentPtr_[2]; + u.c[2] = argumentPtr_[1]; + u.c[3] = argumentPtr_[0]; + + return u.f; +#else + return *(float*)argument_; +#endif +} + + +char ReceivedMessageArgument::AsChar(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == CHAR_TYPE_TAG ) + return AsCharUnchecked(); + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return '\0'; +} + + +char ReceivedMessageArgument::AsCharUnchecked() const +{ + return (char)ToInt32( argumentPtr_ ); +} + + +uint32 ReceivedMessageArgument::AsRgbaColor(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == RGBA_COLOR_TYPE_TAG ) + return AsRgbaColorUnchecked(); + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return 0u; +} + + +uint32 ReceivedMessageArgument::AsRgbaColorUnchecked() const +{ + return ToUInt32( argumentPtr_ ); +} + + +uint32 ReceivedMessageArgument::AsMidiMessage(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == MIDI_MESSAGE_TYPE_TAG ) + return AsMidiMessageUnchecked(); + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return 0u; +} + + +uint32 ReceivedMessageArgument::AsMidiMessageUnchecked() const +{ + return ToUInt32( argumentPtr_ ); +} + + +int64 ReceivedMessageArgument::AsInt64(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == INT64_TYPE_TAG ) + return AsInt64Unchecked(); + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return 0LL; +} + + +int64 ReceivedMessageArgument::AsInt64Unchecked() const +{ + return ToInt64( argumentPtr_ ); +} + + +uint64 ReceivedMessageArgument::AsTimeTag(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == TIME_TAG_TYPE_TAG ) + return AsTimeTagUnchecked(); + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return 0ULL; +} + + +uint64 ReceivedMessageArgument::AsTimeTagUnchecked() const +{ + return ToUInt64( argumentPtr_ ); +} + + +double ReceivedMessageArgument::AsDouble(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == DOUBLE_TYPE_TAG ) + return AsDoubleUnchecked(); + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return 0.; +} + + +double ReceivedMessageArgument::AsDoubleUnchecked() const +{ +#ifdef OSC_HOST_LITTLE_ENDIAN + union{ + double d; + char c[8]; + } u; + + u.c[0] = argumentPtr_[7]; + u.c[1] = argumentPtr_[6]; + u.c[2] = argumentPtr_[5]; + u.c[3] = argumentPtr_[4]; + u.c[4] = argumentPtr_[3]; + u.c[5] = argumentPtr_[2]; + u.c[6] = argumentPtr_[1]; + u.c[7] = argumentPtr_[0]; + + return u.d; +#else + return *(double*)argument_; +#endif +} + + +const char* ReceivedMessageArgument::AsString(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == STRING_TYPE_TAG ) + return argumentPtr_; + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return ""; +} + + +const char* ReceivedMessageArgument::AsSymbol(Errors & state) const +{ + state = SUCCESS; + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == SYMBOL_TYPE_TAG ) + return argumentPtr_; + else + state = WRONG_ARGUMENT_TYPE_ERROR; + return ""; +} + + +void ReceivedMessageArgument::AsBlob( const void*& data, osc_bundle_element_size_t& size, Errors & state ) const +{ + if( !typeTagPtr_ ) + state = MISSING_ARGUMENT_ERROR; + else if( *typeTagPtr_ == BLOB_TYPE_TAG ) + AsBlobUnchecked( data, size, state ); + else + state = WRONG_ARGUMENT_TYPE_ERROR; +} + + +void ReceivedMessageArgument::AsBlobUnchecked( const void*& data, osc_bundle_element_size_t& size, Errors & state ) const +{ + // read blob size as an unsigned int then validate + osc_bundle_element_size_t sizeResult = (osc_bundle_element_size_t)ToUInt32( argumentPtr_ ); + if( !IsValidElementSizeValue(sizeResult) ) + { + state = MALFORMED_MESSAGE_INVALID_BLOB_SIZE_ERROR; + } + else + { + state = SUCCESS; + size = sizeResult; + data = (void*)(argumentPtr_+ osc::OSC_SIZEOF_INT32); + } +} + +std::size_t ReceivedMessageArgument::ComputeArrayItemCount(Errors & state) const +{ + // it is only valid to call ComputeArrayItemCount when the argument is the array start marker + if( !IsArrayBegin() ) + { + state = WRONG_ARGUMENT_TYPE_ERROR; + return 0; + } + + state = SUCCESS; + + std::size_t result = 0; + unsigned int level = 0; + const char *typeTag = typeTagPtr_ + 1; + + // iterate through all type tags. note that ReceivedMessage::Init + // has already checked that the message is well formed. + while( *typeTag ) { + switch( *typeTag++ ) { + case ARRAY_BEGIN_TYPE_TAG: + level += 1; + break; + + case ARRAY_END_TYPE_TAG: + if(level == 0) + return result; + level -= 1; + break; + + default: + if( level == 0 ) // only count items at level 0 + ++result; + } + } + + return result; +} + +//------------------------------------------------------------------------------ + +void ReceivedMessageArgumentIterator::Advance() +{ + if( !value_.typeTagPtr_ ) + return; + + switch( *value_.typeTagPtr_++ ){ + case '\0': + // don't advance past end + --value_.typeTagPtr_; + break; + + case TRUE_TYPE_TAG: + case FALSE_TYPE_TAG: + case NIL_TYPE_TAG: + case INFINITUM_TYPE_TAG: + + // zero length + break; + + case INT32_TYPE_TAG: + case FLOAT_TYPE_TAG: + case CHAR_TYPE_TAG: + case RGBA_COLOR_TYPE_TAG: + case MIDI_MESSAGE_TYPE_TAG: + + value_.argumentPtr_ += 4; + break; + + case INT64_TYPE_TAG: + case TIME_TAG_TYPE_TAG: + case DOUBLE_TYPE_TAG: + + value_.argumentPtr_ += 8; + break; + + case STRING_TYPE_TAG: + case SYMBOL_TYPE_TAG: + + // we use the unsafe function FindStr4End(char*) here because all of + // the arguments have already been validated in + // ReceivedMessage::Init() below. + + value_.argumentPtr_ = FindStr4End( value_.argumentPtr_ ); + break; + + case BLOB_TYPE_TAG: + { + // treat blob size as an unsigned int for the purposes of this calculation + uint32 blobSize = ToUInt32( value_.argumentPtr_ ); + value_.argumentPtr_ = value_.argumentPtr_ + osc::OSC_SIZEOF_INT32 + RoundUp4( blobSize ); + } + break; + + case ARRAY_BEGIN_TYPE_TAG: + case ARRAY_END_TYPE_TAG: + + // [ Indicates the beginning of an array. The tags following are for + // data in the Array until a close brace tag is reached. + // ] Indicates the end of an array. + + // zero length, don't advance argument ptr + break; + + default: // unknown type tag + // don't advance + --value_.typeTagPtr_; + break; + } +} + +//------------------------------------------------------------------------------ + +ReceivedMessage::ReceivedMessage( const ReceivedPacket& packet ) + : addressPattern_( packet.Contents() ) + , state_( SUCCESS ) +{ + Init( packet.Contents(), packet.Size() ); +} + + +ReceivedMessage::ReceivedMessage( const ReceivedBundleElement& bundleElement ) + : addressPattern_( bundleElement.Contents() ) + , state_( SUCCESS ) +{ + Init( bundleElement.Contents(), bundleElement.Size() ); +} + + +bool ReceivedMessage::AddressPatternIsUInt32() const +{ + return (addressPattern_[0] == '\0'); +} + + +uint32 ReceivedMessage::AddressPatternAsUInt32() const +{ + return ToUInt32( addressPattern_ ); +} + + +void ReceivedMessage::Init( const char *message, osc_bundle_element_size_t size ) +{ + if( !IsValidElementSizeValue(size) ) + { + state_ = MALFORMED_MESSAGE_INVALID_SIZE_ERROR; + return; + } + + if( size == 0 ) + { + state_ = MALFORMED_MESSAGE_ZERO_SIZE_ERROR; + return; + } + + if( !IsMultipleOf4(size) ) + { + state_ = MALFORMED_MESSAGE_NOT_MULTIPLE_OF_4_ERROR; + return; + } + + const char *end = message + size; + + typeTagsBegin_ = FindStr4End( addressPattern_, end ); + if( typeTagsBegin_ == 0 ){ + // address pattern was not terminated before end + state_ = MALFORMED_MESSAGE_UNTERMINATED_ADDRESS_PATTERN_ERROR; + return; + } + + if( typeTagsBegin_ == end ){ + // message consists of only the address pattern - no arguments or type tags. + typeTagsBegin_ = 0; + typeTagsEnd_ = 0; + arguments_ = 0; + + }else{ + if( *typeTagsBegin_ != ',' ) + { + state_ = MALFORMED_MESSAGE_NO_TYPE_TAGS_ERROR; + return; + } + + if( *(typeTagsBegin_ + 1) == '\0' ){ + // zero length type tags + typeTagsBegin_ = 0; + typeTagsEnd_ = 0; + arguments_ = 0; + + }else{ + // check that all arguments are present and well formed + + arguments_ = FindStr4End( typeTagsBegin_, end ); + if( arguments_ == 0 ) + { + state_ = MALFORMED_MESSAGE_UNTERMINATED_TYPE_TAGS_ERROR; + return; + } + + ++typeTagsBegin_; // advance past initial ',' + + const char *typeTag = typeTagsBegin_; + const char *argument = arguments_; + unsigned int arrayLevel = 0; + + do{ + switch( *typeTag ){ + case TRUE_TYPE_TAG: + case FALSE_TYPE_TAG: + case NIL_TYPE_TAG: + case INFINITUM_TYPE_TAG: + // zero length + break; + + // [ Indicates the beginning of an array. The tags following are for + // data in the Array until a close brace tag is reached. + // ] Indicates the end of an array. + case ARRAY_BEGIN_TYPE_TAG: + ++arrayLevel; + // (zero length argument data) + break; + + case ARRAY_END_TYPE_TAG: + --arrayLevel; + // (zero length argument data) + break; + + case INT32_TYPE_TAG: + case FLOAT_TYPE_TAG: + case CHAR_TYPE_TAG: + case RGBA_COLOR_TYPE_TAG: + case MIDI_MESSAGE_TYPE_TAG: + + if( argument == end ) + { + state_ = MALFORMED_MESSAGE_ARGUMENT_EXCEED_MSG_SIZE_ERROR; + return; + } + argument += 4; + if( argument > end ) + { + state_ = MALFORMED_MESSAGE_ARGUMENT_EXCEED_MSG_SIZE_ERROR; + return; + } + break; + + case INT64_TYPE_TAG: + case TIME_TAG_TYPE_TAG: + case DOUBLE_TYPE_TAG: + + if( argument == end ) + { + state_ = MALFORMED_MESSAGE_ARGUMENT_EXCEED_MSG_SIZE_ERROR; + return; + } + argument += 8; + if( argument > end ) + { + state_ = MALFORMED_MESSAGE_ARGUMENT_EXCEED_MSG_SIZE_ERROR; + return; + } + break; + + case STRING_TYPE_TAG: + case SYMBOL_TYPE_TAG: + + if( argument == end ) + { + state_ = MALFORMED_MESSAGE_ARGUMENT_EXCEED_MSG_SIZE_ERROR; + return; + } + argument = FindStr4End( argument, end ); + if( argument == 0 ) + { + state_ = MALFORMED_MESSAGE_UNTERMINATED_STRING_ERROR; + return; + } + break; + + case BLOB_TYPE_TAG: + { + if( argument + osc::OSC_SIZEOF_INT32 > end ) + { + state_ = MALFORMED_MESSAGE_ARGUMENT_EXCEED_MSG_SIZE_ERROR; + return; + } + + // treat blob size as an unsigned int for the purposes of this calculation + uint32 blobSize = ToUInt32( argument ); + argument = argument + osc::OSC_SIZEOF_INT32 + RoundUp4( blobSize ); + if( argument > end ) + { + state_ = MALFORMED_MESSAGE_ARGUMENT_EXCEED_MSG_SIZE_ERROR; + return; + } + } + break; + + default: + state_ = MALFORMED_MESSAGE_UNKNOWN_TYPE_TAG_ERROR; + return; + } + + }while( *++typeTag != '\0' ); + typeTagsEnd_ = typeTag; + + if( arrayLevel != 0 ) + { + state_ = MALFORMED_MESSAGE_UNTERMINATED_ARRAY_ERROR; + return; + } + } + + // These invariants should be guaranteed by the above code. + // we depend on them in the implementation of ArgumentCount() +#ifndef NDEBUG + std::ptrdiff_t argumentCount = typeTagsEnd_ - typeTagsBegin_; + assert( argumentCount >= 0 ); + assert( argumentCount <= OSC_INT32_MAX ); +#endif + } +} + +//------------------------------------------------------------------------------ + +ReceivedBundle::ReceivedBundle( const ReceivedPacket& packet ) + : elementCount_( 0 ) + , state_( SUCCESS ) +{ + Init( packet.Contents(), packet.Size() ); +} + + +ReceivedBundle::ReceivedBundle( const ReceivedBundleElement& bundleElement ) + : elementCount_( 0 ) + , state_( SUCCESS ) +{ + Init( bundleElement.Contents(), bundleElement.Size() ); +} + + +void ReceivedBundle::Init( const char *bundle, osc_bundle_element_size_t size ) +{ + + if( !IsValidElementSizeValue(size) ) + { + state_ = MALFORMED_BUNDLE_INVALID_SIZE_ERROR; + return; + } + + if( size < 16 ) + { + state_ = MALFORMED_BUNDLE_TOO_SHORT_ERROR; + return; + } + + if( !IsMultipleOf4(size) ) + { + state_ = MALFORMED_BUNDLE_NOT_MULTIPLE_OF_4_ERROR; + return; + } + + if( bundle[0] != '#' + || bundle[1] != 'b' + || bundle[2] != 'u' + || bundle[3] != 'n' + || bundle[4] != 'd' + || bundle[5] != 'l' + || bundle[6] != 'e' + || bundle[7] != '\0' ) + { + state_ = MALFORMED_BUNDLE_INVALID_ADDRESS_PATTERN_ERROR; + return; + } + + end_ = bundle + size; + + timeTag_ = bundle + 8; + + const char *p = timeTag_ + 8; + + while( p < end_ ){ + if( p + osc::OSC_SIZEOF_INT32 > end_ ) + { + state_ = MALFORMED_BUNDLE_TOO_SHORT_FOR_ELEMENT_SIZE_ERROR; + return; + } + + // treat element size as an unsigned int for the purposes of this calculation + uint32 elementSize = ToUInt32( p ); + if( (elementSize & ((uint32)0x03)) != 0 ) + { + state_ = MALFORMED_BUNDLE_ELEMENT_NOT_MULTIPLE_OF_4_ERROR; + return; + } + + p += osc::OSC_SIZEOF_INT32 + elementSize; + if( p > end_ ) + { + state_ = MALFORMED_BUNDLE_TOO_SHORT_FOR_ELEMENT_ERROR; + return; + } + + ++elementCount_; + } + + if( p != end_ ) + { + state_ = MALFORMED_BUNDLE_CONTENT_ERROR; + } +} + + +uint64 ReceivedBundle::TimeTag() const +{ + return ToUInt64( timeTag_ ); +} + + +} // namespace osc + diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscReceivedElements.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscReceivedElements.h new file mode 100644 index 0000000..69dd2b4 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscReceivedElements.h @@ -0,0 +1,581 @@ +/* + oscpack -- Open Sound Control (OSC) packet manipulation library + http://www.rossbencina.com/code/oscpack + + Copyright (c) 2004-2013 Ross Bencina + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + The text above constitutes the entire oscpack license; however, + the oscpack developer(s) also make the following non-binding requests: + + Any person wishing to distribute modifications to the Software is + requested to send the modifications to the original developer so that + they can be incorporated into the canonical version. It is also + requested that these non-binding requests be included whenever the + above license is reproduced. +*/ +#ifndef INCLUDED_OSCPACK_OSCRECEIVEDELEMENTS_H +#define INCLUDED_OSCPACK_OSCRECEIVEDELEMENTS_H + +#include +#include +#include // size_t + +#include "OscTypes.h" + + +namespace osc{ + + +class ReceivedPacket{ +public: + // Although the OSC spec is not entirely clear on this, we only support + // packets up to 0x7FFFFFFC bytes long (the maximum 4-byte aligned value + // representable by an int32). An exception will be raised if you pass a + // larger value to the ReceivedPacket() constructor. + + ReceivedPacket( const char *contents, osc_bundle_element_size_t size ) + : contents_( contents ) + , size_( ValidateSize(size, &state_) ) {} + + ReceivedPacket( const char *contents, std::size_t size ) + : contents_( contents ) + , size_( ValidateSize( (osc_bundle_element_size_t)size, &state_ ) ) {} + +#if !(defined(__x86_64__) || defined(_M_X64)) + ReceivedPacket( const char *contents, int size ) + : contents_( contents ) + , size_( ValidateSize( (osc_bundle_element_size_t)size, &state_ ) ) {} +#endif + + bool IsMessage() const { return !IsBundle(); } + bool IsBundle() const; + + osc_bundle_element_size_t Size() const { return size_; } + const char *Contents() const { return contents_; } + Errors State() const { return state_; } + +private: + const char *contents_; + osc_bundle_element_size_t size_; + Errors state_; + + static osc_bundle_element_size_t ValidateSize( osc_bundle_element_size_t size, Errors * state ) + { + // sanity check integer types declared in OscTypes.h + // you'll need to fix OscTypes.h if any of these asserts fail + assert( sizeof(osc::int32) == 4 ); + assert( sizeof(osc::uint32) == 4 ); + assert( sizeof(osc::int64) == 8 ); + assert( sizeof(osc::uint64) == 8 ); + + if( !IsValidElementSizeValue(size) ) + { + *state = MALFORMED_PACKET_INVALID_SIZE_ERROR; + return 0; + } + + if( size == 0 ) + { + *state = MALFORMED_PACKET_ZERO_SIZE_ERROR; + return 0; + } + + if( !IsMultipleOf4(size) ) + { + *state = MALFORMED_PACKET_NOT_MULTIPLE_OF_4_ERROR; + return 0; + } + + *state = SUCCESS; + return size; + } +}; + + +class ReceivedBundleElement{ +public: + ReceivedBundleElement( const char *sizePtr ) + : sizePtr_( sizePtr ) {} + + friend class ReceivedBundleElementIterator; + + bool IsMessage() const { return !IsBundle(); } + bool IsBundle() const; + + osc_bundle_element_size_t Size() const; + const char *Contents() const { return sizePtr_ + osc::OSC_SIZEOF_INT32; } + +private: + const char *sizePtr_; +}; + + +class ReceivedBundleElementIterator{ +public: + ReceivedBundleElementIterator( const char *sizePtr ) + : value_( sizePtr ) {} + + ReceivedBundleElementIterator operator++() + { + Advance(); + return *this; + } + + ReceivedBundleElementIterator operator++(int) + { + ReceivedBundleElementIterator old( *this ); + Advance(); + return old; + } + + const ReceivedBundleElement& operator*() const { return value_; } + + const ReceivedBundleElement* operator->() const { return &value_; } + + friend bool operator==(const ReceivedBundleElementIterator& lhs, + const ReceivedBundleElementIterator& rhs ); + +private: + ReceivedBundleElement value_; + + void Advance() { value_.sizePtr_ = value_.Contents() + value_.Size(); } + + bool IsEqualTo( const ReceivedBundleElementIterator& rhs ) const + { + return value_.sizePtr_ == rhs.value_.sizePtr_; + } +}; + +inline bool operator==(const ReceivedBundleElementIterator& lhs, + const ReceivedBundleElementIterator& rhs ) +{ + return lhs.IsEqualTo( rhs ); +} + +inline bool operator!=(const ReceivedBundleElementIterator& lhs, + const ReceivedBundleElementIterator& rhs ) +{ + return !( lhs == rhs ); +} + + +class ReceivedMessageArgument{ +public: + ReceivedMessageArgument( const char *typeTagPtr, const char *argumentPtr ) + : typeTagPtr_( typeTagPtr ) + , argumentPtr_( argumentPtr ) {} + + friend class ReceivedMessageArgumentIterator; + + char TypeTag() const { return *typeTagPtr_; } + + // the unchecked methods below don't check whether the argument actually + // is of the specified type. they should only be used if you've already + // checked the type tag or the associated IsType() method. + + bool IsBool() const + { return *typeTagPtr_ == TRUE_TYPE_TAG || *typeTagPtr_ == FALSE_TYPE_TAG; } + bool AsBool(Errors & state) const; + bool AsBoolUnchecked(Errors & state) const; + + bool IsNil() const { return *typeTagPtr_ == NIL_TYPE_TAG; } + bool IsInfinitum() const { return *typeTagPtr_ == INFINITUM_TYPE_TAG; } + + bool IsInt32() const { return *typeTagPtr_ == INT32_TYPE_TAG; } + int32 AsInt32(Errors & state) const; + int32 AsInt32Unchecked() const; + + bool IsFloat() const { return *typeTagPtr_ == FLOAT_TYPE_TAG; } + float AsFloat(Errors & state) const; + float AsFloatUnchecked() const; + + bool IsChar() const { return *typeTagPtr_ == CHAR_TYPE_TAG; } + char AsChar(Errors & state) const; + char AsCharUnchecked() const; + + bool IsRgbaColor() const { return *typeTagPtr_ == RGBA_COLOR_TYPE_TAG; } + uint32 AsRgbaColor(Errors & state) const; + uint32 AsRgbaColorUnchecked() const; + + bool IsMidiMessage() const { return *typeTagPtr_ == MIDI_MESSAGE_TYPE_TAG; } + uint32 AsMidiMessage(Errors & state) const; + uint32 AsMidiMessageUnchecked() const; + + bool IsInt64() const { return *typeTagPtr_ == INT64_TYPE_TAG; } + int64 AsInt64(Errors & state) const; + int64 AsInt64Unchecked() const; + + bool IsTimeTag() const { return *typeTagPtr_ == TIME_TAG_TYPE_TAG; } + uint64 AsTimeTag(Errors & state) const; + uint64 AsTimeTagUnchecked() const; + + bool IsDouble() const { return *typeTagPtr_ == DOUBLE_TYPE_TAG; } + double AsDouble(Errors & state) const; + double AsDoubleUnchecked() const; + + bool IsString() const { return *typeTagPtr_ == STRING_TYPE_TAG; } + const char* AsString(Errors & state) const; + const char* AsStringUnchecked() const { return argumentPtr_; } + + bool IsSymbol() const { return *typeTagPtr_ == SYMBOL_TYPE_TAG; } + const char* AsSymbol(Errors & state) const; + const char* AsSymbolUnchecked() const { return argumentPtr_; } + + bool IsBlob() const { return *typeTagPtr_ == BLOB_TYPE_TAG; } + void AsBlob( const void*& data, osc_bundle_element_size_t& size, Errors & state ) const; + void AsBlobUnchecked( const void*& data, osc_bundle_element_size_t& size, Errors & state ) const; + + bool IsArrayBegin() const { return *typeTagPtr_ == ARRAY_BEGIN_TYPE_TAG; } + bool IsArrayEnd() const { return *typeTagPtr_ == ARRAY_END_TYPE_TAG; } + // Calculate the number of top-level items in the array. Nested arrays count as one item. + // Only valid at array start. Will throw an exception if IsArrayStart() == false. + std::size_t ComputeArrayItemCount(Errors & state) const; + +private: + const char *typeTagPtr_; + const char *argumentPtr_; +}; + + +class ReceivedMessageArgumentIterator{ +public: + ReceivedMessageArgumentIterator( const char *typeTags, const char *arguments ) + : value_( typeTags, arguments ) {} + + ReceivedMessageArgumentIterator operator++() + { + Advance(); + return *this; + } + + ReceivedMessageArgumentIterator operator++(int) + { + ReceivedMessageArgumentIterator old( *this ); + Advance(); + return old; + } + + const ReceivedMessageArgument& operator*() const { return value_; } + + const ReceivedMessageArgument* operator->() const { return &value_; } + + friend bool operator==(const ReceivedMessageArgumentIterator& lhs, + const ReceivedMessageArgumentIterator& rhs ); + +private: + ReceivedMessageArgument value_; + + void Advance(); + + bool IsEqualTo( const ReceivedMessageArgumentIterator& rhs ) const + { + return value_.typeTagPtr_ == rhs.value_.typeTagPtr_; + } +}; + +inline bool operator==(const ReceivedMessageArgumentIterator& lhs, + const ReceivedMessageArgumentIterator& rhs ) +{ + return lhs.IsEqualTo( rhs ); +} + +inline bool operator!=(const ReceivedMessageArgumentIterator& lhs, + const ReceivedMessageArgumentIterator& rhs ) +{ + return !( lhs == rhs ); +} + + +class ReceivedMessageArgumentStream{ + friend class ReceivedMessage; + ReceivedMessageArgumentStream( const ReceivedMessageArgumentIterator& begin, + const ReceivedMessageArgumentIterator& end ) + : p_( begin ) + , end_( end ) + , state_( SUCCESS ) {} + + ReceivedMessageArgumentIterator p_, end_; + Errors state_; + +public: + + Errors State() const { return state_; } + + // end of stream + bool Eos() const { return p_ == end_; } + + ReceivedMessageArgumentStream& operator>>( bool& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs = (*p_++).AsBool(state_); + } + return *this; + } + + // not sure if it would be useful to stream Nil and Infinitum + // for now it's not possible + // same goes for array boundaries + + ReceivedMessageArgumentStream& operator>>( int32& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs = (*p_++).AsInt32(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( float& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs = (*p_++).AsFloat(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( char& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs = (*p_++).AsChar(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( RgbaColor& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs.value = (*p_++).AsRgbaColor(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( MidiMessage& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs.value = (*p_++).AsMidiMessage(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( int64& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs = (*p_++).AsInt64(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( TimeTag& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs.value = (*p_++).AsTimeTag(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( double& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs = (*p_++).AsDouble(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( Blob& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + (*p_++).AsBlob( rhs.data, rhs.size, state_ ); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( const char*& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs = (*p_++).AsString(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( Symbol& rhs ) + { + if( Eos() ) + { + state_ = MISSING_ARGUMENT_ERROR; + } + else + { + rhs.value = (*p_++).AsSymbol(state_); + } + return *this; + } + + ReceivedMessageArgumentStream& operator>>( MessageTerminator& rhs ) + { + (void) rhs; // suppress unused parameter warning + + if( Eos() ) + { + state_ = EXCESS_ARGUMENT_ERROR; + } + return *this; + } +}; + + +class ReceivedMessage{ + void Init( const char *bundle, osc_bundle_element_size_t size ); +public: + explicit ReceivedMessage( const ReceivedPacket& packet ); + explicit ReceivedMessage( const ReceivedBundleElement& bundleElement ); + + Errors State() const { return state_; } + + const char *AddressPattern() const { return addressPattern_; } + + // Support for non-standard SuperCollider integer address patterns: + bool AddressPatternIsUInt32() const; + uint32 AddressPatternAsUInt32() const; + + uint32 ArgumentCount() const { return static_cast(typeTagsEnd_ - typeTagsBegin_); } + + const char *TypeTags() const { return typeTagsBegin_; } + + + typedef ReceivedMessageArgumentIterator const_iterator; + + ReceivedMessageArgumentIterator ArgumentsBegin() const + { + return ReceivedMessageArgumentIterator( typeTagsBegin_, arguments_ ); + } + + ReceivedMessageArgumentIterator ArgumentsEnd() const + { + return ReceivedMessageArgumentIterator( typeTagsEnd_, 0 ); + } + + ReceivedMessageArgumentStream ArgumentStream() const + { + return ReceivedMessageArgumentStream( ArgumentsBegin(), ArgumentsEnd() ); + } + +private: + const char *addressPattern_; + const char *typeTagsBegin_; + const char *typeTagsEnd_; + const char *arguments_; + Errors state_; +}; + + +class ReceivedBundle{ + void Init( const char *message, osc_bundle_element_size_t size ); +public: + explicit ReceivedBundle( const ReceivedPacket& packet ); + explicit ReceivedBundle( const ReceivedBundleElement& bundleElement ); + + Errors State() const { return state_; } + + uint64 TimeTag() const; + + uint32 ElementCount() const { return elementCount_; } + + typedef ReceivedBundleElementIterator const_iterator; + + ReceivedBundleElementIterator ElementsBegin() const + { + return ReceivedBundleElementIterator( timeTag_ + 8 ); + } + + ReceivedBundleElementIterator ElementsEnd() const + { + return ReceivedBundleElementIterator( end_ ); + } + +private: + const char *timeTag_; + const char *end_; + uint32 elementCount_; + Errors state_; +}; + + +} // namespace osc + + +#endif /* INCLUDED_OSCPACK_OSCRECEIVEDELEMENTS_H */ diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscTypes.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscTypes.cpp new file mode 100644 index 0000000..5115207 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscTypes.cpp @@ -0,0 +1,103 @@ +/* + oscpack -- Open Sound Control (OSC) packet manipulation library + http://www.rossbencina.com/code/oscpack + + Copyright (c) 2004-2013 Ross Bencina + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + The text above constitutes the entire oscpack license; however, + the oscpack developer(s) also make the following non-binding requests: + + Any person wishing to distribute modifications to the Software is + requested to send the modifications to the original developer so that + they can be incorporated into the canonical version. It is also + requested that these non-binding requests be included whenever the + above license is reproduced. +*/ + +#include "OscPrivatePCH.h" + +#include "OscTypes.h" + +namespace osc{ + +BundleInitiator BeginBundleImmediate(1); +BundleTerminator EndBundle; +MessageTerminator EndMessage; +NilType OscNil; +#ifndef _OBJC_OBJC_H_ +NilType Nil; // Objective-C defines Nil. so our Nil is deprecated. use OscNil instead +#endif +InfinitumType Infinitum; +ArrayInitiator BeginArray; +ArrayTerminator EndArray; + +const TCHAR * errorString(Errors value) +{ + static const TCHAR * ERROR_STR[] = { + TEXT("No Error"), + + TEXT("Malformed packet"), + TEXT("Malformed packet: invalid size"), + TEXT("Malformed packet: zero size"), + TEXT("Malformed packet: not multiple of 4"), + + TEXT("Malformed message"), + TEXT("Malformed message: invalid size"), + TEXT("Malformed message: zero size"), + TEXT("Malformed message: not multiple of 4"), + TEXT("Malformed message: invalid blob size"), + TEXT("Malformed message: unterminated address pattern"), + TEXT("Malformed message: unterminated string"), + TEXT("Malformed message: unterminated array"), + TEXT("Malformed message: no type tags"), + TEXT("Malformed message: unterminated type tags"), + TEXT("Malformed message: argument exceed msg size"), + TEXT("Malformed message: unknown type tag"), + + TEXT("Malformed bundle"), + TEXT("Malformed bundle: invalid size"), + TEXT("Malformed bundle: invalid address pattern"), + TEXT("Malformed bundle: too short"), + TEXT("Malformed bundle: too short for element size"), + TEXT("Malformed bundle: too short for element"), + TEXT("Malformed bundle: not multiple of 4"), + TEXT("Malformed bundle: element not multiple of 4"), + TEXT("Malformed bundle: content"), + + TEXT("Wrong argument type"), + TEXT("Missing argument"), + TEXT("Excess argument"), + TEXT("Out of buffer memory"), + }; + + static_assert((sizeof(ERROR_STR) / sizeof(*ERROR_STR) == ERRORS_COUNT), "Error messages mismatch"); + if(value < 0 || value >= ERRORS_COUNT) + { + check(false); + return TEXT("Unknown error code"); + } + return ERROR_STR[value]; +} + +} // namespace osc diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscTypes.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscTypes.h new file mode 100644 index 0000000..aabe09f --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Common/oscpack/osc/OscTypes.h @@ -0,0 +1,282 @@ +/* + oscpack -- Open Sound Control (OSC) packet manipulation library + http://www.rossbencina.com/code/oscpack + + Copyright (c) 2004-2013 Ross Bencina + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + The text above constitutes the entire oscpack license; however, + the oscpack developer(s) also make the following non-binding requests: + + Any person wishing to distribute modifications to the Software is + requested to send the modifications to the original developer so that + they can be incorporated into the canonical version. It is also + requested that these non-binding requests be included whenever the + above license is reproduced. +*/ +#ifndef INCLUDED_OSCPACK_OSCTYPES_H +#define INCLUDED_OSCPACK_OSCTYPES_H + + +namespace osc{ + +// basic types + +#if defined(__BORLANDC__) || defined(_MSC_VER) + +typedef __int64 int64; +typedef unsigned __int64 uint64; + +#elif defined(__x86_64__) || defined(_M_X64) + +typedef long int64; +typedef unsigned long uint64; + +#else + +typedef long long int64; +typedef unsigned long long uint64; + +#endif + + + +#if defined(__x86_64__) || defined(_M_X64) + +typedef signed int int32; +typedef unsigned int uint32; + +#else + +typedef signed long int32; +typedef unsigned long uint32; + +#endif + + +enum ValueTypeSizes{ + OSC_SIZEOF_INT32 = 4, + OSC_SIZEOF_UINT32 = 4, + OSC_SIZEOF_INT64 = 8, + OSC_SIZEOF_UINT64 = 8, +}; + + +// osc_bundle_element_size_t is used for the size of bundle elements and blobs +// the OSC spec specifies these as int32 (signed) but we ensure that they +// are always positive since negative field sizes make no sense. + +typedef int32 osc_bundle_element_size_t; + +enum { + OSC_INT32_MAX = 0x7FFFFFFF, + + // Element sizes are specified to be int32, and are always rounded up to nearest + // multiple of 4. Therefore their values can't be greater than 0x7FFFFFFC. + OSC_BUNDLE_ELEMENT_SIZE_MAX = 0x7FFFFFFC +}; + + +inline bool IsValidElementSizeValue( osc_bundle_element_size_t x ) +{ + // sizes may not be negative or exceed OSC_BUNDLE_ELEMENT_SIZE_MAX + return x >= 0 && x <= OSC_BUNDLE_ELEMENT_SIZE_MAX; +} + + +inline bool IsMultipleOf4( osc_bundle_element_size_t x ) +{ + return (x & ((osc_bundle_element_size_t)0x03)) == 0; +} + + +enum TypeTagValues { + TRUE_TYPE_TAG = 'T', + FALSE_TYPE_TAG = 'F', + NIL_TYPE_TAG = 'N', + INFINITUM_TYPE_TAG = 'I', + INT32_TYPE_TAG = 'i', + FLOAT_TYPE_TAG = 'f', + CHAR_TYPE_TAG = 'c', + RGBA_COLOR_TYPE_TAG = 'r', + MIDI_MESSAGE_TYPE_TAG = 'm', + INT64_TYPE_TAG = 'h', + TIME_TAG_TYPE_TAG = 't', + DOUBLE_TYPE_TAG = 'd', + STRING_TYPE_TAG = 's', + SYMBOL_TYPE_TAG = 'S', + BLOB_TYPE_TAG = 'b', + ARRAY_BEGIN_TYPE_TAG = '[', + ARRAY_END_TYPE_TAG = ']' +}; + + + +// i/o manipulators used for streaming interfaces + +struct BundleInitiator{ + explicit BundleInitiator( uint64 timeTag_ ) : timeTag( timeTag_ ) {} + uint64 timeTag; +}; + +extern BundleInitiator BeginBundleImmediate; + +inline BundleInitiator BeginBundle( uint64 timeTag=1 ) +{ + return BundleInitiator(timeTag); +} + + +struct BundleTerminator{ +}; + +extern BundleTerminator EndBundle; + +struct BeginMessage{ + explicit BeginMessage( const char *addressPattern_ ) : addressPattern( addressPattern_ ) {} + const char *addressPattern; +}; + +struct MessageTerminator{ +}; + +extern MessageTerminator EndMessage; + + +// osc specific types. they are defined as structs so they can be used +// as separately identifiable types with the streaming operators. + +struct NilType{ +}; + +extern NilType OscNil; + +#ifndef _OBJC_OBJC_H_ +extern NilType Nil; // Objective-C defines Nil. so our Nil is deprecated. use OscNil instead +#endif + +struct InfinitumType{ +}; + +extern InfinitumType Infinitum; + +struct RgbaColor{ + RgbaColor() {} + explicit RgbaColor( uint32 value_ ) : value( value_ ) {} + uint32 value; + + operator uint32() const { return value; } +}; + + +struct MidiMessage{ + MidiMessage() {} + explicit MidiMessage( uint32 value_ ) : value( value_ ) {} + uint32 value; + + operator uint32() const { return value; } +}; + + +struct TimeTag{ + TimeTag() {} + explicit TimeTag( uint64 value_ ) : value( value_ ) {} + uint64 value; + + operator uint64() const { return value; } +}; + + +struct Symbol{ + Symbol() {} + explicit Symbol( const char* value_ ) : value( value_ ) {} + const char* value; + + operator const char *() const { return value; } +}; + + +struct Blob{ + Blob() {} + explicit Blob( const void* data_, osc_bundle_element_size_t size_ ) + : data( data_ ), size( size_ ) {} + const void* data; + osc_bundle_element_size_t size; +}; + +struct ArrayInitiator{ +}; + +extern ArrayInitiator BeginArray; + +struct ArrayTerminator{ +}; + +extern ArrayTerminator EndArray; + + +enum Errors { + SUCCESS = 0, + + MALFORMED_PACKET_ERROR, + MALFORMED_PACKET_INVALID_SIZE_ERROR, + MALFORMED_PACKET_ZERO_SIZE_ERROR, + MALFORMED_PACKET_NOT_MULTIPLE_OF_4_ERROR, + + MALFORMED_MESSAGE_ERROR, + MALFORMED_MESSAGE_INVALID_SIZE_ERROR, + MALFORMED_MESSAGE_ZERO_SIZE_ERROR, + MALFORMED_MESSAGE_NOT_MULTIPLE_OF_4_ERROR, + MALFORMED_MESSAGE_INVALID_BLOB_SIZE_ERROR, + MALFORMED_MESSAGE_UNTERMINATED_ADDRESS_PATTERN_ERROR, + MALFORMED_MESSAGE_UNTERMINATED_STRING_ERROR, + MALFORMED_MESSAGE_UNTERMINATED_ARRAY_ERROR, + MALFORMED_MESSAGE_NO_TYPE_TAGS_ERROR, + MALFORMED_MESSAGE_UNTERMINATED_TYPE_TAGS_ERROR, + MALFORMED_MESSAGE_ARGUMENT_EXCEED_MSG_SIZE_ERROR, + MALFORMED_MESSAGE_UNKNOWN_TYPE_TAG_ERROR, + + MALFORMED_BUNDLE_ERROR, + MALFORMED_BUNDLE_INVALID_SIZE_ERROR, + MALFORMED_BUNDLE_INVALID_ADDRESS_PATTERN_ERROR, + MALFORMED_BUNDLE_TOO_SHORT_ERROR, + MALFORMED_BUNDLE_TOO_SHORT_FOR_ELEMENT_SIZE_ERROR, + MALFORMED_BUNDLE_TOO_SHORT_FOR_ELEMENT_ERROR, + MALFORMED_BUNDLE_NOT_MULTIPLE_OF_4_ERROR, + MALFORMED_BUNDLE_ELEMENT_NOT_MULTIPLE_OF_4_ERROR, + MALFORMED_BUNDLE_CONTENT_ERROR, + + WRONG_ARGUMENT_TYPE_ERROR, + MISSING_ARGUMENT_ERROR, + EXCESS_ARGUMENT_ERROR, + OUT_OF_BUFFER_MEMORY_ERROR, + + ERRORS_COUNT, +}; + +const TCHAR * errorString(Errors value); + +} // namespace osc + + +#endif /* INCLUDED_OSCPACK_OSCTYPES_H */ diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Osc.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Osc.h new file mode 100644 index 0000000..ad0037c --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Osc.h @@ -0,0 +1,19 @@ +#pragma once + + +// Target engine version. Used to enable compatibility code. +#define OSC_ENGINE_VERSION 40800 + +#ifndef OSC_EDITOR_BUILD +#error OSC_EDITOR_BUILD must be set by the OSC.Build.cs +#endif + + +/* Public Dependencies + *****************************************************************************/ + +#include "Networking.h" + + +/* Public Includes + *****************************************************************************/ diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscModule.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscModule.cpp new file mode 100644 index 0000000..22fc8af --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscModule.cpp @@ -0,0 +1,146 @@ +#include "OscPrivatePCH.h" +#include "OscSettings.h" +#include "OscDispatcher.h" + +#if OSC_EDITOR_BUILD +#include "Editor.h" +#endif + + +#define LOCTEXT_NAMESPACE "FOscModule" + + +class FOscModule : public IModuleInterface +{ +public: + virtual void StartupModule( ) override + { + if(!FModuleManager::Get().LoadModule(TEXT("Networking")).IsValid()) + { + UE_LOG(LogOSC, Error, TEXT("Required module Networking failed to load")); + return; + } + +#if OSC_EDITOR_BUILD + _mustListen = !GIsEditor; // must not listen now if IsEditor (listen when PIE), else (Standalone Game) listen now + FEditorDelegates::BeginPIE.AddRaw(this, &FOscModule::OnBeginPIE); + FEditorDelegates::EndPIE.AddRaw(this, &FOscModule::OnEndPIE); +#endif + + _dispatcher = UOscDispatcher::Get(); + + HandleSettingsSaved(); + + // register settings + auto settingsModule = FModuleManager::GetModulePtr("Settings"); + if(settingsModule) + { + auto settingsSection = settingsModule->RegisterSettings("Project", "Plugins", "OSC", + LOCTEXT("OscSettingsName", "OSC"), + LOCTEXT("OscSettingsDescription", "Configure the OSC plug-in."), + GetMutableDefault() + ); + + if (settingsSection.IsValid()) + { + settingsSection->OnModified().BindRaw(this, &FOscModule::HandleSettingsSaved); + } + } + else + { +#if OSC_EDITOR_BUILD + UE_LOG(LogOSC, Warning, TEXT("Settings changed registration failed")); +#endif + } + UE_LOG(LogOSC, Display, TEXT("Startup succeed")); + } + + virtual void ShutdownModule( ) override + { + UE_LOG(LogOSC, Display, TEXT("Shutdown")); + + if(_dispatcher.IsValid()) + { + auto settings = GetMutableDefault(); + settings->ClearKeyInputs(*_dispatcher); + + _dispatcher->Stop(); + } + } + + bool HandleSettingsSaved() + { + if(!_dispatcher.IsValid()) + { + UE_LOG(LogOSC, Warning, TEXT("Cannot update settings")); + return false; + } + + UE_LOG(LogOSC, Display, TEXT("Update settings")); + + auto settings = GetMutableDefault(); + + // receive settings +#if OSC_EDITOR_BUILD + if(_mustListen) + { + Listen(settings); + } +#else + Listen(settings); +#endif + + // send settings + settings->InitSendTargets(); + + // input settings + settings->UpdateKeyInputs(*_dispatcher); + + return true; + } + + void Listen(UOscSettings * settings) + { + FIPv4Address receiveAddress(0); + uint32_t receivePort; + if(UOscSettings::Parse(settings->ReceiveFrom, &receiveAddress, &receivePort)) + { + _dispatcher->Listen(receiveAddress, receivePort); + } + else + { + UE_LOG(LogOSC, Error, TEXT("Fail to parse receive address: %s"), *settings->ReceiveFrom); + } + } + +private: +#if OSC_EDITOR_BUILD + void OnBeginPIE(bool isSimulating) + { + _mustListen = true; + + check(_dispatcher.IsValid()) + auto settings = GetMutableDefault(); + Listen(settings); + } + + void OnEndPIE(bool isSimulating) + { + _mustListen = false; + _dispatcher->Stop(); + } + + bool _mustListen; +#endif + +private: + + TWeakObjectPtr _dispatcher; +}; + + +IMPLEMENT_MODULE(FOscModule, OSC); +DEFINE_LOG_CATEGORY(LogOSC); + + +#undef LOCTEXT_NAMESPACE diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscPrivatePCH.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscPrivatePCH.h new file mode 100644 index 0000000..982cf0d --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscPrivatePCH.h @@ -0,0 +1,22 @@ +#pragma once + +#include "Osc.h" + +#include "Engine.h" +#include "ISettingsModule.h" +#include "ISettingsSection.h" + +#include "ModuleManager.h" +#include "Sockets.h" +#include "SocketSubsystem.h" +#include "TaskGraphInterfaces.h" + +#include "Runtime/Engine/Classes/Kismet/BlueprintFunctionLibrary.h" +#include "Runtime/Networking/Public/Networking.h" +#include "Runtime/Core/Public/Misc/Base64.h" + +#include +#include +#include + +DECLARE_LOG_CATEGORY_EXTERN(LogOSC, Log, All); diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscSettings.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscSettings.cpp new file mode 100644 index 0000000..0578c0b --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscSettings.cpp @@ -0,0 +1,176 @@ +#include "OscPrivatePCH.h" + +#include "OscSettings.h" +#include "OscDispatcher.h" + + +UOscSettings::UOscSettings() + : ReceiveFrom("8000"), + _sendSocket(FUdpSocketBuilder(TEXT("OscSender")).Build()) +{ + SendTargets.Add(TEXT("127.0.0.1:8000")); +} + +UOscSettings::UOscSettings(FVTableHelper & helper) + : _sendSocket(FUdpSocketBuilder(TEXT("OscSender")).Build()) +{ + // Does not need to be a valid object. +} + +void UOscSettings::InitSendTargets() +{ + UE_LOG(LogOSC, Display, TEXT("Send targets cleared")); + + FString addressStr, portStr; + + _sendAddresses.Empty(); + _sendAddresses.Reserve(SendTargets.Num()); + + _sendAddressesIndex.Empty(); + _sendAddressesIndex.Reserve(SendTargets.Num()); + + for(int32 i=0, n=SendTargets.Num(); i!=n; ++i) + { + const auto result = AddSendTarget(SendTargets[i]); + check(result == i); + } +} + +int32 UOscSettings::GetOrAddSendTarget(const FString & ip_port) +{ + const int32 * result = _sendAddressesIndex.Find(ip_port); + if(result) + { + return *result; + } + + return AddSendTarget(ip_port); +} + +int32 UOscSettings::AddSendTarget(const FString & ip_port) +{ + auto target = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateInternetAddr(); + + FIPv4Address address(0); + uint32_t port; + if(Parse(ip_port, &address, &port) && address != FIPv4Address::Any) + { + target->SetIp(address.Value); + target->SetPort(port); + UE_LOG(LogOSC, Display, TEXT("Send target added: %s"), *ip_port); + } + else + { + UE_LOG(LogOSC, Error, TEXT("Fail to parse or invalid send target: %s"), *ip_port); + } + + const auto result = _sendAddresses.Num(); + _sendAddressesIndex.Emplace(ip_port, result); + _sendAddresses.Emplace(target); + return result; +} + +static void SendImpl(FSocket *socket, const uint8 *buffer, int32 length, const FInternetAddr & target) +{ + int32 bytesSent = 0; + while(length > 0) + { + socket->SendTo(buffer, length, bytesSent, target); + length -= bytesSent; + buffer += bytesSent; + } +} + +void UOscSettings::Send(const uint8 *buffer, int32 length, int32 targetIndex) +{ + if(targetIndex == -1) + { + for(const auto & address : _sendAddresses) + { + SendImpl(&_sendSocket.Get(), buffer, length, *address); + } + +#if !NO_LOGGING + // Log sent packet + if(!LogOSC.IsSuppressed(ELogVerbosity::Verbose)) + { + TArray tmp; + tmp.Append(buffer, length); + const auto encoded = FBase64::Encode(tmp); + UE_LOG(LogOSC, Verbose, TEXT("SentAll: %s"), *encoded); + } +#endif + } + else if(targetIndex < _sendAddresses.Num()) + { + SendImpl(&_sendSocket.Get(), buffer, length, *_sendAddresses[targetIndex]); + +#if !NO_LOGGING + // Log sent packet + if(!LogOSC.IsSuppressed(ELogVerbosity::Verbose)) + { + TArray tmp; + tmp.Append(buffer, length); + const auto encoded = FBase64::Encode(tmp); + const auto target = _sendAddresses[targetIndex]->ToString(true); + UE_LOG(LogOSC, Verbose, TEXT("SentTo %s: %s"), *target, *encoded); + } +#endif + } + else + { + UE_LOG(LogOSC, Error, TEXT("Cannot send OSC: invalid targetIndex %d"), targetIndex); + } +} + +bool UOscSettings::Parse(const FString & ip_port, FIPv4Address * address, uint32_t * port) +{ + if(ip_port.IsEmpty()) + { + return false; + } + + FIPv4Address addressResult(0); + uint32_t portResult; + + int32 sep = -1; + if(ip_port.FindChar(TEXT(':'), sep)) + { + const auto ip = ip_port.Left(sep).Trim(); + if(!FIPv4Address::Parse(ip, addressResult)) + { + return false; + } + } + + portResult = FCString::Atoi(&ip_port.GetCharArray()[sep+1]); + if(portResult == 0) + { + return false; + } + + *address = addressResult; + *port = portResult; + return true; +} + +void UOscSettings::ClearKeyInputs(UOscDispatcher & dispatcher) +{ + for(auto & receiver : _keyReceivers) + { + // Unregister here, not in the OscReceiverInputKey destructor + // because it would crash at the application exit. + dispatcher.UnregisterReceiver(&receiver); + } + _keyReceivers.Reset(0); +} + +void UOscSettings::UpdateKeyInputs(UOscDispatcher & dispatcher) +{ + ClearKeyInputs(dispatcher); + for(const auto & address : Inputs) + { + _keyReceivers.Emplace(address); + dispatcher.RegisterReceiver(&_keyReceivers.Last()); + } +} diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscSettings.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscSettings.h new file mode 100644 index 0000000..5b8eeb7 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/OscSettings.h @@ -0,0 +1,74 @@ +#pragma once + +#include +#include "OscReceiverInputKey.h" + +#include "OscSettings.generated.h" + +class UOscDispatcher; + + +UCLASS(config=Engine) +class UOscSettings : public UObject +{ + GENERATED_BODY() + +public: + + /// Default constructor + UOscSettings(); + + /// Hot reload constructor + UOscSettings(FVTableHelper & helper); + + /** + * Specify the [address:]port to listen to. + * + * e.g. + * - "8000" listen to messages from any sender on port 8000. [default] + * - "224.0.0.100:8000" listen multi-cast messages of group 224.0.0.100 on port 8000. + * - "192.168.0.1:8000" listen messages addressed specifically to 192.168.0.1 on port 8000, useful if there are several addresses for this machine. + */ + UPROPERTY(Config, EditAnywhere, Category=Receive) + FString ReceiveFrom; + + UPROPERTY(Config, EditAnywhere, Category=Send) + TArray SendTargets; + + /** + * List of the messages treated as inputs. + * + * Every entry adds a key in the input mapping project setting. + * e.g. "/position/x" -> "OSC_position_x" + */ + UPROPERTY(Config, EditAnywhere, Category=Input) + TArray Inputs; + +public: + void InitSendTargets(); + + int32 GetOrAddSendTarget(const FString & ip_port); + + void Send(const uint8 *buffer, int32 length, int32 targetIndex); + + void ClearKeyInputs(UOscDispatcher & dispatcher); + + void UpdateKeyInputs(UOscDispatcher & dispatcher); + +public: + + /** + * @brief Parse "8000" and "192.168.0.12" to IP and port values. + * @return true if succeed + */ + static bool Parse(const FString & ip_port, FIPv4Address * address, uint32_t * port); + +private: + int32 AddSendTarget(const FString & ip_port); + +private: + TSharedRef _sendSocket; + TArray> _sendAddresses; + TMap _sendAddressesIndex; + TArray _keyReceivers; +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscDispatcher.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscDispatcher.cpp new file mode 100644 index 0000000..4988f05 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscDispatcher.cpp @@ -0,0 +1,237 @@ +#include "OscPrivatePCH.h" +#include "OscDispatcher.h" +#include "OscReceiverInterface.h" + +#include "oscpack/osc/OscReceivedElements.h" + + +UOscDispatcher::UOscDispatcher() +: _listening(FIPv4Address(0), 0), + _socket(nullptr), + _socketReceiver(nullptr), + _pendingMessages(1024), // arbitrary max message count per frame + _taskSpawned(0) +{ +} + +UOscDispatcher::UOscDispatcher(FVTableHelper & helper) +: _pendingMessages(0) +{ + // Does not need to be a valid object. +} + +UOscDispatcher * UOscDispatcher::Get() +{ + return UOscDispatcher::StaticClass()->GetDefaultObject(); +} + +void UOscDispatcher::Listen(FIPv4Address address, uint32_t port) +{ + if(_listening != std::make_pair(address, port)) + { + Stop(); + + FUdpSocketBuilder builder(TEXT("OscListener")); + builder.BoundToPort(port); + if(address.IsMulticastAddress()) + { + builder.JoinedToGroup(address); + } + else + { + builder.BoundToAddress(address); + } + + _socket = builder.Build(); + if(_socket) + { + _socketReceiver = new FUdpSocketReceiver(_socket, FTimespan::FromMilliseconds(100), TEXT("OSCListener")); + _socketReceiver->OnDataReceived().BindUObject(this, &UOscDispatcher::Callback); + _socketReceiver->Start(); + + _listening = std::make_pair(address, port); + UE_LOG(LogOSC, Display, TEXT("Listen to port %d"), port); + } + else + { + UE_LOG(LogOSC, Warning, TEXT("Cannot listen port %d"), port); + } + } +} + +void UOscDispatcher::Stop() +{ + UE_LOG(LogOSC, Display, TEXT("Stop listening")); + + delete _socketReceiver; + _socketReceiver = nullptr; + + if(_socket) + { + ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->DestroySocket(_socket); + _socket = nullptr; + } + + _listening = std::make_pair(FIPv4Address(0), 0); +} + +void UOscDispatcher::RegisterReceiver(IOscReceiverInterface * receiver) +{ + FScopeLock ScopeLock(&_receiversMutex); + _receivers.AddUnique(receiver); +} + +void UOscDispatcher::UnregisterReceiver(IOscReceiverInterface * receiver) +{ + FScopeLock ScopeLock(&_receiversMutex); + _receivers.Remove(receiver); +} + +static void SendMessage(TCircularQueue, FIPv4Address>> & _pendingMessages, + const osc::ReceivedMessage & message, + const FIPv4Address & senderIp) +{ + if(message.State() != osc::SUCCESS) + { + UE_LOG(LogOSC, Warning, TEXT("OSC Received Message Error: %s"), osc::errorString(message.State())); + return; + } + const FName address(message.AddressPattern()); + + TArray data; + + const auto argBegin = message.ArgumentsBegin(); + const auto argEnd = message.ArgumentsEnd(); + for(auto it = argBegin; it != argEnd; ++it) + { + FOscDataElemStruct elem; + if(it->IsFloat()) + { + elem.SetFloat(it->AsFloatUnchecked()); + } + else if(it->IsDouble()) + { + elem.SetFloat(it->AsDoubleUnchecked()); + } + else if(it->IsInt32()) + { + elem.SetInt(it->AsInt32Unchecked()); + } + else if(it->IsInt64()) + { + elem.SetInt(it->AsInt64Unchecked()); + } + else if(it->IsBool()) + { + osc::Errors error = osc::SUCCESS; + elem.SetBool(it->AsBoolUnchecked(error)); + check(error == osc::SUCCESS); + } + else if(it->IsString()) + { + elem.SetString(FName(it->AsStringUnchecked())); + } + data.Add(elem); + } + + // save it in pending messages + const auto added = _pendingMessages.Enqueue(std::make_tuple(address, data, senderIp)); + + // the circular buffer may be full. + if(!added) + { + UE_LOG(LogOSC, Warning, TEXT("Circular Buffer Full: Message Ignored")); + } +} + +static void SendBundle(TCircularQueue, FIPv4Address>> & _pendingMessages, + const osc::ReceivedBundle & bundle, + const FIPv4Address & senderIp) +{ + if(bundle.State() != osc::SUCCESS) + { + UE_LOG(LogOSC, Warning, TEXT("OSC Received Bundle Error: %s"), osc::errorString(bundle.State())); + return; + } + + const auto begin = bundle.ElementsBegin(); + const auto end = bundle.ElementsEnd(); + for(auto it = begin; it != end; ++it) + { + if(it->IsBundle()) + { + SendBundle(_pendingMessages, osc::ReceivedBundle(*it), senderIp); + } + else + { + SendMessage(_pendingMessages, osc::ReceivedMessage(*it), senderIp); + } + } +} + +void UOscDispatcher::Callback(const FArrayReaderPtr& data, const FIPv4Endpoint& endpoint) +{ + const osc::ReceivedPacket packet((const char *)data->GetData(), data->Num()); + if(packet.State() != osc::SUCCESS) + { + UE_LOG(LogOSC, Warning, TEXT("OSC Received Packet Error: %s"), osc::errorString(packet.State())); + return; + } + + if(packet.IsBundle()) + { + SendBundle(_pendingMessages, osc::ReceivedBundle(packet), endpoint.Address); + } + else + { + SendMessage(_pendingMessages, osc::ReceivedMessage(packet), endpoint.Address); + } + + // Set a single callback in the main thread per frame. + if(!_pendingMessages.IsEmpty() && !FPlatformAtomics::InterlockedCompareExchange(&_taskSpawned, 1, 0)) + { + check(_taskSpawned == 1); + FSimpleDelegateGraphTask::CreateAndDispatchWhenReady( + FSimpleDelegateGraphTask::FDelegate::CreateUObject(this, &UOscDispatcher::CallbackMainThread), + TStatId(), + nullptr, + ENamedThreads::GameThread); + } + +#if !NO_LOGGING + // Log received packet + if(!LogOSC.IsSuppressed(ELogVerbosity::Verbose)) + { + const auto encoded = FBase64::Encode(*data); + UE_LOG(LogOSC, Verbose, TEXT("Received: %s"), *encoded); + } +#endif +} + +void UOscDispatcher::CallbackMainThread() +{ + // Release before dequeue. + // If it was released after dequeue, when a message arrives after the while + // loop and before the release, it would not be processed. + check(_taskSpawned == 1); + FPlatformAtomics::InterlockedCompareExchange(&_taskSpawned, 0, 1); + + FScopeLock ScopeLock(&_receiversMutex); + + std::tuple, FIPv4Address> message; + while(_pendingMessages.Dequeue(message)) + { + const FIPv4Address & senderIp = std::get<2>(message); + FString senderIpStr = FString::Printf(TEXT("%i.%i.%i.%i"), senderIp.A, senderIp.B, senderIp.C, senderIp.D); + for(auto receiver : _receivers) + { + receiver->SendEvent(std::get<0>(message), std::get<1>(message), senderIpStr); + } + } +} + +void UOscDispatcher::BeginDestroy() +{ + Stop(); + Super::BeginDestroy(); +} diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscDispatcher.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscDispatcher.h new file mode 100644 index 0000000..4673b92 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscDispatcher.h @@ -0,0 +1,57 @@ +#pragma once + +#include "OscDataElemStruct.h" +#include "OscDispatcher.generated.h" + +struct IOscReceiverInterface; +class FSocket; +class FUdpSocketReceiver; + + +/// Singleton that dispatches the OSC messages to listeners. +UCLASS() +class UOscDispatcher : public UObject +{ + GENERATED_BODY() + + friend class FOscModule; + + void Listen(FIPv4Address address, uint32_t port); + void Stop(); + +public: + /// Default constructor + UOscDispatcher(); + + /// Hot reload constructor + UOscDispatcher(FVTableHelper & helper); + + /// Get the unique instance + /// + /// The instance is the UObject default instance. + static UOscDispatcher * Get(); + + /// Add the receiver in the listeners list + void RegisterReceiver(IOscReceiverInterface * receiver); + + /// Remove the receiver in the listeners list + void UnregisterReceiver(IOscReceiverInterface * receiver); + +private: + void Callback(const FArrayReaderPtr& data, const FIPv4Endpoint&); + + void CallbackMainThread(); + + void BeginDestroy() override; + +private: + TArray _receivers; + std::pair _listening; + FSocket * _socket; + FUdpSocketReceiver * _socketReceiver; + TCircularQueue, FIPv4Address>> _pendingMessages; + int32 _taskSpawned; + + /// Protects _receivers + FCriticalSection _receiversMutex; +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverActor.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverActor.cpp new file mode 100644 index 0000000..8624f5c --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverActor.cpp @@ -0,0 +1,35 @@ +#include "OscPrivatePCH.h" +#include "OscReceiverActor.h" +#include "OscDispatcher.h" + + +AOscReceiverActor::AOscReceiverActor() + : _listener(this) +{ + auto instance = UOscDispatcher::Get(); + if (instance && !HasAnyFlags(RF_ClassDefaultObject)) + { + instance->RegisterReceiver(&_listener); + + UE_LOG(LogOSC, Verbose, TEXT("Registering actor %s"), *GetName()); + } +} + +AOscReceiverActor::AOscReceiverActor(FVTableHelper & helper) + : _listener(this) +{ + // Does not need to be a valid object. +} + +void AOscReceiverActor::BeginDestroy() +{ + auto instance = UOscDispatcher::Get(); + if (instance && !HasAnyFlags(RF_ClassDefaultObject)) + { + instance->UnregisterReceiver(&_listener); + + UE_LOG(LogOSC, Verbose, TEXT("Unregistering actor %s"), *GetName()); + } + + Super::BeginDestroy(); +} diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverActor.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverActor.h new file mode 100644 index 0000000..4f5e939 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverActor.h @@ -0,0 +1,44 @@ +#pragma once + +#include "GameFramework/Actor.h" +#include "OscReceiverInterface.h" +#include "OscDataElemStruct.h" +#include "OscReceiverActor.generated.h" + + +UCLASS(ClassGroup=OSC) +class AOscReceiverActor : public AActor +{ + GENERATED_BODY() + +public: + + UPROPERTY(EditAnywhere, Category=OSC) + FString AddressFilter; + + UFUNCTION(BlueprintImplementableEvent, Category=OSC) + void OnOscReceived(const FName & Address, const TArray & Data, const FString & SenderIp); + +public: + + AOscReceiverActor(); + + /// Hot reload constructor + AOscReceiverActor(FVTableHelper & helper); + + const FString & GetAddressFilter() const + { + return AddressFilter; + } + + void SendEvent(const FName & Address, const TArray & Data, const FString & SenderIp) + { + OnOscReceived(Address, Data, SenderIp); + } + +private: + void BeginDestroy() override; + +private: + BasicOscReceiver _listener; +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverComponent.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverComponent.cpp new file mode 100644 index 0000000..ab4fbf7 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverComponent.cpp @@ -0,0 +1,60 @@ +#include "OscPrivatePCH.h" +#include "OscReceiverComponent.h" +#include "OscDispatcher.h" + + +UOscReceiverComponent::UOscReceiverComponent() + : _listener(this) +{ + +} + +UOscReceiverComponent::UOscReceiverComponent(FVTableHelper & helper) + : _listener(this) +{ + // Does not need to be a valid object. +} + +void UOscReceiverComponent::OnRegister() +{ + Super::OnRegister(); + + auto instance = UOscDispatcher::Get(); + if (instance && + !HasAnyFlags(RF_ClassDefaultObject) && + (!GetOwner() || !GetOwner()->HasAnyFlags(RF_ClassDefaultObject))) + { + instance->RegisterReceiver(&_listener); + + if(GetOwner()) + { + UE_LOG(LogOSC, Verbose, TEXT("Registering component %s of %s"), *GetName(), *GetOwner()->GetName()); + } + else + { + UE_LOG(LogOSC, Verbose, TEXT("Registering component %s"), *GetName()); + } + } +} + +void UOscReceiverComponent::OnUnregister() +{ + auto instance = UOscDispatcher::Get(); + if (instance && + !HasAnyFlags(RF_ClassDefaultObject) && + (!GetOwner() || !GetOwner()->HasAnyFlags(RF_ClassDefaultObject))) + { + instance->UnregisterReceiver(&_listener); + + if(GetOwner()) + { + UE_LOG(LogOSC, Verbose, TEXT("Unregistering component %s of %s"), *GetName(), *GetOwner()->GetName()); + } + else + { + UE_LOG(LogOSC, Verbose, TEXT("Unregistering component %s"), *GetName()); + } + } + + Super::OnUnregister(); +} diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverComponent.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverComponent.h new file mode 100644 index 0000000..bbe579c --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverComponent.h @@ -0,0 +1,50 @@ +#pragma once + +#include "Components/ActorComponent.h" +#include "OscReceiverInterface.h" +#include "OscDataElemStruct.h" +#include "OscReceiverComponent.generated.h" + + +// declare the OnOscReceived event type +DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FComponentOscReceivedSignature, const FName &, Address, const TArray &, Data, const FString &, SenderIp); + + +UCLASS(ClassGroup=OSC, meta = (BlueprintSpawnableComponent)) +class UOscReceiverComponent : public UActorComponent +{ + GENERATED_BODY() + +public: + + UPROPERTY(EditAnywhere, Category=OSC) + FString AddressFilter; + + UPROPERTY(BlueprintAssignable, Category=OSC) + FComponentOscReceivedSignature OnOscReceived; + +public: + + UOscReceiverComponent(); + + /// Hot reload constructor + UOscReceiverComponent(FVTableHelper & helper); + + const FString & GetAddressFilter() const + { + return AddressFilter; + } + + void SendEvent(const FName & Address, const TArray & Data, const FString & SenderIp) + { + OnOscReceived.Broadcast(Address, Data, SenderIp); + } + +private: + void OnRegister() override; + + void OnUnregister() override; + +private: + BasicOscReceiver _listener; +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInputKey.cpp b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInputKey.cpp new file mode 100644 index 0000000..2050405 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInputKey.cpp @@ -0,0 +1,62 @@ +#include "OscPrivatePCH.h" +#include "OscReceiverInputKey.h" +#include "OscDispatcher.h" + +#include "SlateBasics.h" + + +OscReceiverInputKey::OscReceiverInputKey(const FString &address) + : _address(address), + _addressName(*address) +{ + char buffer[512]; // address truncated after 500 chars. + const auto length = sprintf(buffer, "OSC%.500s", StringCast(*address).Get()); + + // replace '/' by '_' because '/' is not a valid FKey character. + for(int i=0; i!=length; ++i) + { + if(buffer[i] == '/') + { + buffer[i] = '_'; + } + } + + _key = FName(buffer); + + RegisterKey(); +} + +void OscReceiverInputKey::RegisterKey() const +{ + if(!_address.IsEmpty() && !EKeys::GetKeyDetails(_key).IsValid()) + { + EKeys::AddKey(FKeyDetails(_key, + FText::FromString(_key.ToString()), + FKeyDetails::FloatAxis)); + } +} + +void OscReceiverInputKey::SendEvent(const FName & Address, const TArray & Data, const FString & SenderIp) +{ + if(Address != _addressName) + { + return; + } + + auto & app = FSlateApplication::Get(); + + const auto value = Data.Num() ? Data[0].GetValue() : 0.f; + + FKeyEvent keyEvent(_key, app.GetModifierKeys(), 0, false, 0, 0); + if(value < 0.5f) + { + app.ProcessKeyDownEvent(keyEvent); + } + else + { + app.ProcessKeyUpEvent(keyEvent); + } + + FAnalogInputEvent axisEvent(_key, app.GetModifierKeys(), 0, false, 0, 0, value); + app.ProcessAnalogInputEvent(axisEvent); +} diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInputKey.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInputKey.h new file mode 100644 index 0000000..b775353 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInputKey.h @@ -0,0 +1,33 @@ +#pragma once + +#include "InputCoreTypes.h" + +#include "OscReceiverInterface.h" +#include "OscDataElemStruct.h" + + +class OscReceiverInputKey : public IOscReceiverInterface +{ +public: + OscReceiverInputKey(const FString & address); + + OscReceiverInputKey(const OscReceiverInputKey &) = delete; + OscReceiverInputKey& operator=(const OscReceiverInputKey &) = delete; + +private: + + /// Adds the custom input key to the Slate application. + void RegisterKey() const; + + const FString & GetAddressFilter() const override + { + return _address; + } + + void SendEvent(const FName & Address, const TArray & Data, const FString & SenderIp) override; + +private: + FString _address; + FName _addressName; + FKey _key; +}; diff --git a/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInterface.h b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInterface.h new file mode 100644 index 0000000..0901967 --- /dev/null +++ b/Examples/OscDemo/Plugins/OSC/Source/OSC/Private/Receive/OscReceiverInterface.h @@ -0,0 +1,33 @@ +#pragma once + +#include "OscDataElemStruct.h" + + +/// Base class to receive OSC messages. +struct IOscReceiverInterface +{ + virtual const FString & GetAddressFilter() const = 0; + virtual void SendEvent(const FName & Address, const TArray & Data, const FString & SenderIp) = 0; +}; + + +/// Forward calls to an impl object. +template +struct BasicOscReceiver : IOscReceiverInterface +{ + T * const _impl; + + BasicOscReceiver(T * impl) : _impl(impl) + { + } + + const FString & GetAddressFilter() const final + { + return _impl->GetAddressFilter(); + } + + void SendEvent(const FName & Address, const TArray & Data, const FString & SenderIp) final + { + _impl->SendEvent(Address, Data, SenderIp); + } +}; diff --git a/Examples/OscDemo/Source/OscDemo.Target.cs b/Examples/OscDemo/Source/OscDemo.Target.cs new file mode 100644 index 0000000..db48977 --- /dev/null +++ b/Examples/OscDemo/Source/OscDemo.Target.cs @@ -0,0 +1,25 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class OscDemoTarget : TargetRules +{ + public OscDemoTarget(TargetInfo Target) + { + Type = TargetType.Game; + } + + // + // TargetRules interface. + // + + public override void SetupBinaries( + TargetInfo Target, + ref List OutBuildBinaryConfigurations, + ref List OutExtraModuleNames + ) + { + OutExtraModuleNames.AddRange( new string[] { "OscDemo" } ); + } +} diff --git a/Examples/OscDemo/Source/OscDemo/OscDemo.Build.cs b/Examples/OscDemo/Source/OscDemo/OscDemo.Build.cs new file mode 100644 index 0000000..6fe9e01 --- /dev/null +++ b/Examples/OscDemo/Source/OscDemo/OscDemo.Build.cs @@ -0,0 +1,26 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; + +public class OscDemo : ModuleRules +{ + public OscDemo(TargetInfo Target) + { + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); + + PrivateDependencyModuleNames.AddRange(new string[] { }); + + // Uncomment if you are using Slate UI + // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); + + // Uncomment if you are using online features + // PrivateDependencyModuleNames.Add("OnlineSubsystem"); + // if ((Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Win64)) + // { + // if (UEBuildConfiguration.bCompileSteamOSS == true) + // { + // DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam"); + // } + // } + } +} diff --git a/Examples/OscDemo/Source/OscDemo/OscDemo.cpp b/Examples/OscDemo/Source/OscDemo/OscDemo.cpp new file mode 100644 index 0000000..30fad6c --- /dev/null +++ b/Examples/OscDemo/Source/OscDemo/OscDemo.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "OscDemo.h" + +IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, OscDemo, "OscDemo" ); diff --git a/Examples/OscDemo/Source/OscDemo/OscDemo.h b/Examples/OscDemo/Source/OscDemo/OscDemo.h new file mode 100644 index 0000000..3d85d22 --- /dev/null +++ b/Examples/OscDemo/Source/OscDemo/OscDemo.h @@ -0,0 +1,6 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "Engine.h" + diff --git a/Examples/OscDemo/Source/OscDemo/OscDemoGameMode.cpp b/Examples/OscDemo/Source/OscDemo/OscDemoGameMode.cpp new file mode 100644 index 0000000..6a21004 --- /dev/null +++ b/Examples/OscDemo/Source/OscDemo/OscDemoGameMode.cpp @@ -0,0 +1,8 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "OscDemo.h" +#include "OscDemoGameMode.h" + + + + diff --git a/Examples/OscDemo/Source/OscDemo/OscDemoGameMode.h b/Examples/OscDemo/Source/OscDemo/OscDemoGameMode.h new file mode 100644 index 0000000..34a8875 --- /dev/null +++ b/Examples/OscDemo/Source/OscDemo/OscDemoGameMode.h @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "GameFramework/GameMode.h" +#include "OscDemoGameMode.generated.h" + +/** + * + */ +UCLASS() +class OSCDEMO_API AOscDemoGameMode : public AGameMode +{ + GENERATED_BODY() + + + + +}; diff --git a/Examples/OscDemo/Source/OscDemoEditor.Target.cs b/Examples/OscDemo/Source/OscDemoEditor.Target.cs new file mode 100644 index 0000000..1628c47 --- /dev/null +++ b/Examples/OscDemo/Source/OscDemoEditor.Target.cs @@ -0,0 +1,25 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class OscDemoEditorTarget : TargetRules +{ + public OscDemoEditorTarget(TargetInfo Target) + { + Type = TargetType.Editor; + } + + // + // TargetRules interface. + // + + public override void SetupBinaries( + TargetInfo Target, + ref List OutBuildBinaryConfigurations, + ref List OutExtraModuleNames + ) + { + OutExtraModuleNames.AddRange( new string[] { "OscDemo" } ); + } +}