diff --git a/libraries/models/src/ModelItem.cpp b/libraries/models/src/ModelItem.cpp index 810129a81f..b6f4fe6c1d 100644 --- a/libraries/models/src/ModelItem.cpp +++ b/libraries/models/src/ModelItem.cpp @@ -47,12 +47,6 @@ uint32_t ModelItem::getNextCreatorTokenID() { return creatorTokenID; } -uint32_t ModelItem::getNextModelItemID() { - uint32_t modelID = _nextID; - _nextID++; - return modelID; -} - void ModelItem::handleAddModelResponse(const QByteArray& packet) { const unsigned char* dataAt = reinterpret_cast(packet.data()); int numBytesPacketHeader = numBytesForPacketHeader(packet); @@ -76,10 +70,31 @@ ModelItem::ModelItem() { } ModelItem::ModelItem(const ModelItemID& modelItemID, const ModelItemProperties& properties) { + _id = modelItemID.id; _creatorTokenID = modelItemID.creatorTokenID; + + // init values with defaults before calling setProperties + uint64_t now = usecTimestampNow(); + _lastEdited = now; + _lastUpdated = now; + + _position = glm::vec3(0,0,0); + _radius = 0; + rgbColor noColor = { 0, 0, 0 }; + memcpy(_color, noColor, sizeof(_color)); + _shouldDie = false; + _modelURL = MODEL_DEFAULT_MODEL_URL; + _modelRotation = MODEL_DEFAULT_MODEL_ROTATION; - rgbColor defaultColor = { 0, 0, 0 }; - init(glm::vec3(), 0.0f, defaultColor, modelItemID.id); + // animation related + _animationURL = MODEL_DEFAULT_ANIMATION_URL; + _animationIsPlaying = false; + _animationFrameIndex = 0.0f; + _animationFPS = MODEL_DEFAULT_ANIMATION_FPS; + _glowLevel = 0.0f; + + _jointMappingCompleted = false; + _lastAnimated = now; setProperties(properties); } diff --git a/libraries/models/src/ModelItem.h b/libraries/models/src/ModelItem.h index 563d394419..9a558f2ef4 100644 --- a/libraries/models/src/ModelItem.h +++ b/libraries/models/src/ModelItem.h @@ -276,7 +276,6 @@ public: // these methods allow you to create models, and later edit them. static uint32_t getIDfromCreatorTokenID(uint32_t creatorTokenID); static uint32_t getNextCreatorTokenID(); - static uint32_t getNextModelItemID(); static void handleAddModelResponse(const QByteArray& packet); void mapJoints(const QStringList& modelJointNames); diff --git a/libraries/models/src/ModelsScriptingInterface.cpp b/libraries/models/src/ModelsScriptingInterface.cpp index f4cbf14086..7e08571fe5 100644 --- a/libraries/models/src/ModelsScriptingInterface.cpp +++ b/libraries/models/src/ModelsScriptingInterface.cpp @@ -28,9 +28,8 @@ ModelItemID ModelsScriptingInterface::addModel(const ModelItemProperties& proper // The application will keep track of creatorTokenID uint32_t creatorTokenID = ModelItem::getNextCreatorTokenID(); - uint32_t modelID = ModelItem::getNextModelItemID(); - ModelItemID id(modelID, creatorTokenID, false ); + ModelItemID id(NEW_MODEL, creatorTokenID, false ); // queue the packet queueModelMessage(PacketTypeModelAddOrEdit, id, properties);