diff --git a/data/assets/examples/pointscloud.asset b/data/assets/examples/pointscloud.asset index 10617832c6..37b65c7ea3 100644 --- a/data/assets/examples/pointscloud.asset +++ b/data/assets/examples/pointscloud.asset @@ -2,22 +2,16 @@ local assetHelper = asset.require("util/asset_helper") -local speck = asset.syncedResource({ - Name = "PointsCloud Speck Files", - Type = "HttpSynchronization", - Identifier = "digitaluniverse_2mass_speck", - Version = 1 -}) - local RenderablePointsCloud = { Identifier = "RenderablePointsCloud", Renderable = { Type = "RenderablePointsCloud", Color = {1.0, 1.0, 0.5}, Data = {{0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}}, - File = speck .. "/2MASS.speck", + Luminosity = {0.0, 0.0, 0.0} Opacity = 0.0, Size = 0 + Velocity = {0.0, 0.0, 0.0} }, GUI = { Name = "Points Cloud", diff --git a/modules/softwareintegration/network/softwareconnection.cpp b/modules/softwareintegration/network/softwareconnection.cpp index 9e12f81525..87b4c24fed 100644 --- a/modules/softwareintegration/network/softwareconnection.cpp +++ b/modules/softwareintegration/network/softwareconnection.cpp @@ -130,8 +130,12 @@ namespace openspace { // And delegate decoding depending on message type if (type == "CONN") return Message(MessageType::Connection, messageBuffer); - if (type == "DATA") + else if (type == "DATA") return Message(MessageType::ReadPointData, messageBuffer); + else if (type == "LUMI") + return Message(MessageType::ReadLuminosityData, messageBuffer); + else if (type == "VELO") + return Message(MessageType::ReadVelocityData, messageBuffer); else if( type == "ASGN") return Message(MessageType::AddSceneGraphNode, messageBuffer); else if (type == "RSGN") diff --git a/modules/softwareintegration/network/softwareconnection.h b/modules/softwareintegration/network/softwareconnection.h index a53f4b4d9a..a7d70aba3f 100644 --- a/modules/softwareintegration/network/softwareconnection.h +++ b/modules/softwareintegration/network/softwareconnection.h @@ -40,6 +40,8 @@ public: enum class MessageType : uint32_t { Connection = 0, ReadPointData, + ReadLuminosityData, + ReadVelocityData, AddSceneGraphNode, RemoveSceneGraphNode, Color, diff --git a/modules/softwareintegration/rendering/renderablepointscloud.cpp b/modules/softwareintegration/rendering/renderablepointscloud.cpp index 1858465f1d..24d3a77c85 100644 --- a/modules/softwareintegration/rendering/renderablepointscloud.cpp +++ b/modules/softwareintegration/rendering/renderablepointscloud.cpp @@ -41,6 +41,8 @@ namespace { constexpr const char* ProgramName = "shaderProgram"; constexpr const char* _loggerCat = "PointsCloud"; constexpr const char* KeyData = "Data"; + constexpr const char* KeyLuminosity = "Luminosity"; + constexpr const char* KeyVelocity = "Velocity"; constexpr int8_t CurrentCacheVersion = 1; @@ -140,6 +142,16 @@ namespace openspace { _hasPointData = true; } + if (dictionary.hasKey(KeyLuminosity)) { + _luminosityData = dictionary.value>(KeyLuminosity); + _hasLuminosityData = true; + } + + if (dictionary.hasKey(KeyVelocity)) { + _velocityData = dictionary.value>(KeyVelocity); + _hasVelocityData = true; + } + if (dictionary.hasKey(OpacityInfo.identifier)) { _opacity = static_cast( dictionary.value(OpacityInfo.identifier)); diff --git a/modules/softwareintegration/rendering/renderablepointscloud.h b/modules/softwareintegration/rendering/renderablepointscloud.h index bb087f16b6..f63a6edfc9 100644 --- a/modules/softwareintegration/rendering/renderablepointscloud.h +++ b/modules/softwareintegration/rendering/renderablepointscloud.h @@ -61,6 +61,8 @@ protected: bool readPointData(); bool _hasPointData = false; + bool _hasLuminosityData = false; + bool _hasVelocityData = false; bool _isDirty = true; std::unique_ptr _shaderProgram = nullptr; @@ -71,6 +73,8 @@ protected: properties::Vec3Property _color; std::vector> _pointData; + std::vector _luminosityData; + std::vector _velocityData; std::vector _fullData; std::vector _slicedData; diff --git a/modules/softwareintegration/softwareintegrationmodule.cpp b/modules/softwareintegration/softwareintegrationmodule.cpp index 302936f4bb..db8be20560 100644 --- a/modules/softwareintegration/softwareintegrationmodule.cpp +++ b/modules/softwareintegration/softwareintegrationmodule.cpp @@ -191,6 +191,22 @@ namespace openspace { } break; } + case SoftwareConnection::MessageType::ReadLuminosityData: { + messageOffset = 0; // Resets message offset + + luminosityData.clear(); + luminosityData = readData(message); + + break; + } + case SoftwareConnection::MessageType::ReadVelocityData: { + messageOffset = 0; // Resets message offset + + velocityData.clear(); + velocityData = readData(message); + + break; + } case SoftwareConnection::MessageType::AddSceneGraphNode: { std::string identifier = readIdentifier(message); glm::vec3 color = readColor(message); diff --git a/modules/softwareintegration/softwareintegrationmodule.h b/modules/softwareintegration/softwareintegrationmodule.h index 4888948da9..17034a3269 100644 --- a/modules/softwareintegration/softwareintegrationmodule.h +++ b/modules/softwareintegration/softwareintegrationmodule.h @@ -84,6 +84,8 @@ private: std::string readGUI(std::vector& message); std::vector> pointData; + std::vector luminosityData; + std::vector velocityData; std::unordered_map> _peers; mutable std::mutex _peerListMutex;