mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 12:57:18 +02:00
started support for new entity base class properties like velocity, gravity, damping, and lifetime
This commit is contained in:
parent
a8188b39d7
commit
d50a607bc7
7 changed files with 204 additions and 256 deletions
|
@ -29,6 +29,15 @@
|
||||||
#include "EntityItem.h"
|
#include "EntityItem.h"
|
||||||
#include "EntityTree.h"
|
#include "EntityTree.h"
|
||||||
|
|
||||||
|
const float EntityItem::IMMORTAL = -1.0f; /// special lifetime which means the entity lives for ever. default lifetime
|
||||||
|
const float EntityItem::DEFAULT_GLOW_LEVEL = 0.0f;
|
||||||
|
const float EntityItem::DEFAULT_MASS = 1.0f;
|
||||||
|
const float EntityItem::DEFAULT_LIFETIME = EntityItem::IMMORTAL;
|
||||||
|
const float EntityItem::DEFAULT_DAMPING = 0.99f;
|
||||||
|
const glm::vec3 EntityItem::DEFAULT_VELOCITY = glm::vec3(0, 0, 0);
|
||||||
|
const glm::vec3 EntityItem::DEFAULT_GRAVITY = glm::vec3(0, (-9.8f / TREE_SCALE), 0);
|
||||||
|
const QString EntityItem::DEFAULT_SCRIPT = QString("");
|
||||||
|
|
||||||
void EntityItem::initFromEntityItemID(const EntityItemID& entityItemID) {
|
void EntityItem::initFromEntityItemID(const EntityItemID& entityItemID) {
|
||||||
_id = entityItemID.id;
|
_id = entityItemID.id;
|
||||||
_creatorTokenID = entityItemID.creatorTokenID;
|
_creatorTokenID = entityItemID.creatorTokenID;
|
||||||
|
@ -42,6 +51,13 @@ void EntityItem::initFromEntityItemID(const EntityItemID& entityItemID) {
|
||||||
_radius = 0;
|
_radius = 0;
|
||||||
_rotation = ENTITY_DEFAULT_ROTATION;
|
_rotation = ENTITY_DEFAULT_ROTATION;
|
||||||
_shouldBeDeleted = false;
|
_shouldBeDeleted = false;
|
||||||
|
|
||||||
|
_glowLevel = DEFAULT_GLOW_LEVEL;
|
||||||
|
_mass = DEFAULT_MASS;
|
||||||
|
_velocity = DEFAULT_VELOCITY;
|
||||||
|
_gravity = DEFAULT_GRAVITY;
|
||||||
|
_damping = DEFAULT_DAMPING;
|
||||||
|
_lifetime = DEFAULT_LIFETIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityItem::EntityItem(const EntityItemID& entityItemID, const EntityItemProperties& properties) {
|
EntityItem::EntityItem(const EntityItemID& entityItemID, const EntityItemProperties& properties) {
|
||||||
|
@ -219,129 +235,7 @@ qDebug() << "EntityItem::appendEntityData() ... lastEdited=" << lastEdited;
|
||||||
// PROP_SCRIPT
|
// PROP_SCRIPT
|
||||||
// script would go here...
|
// script would go here...
|
||||||
|
|
||||||
|
// TO DO - put all the other default items here!!!!
|
||||||
#if 0 // def HIDE_SUBCLASS_METHODS
|
|
||||||
// PROP_COLOR
|
|
||||||
if (requestedProperties.getHasProperty(PROP_COLOR)) {
|
|
||||||
//qDebug() << "PROP_COLOR requested...";
|
|
||||||
LevelDetails propertyLevel = packetData->startLevel();
|
|
||||||
successPropertyFits = packetData->appendColor(getColor());
|
|
||||||
if (successPropertyFits) {
|
|
||||||
propertyFlags |= PROP_COLOR;
|
|
||||||
propertiesDidntFit -= PROP_COLOR;
|
|
||||||
propertyCount++;
|
|
||||||
packetData->endLevel(propertyLevel);
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_COLOR didn't fit...";
|
|
||||||
packetData->discardLevel(propertyLevel);
|
|
||||||
appendState = OctreeElement::PARTIAL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_COLOR NOT requested...";
|
|
||||||
propertiesDidntFit -= PROP_COLOR;
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_MODEL_URL
|
|
||||||
if (requestedProperties.getHasProperty(PROP_MODEL_URL)) {
|
|
||||||
//qDebug() << "PROP_MODEL_URL requested...";
|
|
||||||
LevelDetails propertyLevel = packetData->startLevel();
|
|
||||||
successPropertyFits = packetData->appendValue(getModelURL());
|
|
||||||
if (successPropertyFits) {
|
|
||||||
propertyFlags |= PROP_MODEL_URL;
|
|
||||||
propertiesDidntFit -= PROP_MODEL_URL;
|
|
||||||
propertyCount++;
|
|
||||||
packetData->endLevel(propertyLevel);
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_MODEL_URL didn't fit...";
|
|
||||||
packetData->discardLevel(propertyLevel);
|
|
||||||
appendState = OctreeElement::PARTIAL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_MODEL_URL NOT requested...";
|
|
||||||
propertiesDidntFit -= PROP_MODEL_URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_ANIMATION_URL
|
|
||||||
if (requestedProperties.getHasProperty(PROP_ANIMATION_URL)) {
|
|
||||||
//qDebug() << "PROP_ANIMATION_URL requested...";
|
|
||||||
LevelDetails propertyLevel = packetData->startLevel();
|
|
||||||
successPropertyFits = packetData->appendValue(getAnimationURL());
|
|
||||||
if (successPropertyFits) {
|
|
||||||
propertyFlags |= PROP_ANIMATION_URL;
|
|
||||||
propertiesDidntFit -= PROP_ANIMATION_URL;
|
|
||||||
propertyCount++;
|
|
||||||
packetData->endLevel(propertyLevel);
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_ANIMATION_URL didn't fit...";
|
|
||||||
packetData->discardLevel(propertyLevel);
|
|
||||||
appendState = OctreeElement::PARTIAL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_ANIMATION_URL NOT requested...";
|
|
||||||
propertiesDidntFit -= PROP_ANIMATION_URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_ANIMATION_FPS
|
|
||||||
if (requestedProperties.getHasProperty(PROP_ANIMATION_FPS)) {
|
|
||||||
//qDebug() << "PROP_ANIMATION_FPS requested...";
|
|
||||||
LevelDetails propertyLevel = packetData->startLevel();
|
|
||||||
successPropertyFits = packetData->appendValue(getAnimationFPS());
|
|
||||||
if (successPropertyFits) {
|
|
||||||
propertyFlags |= PROP_ANIMATION_FPS;
|
|
||||||
propertiesDidntFit -= PROP_ANIMATION_FPS;
|
|
||||||
propertyCount++;
|
|
||||||
packetData->endLevel(propertyLevel);
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_ANIMATION_FPS didn't fit...";
|
|
||||||
packetData->discardLevel(propertyLevel);
|
|
||||||
appendState = OctreeElement::PARTIAL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_ANIMATION_FPS NOT requested...";
|
|
||||||
propertiesDidntFit -= PROP_ANIMATION_FPS;
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_ANIMATION_FRAME_INDEX
|
|
||||||
if (requestedProperties.getHasProperty(PROP_ANIMATION_FRAME_INDEX)) {
|
|
||||||
//qDebug() << "PROP_ANIMATION_FRAME_INDEX requested...";
|
|
||||||
LevelDetails propertyLevel = packetData->startLevel();
|
|
||||||
successPropertyFits = packetData->appendValue(getAnimationFrameIndex());
|
|
||||||
if (successPropertyFits) {
|
|
||||||
propertyFlags |= PROP_ANIMATION_FRAME_INDEX;
|
|
||||||
propertiesDidntFit -= PROP_ANIMATION_FRAME_INDEX;
|
|
||||||
propertyCount++;
|
|
||||||
packetData->endLevel(propertyLevel);
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_ANIMATION_FRAME_INDEX didn't fit...";
|
|
||||||
packetData->discardLevel(propertyLevel);
|
|
||||||
appendState = OctreeElement::PARTIAL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_ANIMATION_FRAME_INDEX NOT requested...";
|
|
||||||
propertiesDidntFit -= PROP_ANIMATION_FRAME_INDEX;
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_ANIMATION_PLAYING
|
|
||||||
if (requestedProperties.getHasProperty(PROP_ANIMATION_PLAYING)) {
|
|
||||||
//qDebug() << "PROP_ANIMATION_PLAYING requested...";
|
|
||||||
LevelDetails propertyLevel = packetData->startLevel();
|
|
||||||
successPropertyFits = packetData->appendValue(getAnimationIsPlaying());
|
|
||||||
if (successPropertyFits) {
|
|
||||||
propertyFlags |= PROP_ANIMATION_PLAYING;
|
|
||||||
propertiesDidntFit -= PROP_ANIMATION_PLAYING;
|
|
||||||
propertyCount++;
|
|
||||||
packetData->endLevel(propertyLevel);
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_ANIMATION_PLAYING didn't fit...";
|
|
||||||
packetData->discardLevel(propertyLevel);
|
|
||||||
appendState = OctreeElement::PARTIAL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//qDebug() << "PROP_ANIMATION_PLAYING NOT requested...";
|
|
||||||
propertiesDidntFit -= PROP_ANIMATION_PLAYING;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif //def HIDE_SUBCLASS_METHODS
|
|
||||||
}
|
}
|
||||||
if (propertyCount > 0) {
|
if (propertyCount > 0) {
|
||||||
int endOfEntityItemData = packetData->getUncompressedByteOffset();
|
int endOfEntityItemData = packetData->getUncompressedByteOffset();
|
||||||
|
@ -542,82 +436,6 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
||||||
// PROP_SCRIPT
|
// PROP_SCRIPT
|
||||||
// script would go here...
|
// script would go here...
|
||||||
|
|
||||||
|
|
||||||
#if 0 //def HIDE_SUBCLASS_METHODS
|
|
||||||
// PROP_COLOR
|
|
||||||
if (propertyFlags.getHasProperty(PROP_COLOR)) {
|
|
||||||
rgbColor color;
|
|
||||||
if (overwriteLocalData) {
|
|
||||||
memcpy(_color, dataAt, sizeof(_color));
|
|
||||||
}
|
|
||||||
dataAt += sizeof(color);
|
|
||||||
bytesRead += sizeof(color);
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_MODEL_URL
|
|
||||||
if (propertyFlags.getHasProperty(PROP_MODEL_URL)) {
|
|
||||||
|
|
||||||
// TODO: fix to new format...
|
|
||||||
uint16_t modelURLLength;
|
|
||||||
memcpy(&modelURLLength, dataAt, sizeof(modelURLLength));
|
|
||||||
dataAt += sizeof(modelURLLength);
|
|
||||||
bytesRead += sizeof(modelURLLength);
|
|
||||||
QString modelURLString((const char*)dataAt);
|
|
||||||
dataAt += modelURLLength;
|
|
||||||
bytesRead += modelURLLength;
|
|
||||||
if (overwriteLocalData) {
|
|
||||||
setModelURL(modelURLString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_ANIMATION_URL
|
|
||||||
if (propertyFlags.getHasProperty(PROP_ANIMATION_URL)) {
|
|
||||||
// animationURL
|
|
||||||
uint16_t animationURLLength;
|
|
||||||
memcpy(&animationURLLength, dataAt, sizeof(animationURLLength));
|
|
||||||
dataAt += sizeof(animationURLLength);
|
|
||||||
bytesRead += sizeof(animationURLLength);
|
|
||||||
QString animationURLString((const char*)dataAt);
|
|
||||||
dataAt += animationURLLength;
|
|
||||||
bytesRead += animationURLLength;
|
|
||||||
if (overwriteLocalData) {
|
|
||||||
setAnimationURL(animationURLString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_ANIMATION_FPS
|
|
||||||
if (propertyFlags.getHasProperty(PROP_ANIMATION_FPS)) {
|
|
||||||
float animationFPS;
|
|
||||||
memcpy(&animationFPS, dataAt, sizeof(animationFPS));
|
|
||||||
dataAt += sizeof(animationFPS);
|
|
||||||
bytesRead += sizeof(animationFPS);
|
|
||||||
if (overwriteLocalData) {
|
|
||||||
_animationFPS = animationFPS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_ANIMATION_FRAME_INDEX
|
|
||||||
if (propertyFlags.getHasProperty(PROP_ANIMATION_FRAME_INDEX)) {
|
|
||||||
float animationFrameIndex;
|
|
||||||
memcpy(&animationFrameIndex, dataAt, sizeof(animationFrameIndex));
|
|
||||||
dataAt += sizeof(animationFrameIndex);
|
|
||||||
bytesRead += sizeof(animationFrameIndex);
|
|
||||||
if (overwriteLocalData) {
|
|
||||||
_animationFrameIndex = animationFrameIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROP_ANIMATION_PLAYING
|
|
||||||
if (propertyFlags.getHasProperty(PROP_ANIMATION_PLAYING)) {
|
|
||||||
bool animationIsPlaying;
|
|
||||||
memcpy(&animationIsPlaying, dataAt, sizeof(animationIsPlaying));
|
|
||||||
dataAt += sizeof(animationIsPlaying);
|
|
||||||
bytesRead += sizeof(animationIsPlaying);
|
|
||||||
if (overwriteLocalData) {
|
|
||||||
_animationIsPlaying = animationIsPlaying;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return bytesRead;
|
return bytesRead;
|
||||||
}
|
}
|
||||||
|
@ -628,15 +446,6 @@ void EntityItem::debugDump() const {
|
||||||
qDebug(" should die:%s", debug::valueOf(getShouldBeDeleted()));
|
qDebug(" should die:%s", debug::valueOf(getShouldBeDeleted()));
|
||||||
qDebug(" position:%f,%f,%f", _position.x, _position.y, _position.z);
|
qDebug(" position:%f,%f,%f", _position.x, _position.y, _position.z);
|
||||||
qDebug(" radius:%f", getRadius());
|
qDebug(" radius:%f", getRadius());
|
||||||
|
|
||||||
#if 0 //def HIDE_SUBCLASS_METHODS
|
|
||||||
qDebug(" color:%d,%d,%d", _color[0], _color[1], _color[2]);
|
|
||||||
if (!getModelURL().isEmpty()) {
|
|
||||||
qDebug() << " modelURL:" << qPrintable(getModelURL());
|
|
||||||
} else {
|
|
||||||
qDebug() << " modelURL: NONE";
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -846,14 +655,98 @@ qDebug() << "EntityItem::encodeEntityEditMessageDetails() ... lastEdited=" << la
|
||||||
//qDebug() << "PROP_SHOULD_BE_DELETED NOT requested...";
|
//qDebug() << "PROP_SHOULD_BE_DELETED NOT requested...";
|
||||||
propertiesDidntFit -= PROP_SHOULD_BE_DELETED;
|
propertiesDidntFit -= PROP_SHOULD_BE_DELETED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PROP_MASS,
|
||||||
|
if (requestedProperties.getHasProperty(PROP_MASS)) {
|
||||||
|
LevelDetails propertyLevel = packetData.startLevel();
|
||||||
|
successPropertyFits = packetData.appendValue(properties.getMass());
|
||||||
|
if (successPropertyFits) {
|
||||||
|
propertyFlags |= PROP_MASS;
|
||||||
|
propertiesDidntFit -= PROP_MASS;
|
||||||
|
propertyCount++;
|
||||||
|
packetData.endLevel(propertyLevel);
|
||||||
|
} else {
|
||||||
|
packetData.discardLevel(propertyLevel);
|
||||||
|
appendState = OctreeElement::PARTIAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
propertiesDidntFit -= PROP_MASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PROP_VELOCITY,
|
||||||
|
if (requestedProperties.getHasProperty(PROP_VELOCITY)) {
|
||||||
|
LevelDetails propertyLevel = packetData.startLevel();
|
||||||
|
successPropertyFits = packetData.appendValue(properties.getVelocity());
|
||||||
|
if (successPropertyFits) {
|
||||||
|
propertyFlags |= PROP_VELOCITY;
|
||||||
|
propertiesDidntFit -= PROP_VELOCITY;
|
||||||
|
propertyCount++;
|
||||||
|
packetData.endLevel(propertyLevel);
|
||||||
|
} else {
|
||||||
|
packetData.discardLevel(propertyLevel);
|
||||||
|
appendState = OctreeElement::PARTIAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
propertiesDidntFit -= PROP_VELOCITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PROP_GRAVITY,
|
||||||
|
if (requestedProperties.getHasProperty(PROP_GRAVITY)) {
|
||||||
|
LevelDetails propertyLevel = packetData.startLevel();
|
||||||
|
successPropertyFits = packetData.appendValue(properties.getGravity());
|
||||||
|
if (successPropertyFits) {
|
||||||
|
propertyFlags |= PROP_GRAVITY;
|
||||||
|
propertiesDidntFit -= PROP_GRAVITY;
|
||||||
|
propertyCount++;
|
||||||
|
packetData.endLevel(propertyLevel);
|
||||||
|
} else {
|
||||||
|
packetData.discardLevel(propertyLevel);
|
||||||
|
appendState = OctreeElement::PARTIAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
propertiesDidntFit -= PROP_GRAVITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PROP_DAMPING,
|
||||||
|
if (requestedProperties.getHasProperty(PROP_DAMPING)) {
|
||||||
|
LevelDetails propertyLevel = packetData.startLevel();
|
||||||
|
successPropertyFits = packetData.appendValue(properties.getDamping());
|
||||||
|
if (successPropertyFits) {
|
||||||
|
propertyFlags |= PROP_DAMPING;
|
||||||
|
propertiesDidntFit -= PROP_DAMPING;
|
||||||
|
propertyCount++;
|
||||||
|
packetData.endLevel(propertyLevel);
|
||||||
|
} else {
|
||||||
|
packetData.discardLevel(propertyLevel);
|
||||||
|
appendState = OctreeElement::PARTIAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
propertiesDidntFit -= PROP_DAMPING;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PROP_LIFETIME,
|
||||||
|
if (requestedProperties.getHasProperty(PROP_LIFETIME)) {
|
||||||
|
LevelDetails propertyLevel = packetData.startLevel();
|
||||||
|
successPropertyFits = packetData.appendValue(properties.getLifetime());
|
||||||
|
if (successPropertyFits) {
|
||||||
|
propertyFlags |= PROP_LIFETIME;
|
||||||
|
propertiesDidntFit -= PROP_LIFETIME;
|
||||||
|
propertyCount++;
|
||||||
|
packetData.endLevel(propertyLevel);
|
||||||
|
} else {
|
||||||
|
packetData.discardLevel(propertyLevel);
|
||||||
|
appendState = OctreeElement::PARTIAL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
propertiesDidntFit -= PROP_LIFETIME;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// PROP_SCRIPT
|
// PROP_SCRIPT
|
||||||
// script would go here...
|
// script would go here...
|
||||||
|
|
||||||
|
|
||||||
//#if 0 // def HIDE_SUBCLASS_METHODS
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// TODO: move these??? how to handle this for subclass properties???
|
// TODO: move these??? how to handle this for subclass properties???
|
||||||
|
|
||||||
// PROP_COLOR
|
// PROP_COLOR
|
||||||
|
@ -978,7 +871,6 @@ qDebug() << "EntityItem EntityItem::encodeEntityEditMessageDetails() model URL="
|
||||||
propertiesDidntFit -= PROP_ANIMATION_PLAYING;
|
propertiesDidntFit -= PROP_ANIMATION_PLAYING;
|
||||||
}
|
}
|
||||||
|
|
||||||
//#endif //def HIDE_SUBCLASS_METHODS
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,6 @@ public:
|
||||||
// similar to assignment/copy, but it handles keeping lifetime accurate
|
// similar to assignment/copy, but it handles keeping lifetime accurate
|
||||||
void copyChangedProperties(const EntityItem& other);
|
void copyChangedProperties(const EntityItem& other);
|
||||||
|
|
||||||
|
|
||||||
// attributes applicable to all entity types
|
// attributes applicable to all entity types
|
||||||
EntityTypes::EntityType getType() const { return _type; }
|
EntityTypes::EntityType getType() const { return _type; }
|
||||||
const glm::vec3& getPosition() const { return _position; } /// get position in domain scale units (0.0 - 1.0)
|
const glm::vec3& getPosition() const { return _position; } /// get position in domain scale units (0.0 - 1.0)
|
||||||
|
@ -99,17 +98,50 @@ public:
|
||||||
bool getShouldBeDeleted() const { return _shouldBeDeleted; }
|
bool getShouldBeDeleted() const { return _shouldBeDeleted; }
|
||||||
void setShouldBeDeleted(bool shouldBeDeleted) { _shouldBeDeleted = shouldBeDeleted; }
|
void setShouldBeDeleted(bool shouldBeDeleted) { _shouldBeDeleted = shouldBeDeleted; }
|
||||||
|
|
||||||
|
static const float DEFAULT_GLOW_LEVEL;
|
||||||
float getGlowLevel() const { return _glowLevel; }
|
float getGlowLevel() const { return _glowLevel; }
|
||||||
void setGlowLevel(float glowLevel) { _glowLevel = glowLevel; }
|
void setGlowLevel(float glowLevel) { _glowLevel = glowLevel; }
|
||||||
|
|
||||||
|
static const float DEFAULT_MASS;
|
||||||
|
float getMass() const { return _mass; }
|
||||||
|
void setMass(float value) { _mass = value; }
|
||||||
|
|
||||||
|
static const glm::vec3 DEFAULT_VELOCITY;
|
||||||
|
const glm::vec3& getVelocity() const { return _velocity; } /// velocity in domain scale units (0.0-1.0) per second
|
||||||
|
void setVelocity(const glm::vec3& value) { _velocity = value; } /// velocity in domain scale units (0.0-1.0) per second
|
||||||
|
|
||||||
|
static const glm::vec3 DEFAULT_GRAVITY;
|
||||||
|
const glm::vec3& getGravity() const { return _gravity; } /// gravity in domain scale units (0.0-1.0) per second squared
|
||||||
|
void setGravity(const glm::vec3& value) { _gravity = value; } /// gravity in domain scale units (0.0-1.0) per second squared
|
||||||
|
|
||||||
|
static const float DEFAULT_DAMPING;
|
||||||
|
float getDamping() const { return _damping; }
|
||||||
|
void setDamping(float value) { _damping = value; }
|
||||||
|
|
||||||
|
// lifetime related properties.
|
||||||
|
static const float IMMORTAL; /// special lifetime which means the entity lives for ever. default lifetime
|
||||||
|
static const float DEFAULT_LIFETIME;
|
||||||
|
float getLifetime() const { return _lifetime; } /// get the lifetime in seconds for the entity
|
||||||
|
void setLifetime(float value) { _lifetime = value; } /// set the lifetime in seconds for the entity
|
||||||
|
|
||||||
|
/// is this entity immortal, in that it has no lifetime set, and will exist until manually deleted
|
||||||
|
bool isImmortal() const { return _lifetime == IMMORTAL; }
|
||||||
|
|
||||||
|
/// is this entity mortal, in that it has a lifetime set, and will automatically be deleted when that lifetime expires
|
||||||
|
bool isMortal() const { return _lifetime != IMMORTAL; }
|
||||||
|
|
||||||
|
/// age of this entity in seconds
|
||||||
|
float getAge() const { return (float)(usecTimestampNow() - _created) / (float)USECS_PER_SECOND; }
|
||||||
|
|
||||||
// position, size, and bounds related helpers
|
// position, size, and bounds related helpers
|
||||||
float getSize() const { return _radius * 2.0f; } /// get maximum dimension in domain scale units (0.0 - 1.0)
|
float getSize() const { return _radius * 2.0f; } /// get maximum dimension in domain scale units (0.0 - 1.0)
|
||||||
glm::vec3 getMinimumPoint() const { return _position - glm::vec3(_radius, _radius, _radius); }
|
glm::vec3 getMinimumPoint() const { return _position - glm::vec3(_radius, _radius, _radius); }
|
||||||
glm::vec3 getMaximumPoint() const { return _position + glm::vec3(_radius, _radius, _radius); }
|
glm::vec3 getMaximumPoint() const { return _position + glm::vec3(_radius, _radius, _radius); }
|
||||||
AACube getAACube() const { return AACube(getMinimumPoint(), getSize()); } /// AACube in domain scale units (0.0 - 1.0)
|
AACube getAACube() const { return AACube(getMinimumPoint(), getSize()); } /// AACube in domain scale units (0.0 - 1.0)
|
||||||
|
|
||||||
|
static const QString DEFAULT_SCRIPT;
|
||||||
|
const QString& getScript() const { return _script; }
|
||||||
|
void setScript(const QString& value) { _script = value; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void initFromEntityItemID(const EntityItemID& entityItemID); // maybe useful to allow subclasses to init
|
virtual void initFromEntityItemID(const EntityItemID& entityItemID); // maybe useful to allow subclasses to init
|
||||||
|
@ -120,12 +152,19 @@ protected:
|
||||||
bool _newlyCreated;
|
bool _newlyCreated;
|
||||||
quint64 _lastUpdated;
|
quint64 _lastUpdated;
|
||||||
quint64 _lastEdited;
|
quint64 _lastEdited;
|
||||||
|
quint64 _created;
|
||||||
|
|
||||||
glm::vec3 _position;
|
glm::vec3 _position;
|
||||||
float _radius;
|
float _radius;
|
||||||
glm::quat _rotation;
|
glm::quat _rotation;
|
||||||
bool _shouldBeDeleted;
|
bool _shouldBeDeleted;
|
||||||
float _glowLevel;
|
float _glowLevel;
|
||||||
|
float _mass;
|
||||||
|
glm::vec3 _velocity;
|
||||||
|
glm::vec3 _gravity;
|
||||||
|
float _damping;
|
||||||
|
float _lifetime;
|
||||||
|
QString _script;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SphereEntityItem : public EntityItem {
|
class SphereEntityItem : public EntityItem {
|
||||||
|
|
|
@ -12,8 +12,6 @@
|
||||||
#ifndef hifi_EntityItemProperties_h
|
#ifndef hifi_EntityItemProperties_h
|
||||||
#define hifi_EntityItemProperties_h
|
#define hifi_EntityItemProperties_h
|
||||||
|
|
||||||
#define HIDE_SUBCLASS_METHODS 1
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
|
@ -33,17 +31,7 @@
|
||||||
#include "EntityTypes.h"
|
#include "EntityTypes.h"
|
||||||
|
|
||||||
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_RADIUS = 1;
|
// TODO: should these be static members of EntityItem or EntityItemProperties?
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_POSITION = 2;
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_COLOR = 4;
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_SHOULDDIE = 8;
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_MODEL_URL = 16;
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_ROTATION = 32;
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_ANIMATION_URL = 64;
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_ANIMATION_PLAYING = 128;
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_ANIMATION_FRAME = 256;
|
|
||||||
const uint16_t ENTITY_PACKET_CONTAINS_ANIMATION_FPS = 512;
|
|
||||||
|
|
||||||
const float ENTITY_DEFAULT_RADIUS = 0.1f / TREE_SCALE;
|
const float ENTITY_DEFAULT_RADIUS = 0.1f / TREE_SCALE;
|
||||||
const float ENTITY_MINIMUM_ELEMENT_SIZE = (1.0f / 100000.0f) / TREE_SCALE; // smallest size container
|
const float ENTITY_MINIMUM_ELEMENT_SIZE = (1.0f / 100000.0f) / TREE_SCALE; // smallest size container
|
||||||
const QString ENTITY_DEFAULT_MODEL_URL("");
|
const QString ENTITY_DEFAULT_MODEL_URL("");
|
||||||
|
@ -55,13 +43,22 @@ const float ENTITY_DEFAULT_ANIMATION_FPS = 30.0f;
|
||||||
enum EntityPropertyList {
|
enum EntityPropertyList {
|
||||||
PROP_PAGED_PROPERTY,
|
PROP_PAGED_PROPERTY,
|
||||||
PROP_CUSTOM_PROPERTIES_INCLUDED,
|
PROP_CUSTOM_PROPERTIES_INCLUDED,
|
||||||
|
|
||||||
|
// these properties are supported by the EntityItem base class
|
||||||
PROP_VISIBLE,
|
PROP_VISIBLE,
|
||||||
PROP_POSITION,
|
PROP_POSITION,
|
||||||
PROP_RADIUS,
|
PROP_RADIUS,
|
||||||
PROP_ROTATION,
|
PROP_ROTATION,
|
||||||
|
PROP_MASS,
|
||||||
|
PROP_VELOCITY,
|
||||||
|
PROP_GRAVITY,
|
||||||
|
PROP_DAMPING,
|
||||||
|
PROP_LIFETIME,
|
||||||
PROP_SCRIPT,
|
PROP_SCRIPT,
|
||||||
PROP_MODEL_URL,
|
|
||||||
|
// these properties are supported by some derived classes
|
||||||
PROP_COLOR,
|
PROP_COLOR,
|
||||||
|
PROP_MODEL_URL,
|
||||||
PROP_ANIMATION_URL,
|
PROP_ANIMATION_URL,
|
||||||
PROP_ANIMATION_FPS,
|
PROP_ANIMATION_FPS,
|
||||||
PROP_ANIMATION_FRAME_INDEX,
|
PROP_ANIMATION_FRAME_INDEX,
|
||||||
|
@ -133,15 +130,29 @@ public:
|
||||||
void setRadius(float value) { _radius = value; _radiusChanged = true; }
|
void setRadius(float value) { _radius = value; _radiusChanged = true; }
|
||||||
void setRotation(const glm::quat& rotation) { _rotation = rotation; _rotationChanged = true; }
|
void setRotation(const glm::quat& rotation) { _rotation = rotation; _rotationChanged = true; }
|
||||||
void setShouldBeDeleted(bool shouldBeDeleted) { _shouldBeDeleted = shouldBeDeleted; _shouldBeDeletedChanged = true; }
|
void setShouldBeDeleted(bool shouldBeDeleted) { _shouldBeDeleted = shouldBeDeleted; _shouldBeDeletedChanged = true; }
|
||||||
|
|
||||||
|
float getMass() const { return _mass; }
|
||||||
|
void setMass(float value) { _mass = value; }
|
||||||
|
|
||||||
|
const glm::vec3& getVelocity() const { return _velocity; } /// velocity in domain scale units (0.0-1.0) per second
|
||||||
|
void setVelocity(const glm::vec3& value) { _velocity = value; } /// velocity in domain scale units (0.0-1.0) per second
|
||||||
|
|
||||||
|
const glm::vec3& getGravity() const { return _gravity; } /// gravity in domain scale units (0.0-1.0) per second squared
|
||||||
|
void setGravity(const glm::vec3& value) { _gravity = value; } /// gravity in domain scale units (0.0-1.0) per second squared
|
||||||
|
|
||||||
|
float getDamping() const { return _damping; }
|
||||||
|
void setDamping(float value) { _damping = value; }
|
||||||
|
|
||||||
|
float getLifetime() const { return _lifetime; } /// get the lifetime in seconds for the entity
|
||||||
|
void setLifetime(float value) { _lifetime = value; } /// set the lifetime in seconds for the entity
|
||||||
|
|
||||||
// NOTE: how do we handle _defaultSettings???
|
// NOTE: how do we handle _defaultSettings???
|
||||||
bool containsBoundsProperties() const { return (_positionChanged || _radiusChanged); }
|
bool containsBoundsProperties() const { return (_positionChanged || _radiusChanged); }
|
||||||
bool containsPositionChange() const { return _positionChanged; }
|
bool containsPositionChange() const { return _positionChanged; }
|
||||||
bool containsRadiusChange() const { return _radiusChanged; }
|
bool containsRadiusChange() const { return _radiusChanged; }
|
||||||
|
|
||||||
// TODO: this need to be more generic. for now, we're going to have the properties class support these as
|
// TODO: this need to be more generic. for now, we're going to have the properties class support these as
|
||||||
// named getter/setters, but we want to move them to generic types...
|
// named getter/setters, but we want to move them to generic types...
|
||||||
//#ifdef HIDE_SUBCLASS_METHODS
|
|
||||||
// properties we want to move to just models and particles
|
// properties we want to move to just models and particles
|
||||||
xColor getColor() const { return _color; }
|
xColor getColor() const { return _color; }
|
||||||
const QString& getModelURL() const { return _modelURL; }
|
const QString& getModelURL() const { return _modelURL; }
|
||||||
|
@ -159,7 +170,6 @@ public:
|
||||||
void setAnimationIsPlaying(bool value) { _animationIsPlaying = value; _animationIsPlayingChanged = true; }
|
void setAnimationIsPlaying(bool value) { _animationIsPlaying = value; _animationIsPlayingChanged = true; }
|
||||||
void setAnimationFPS(float value) { _animationFPS = value; _animationFPSChanged = true; }
|
void setAnimationFPS(float value) { _animationFPS = value; _animationFPSChanged = true; }
|
||||||
void setGlowLevel(float value) { _glowLevel = value; _glowLevelChanged = true; }
|
void setGlowLevel(float value) { _glowLevel = value; _glowLevelChanged = true; }
|
||||||
//#endif
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend bool EntityTypes::decodeEntityEditPacket(const unsigned char* data, int bytesToRead, int& processedBytes,
|
friend bool EntityTypes::decodeEntityEditPacket(const unsigned char* data, int bytesToRead, int& processedBytes,
|
||||||
|
@ -175,15 +185,20 @@ private:
|
||||||
float _radius;
|
float _radius;
|
||||||
glm::quat _rotation;
|
glm::quat _rotation;
|
||||||
bool _shouldBeDeleted;
|
bool _shouldBeDeleted;
|
||||||
|
float _mass;
|
||||||
|
glm::vec3 _velocity;
|
||||||
|
glm::vec3 _gravity;
|
||||||
|
float _damping;
|
||||||
|
float _lifetime;
|
||||||
|
QString _script;
|
||||||
|
|
||||||
bool _positionChanged;
|
bool _positionChanged;
|
||||||
bool _radiusChanged;
|
bool _radiusChanged;
|
||||||
bool _rotationChanged;
|
bool _rotationChanged;
|
||||||
bool _shouldBeDeletedChanged;
|
bool _shouldBeDeletedChanged;
|
||||||
|
|
||||||
// TODO: this need to be more generic. for now, we're going to have the properties class support these as
|
// TODO: this need to be more generic. for now, we're going to have the properties class support these as
|
||||||
// named getter/setters, but we want to move them to generic types...
|
// named getter/setters, but we want to move them to generic types...
|
||||||
//#ifdef HIDE_SUBCLASS_METHODS
|
|
||||||
xColor _color;
|
xColor _color;
|
||||||
QString _modelURL;
|
QString _modelURL;
|
||||||
QString _animationURL;
|
QString _animationURL;
|
||||||
|
@ -200,7 +215,6 @@ private:
|
||||||
bool _animationFrameIndexChanged;
|
bool _animationFrameIndexChanged;
|
||||||
bool _animationFPSChanged;
|
bool _animationFPSChanged;
|
||||||
bool _glowLevelChanged;
|
bool _glowLevelChanged;
|
||||||
//#endif
|
|
||||||
|
|
||||||
bool _defaultSettings;
|
bool _defaultSettings;
|
||||||
};
|
};
|
||||||
|
|
|
@ -290,13 +290,10 @@ qDebug() << "EntityTypes::decodeEntityEditPacket() ... lastEdited=" << lastEdite
|
||||||
// script would go here...
|
// script would go here...
|
||||||
|
|
||||||
|
|
||||||
//#ifdef HIDE_SUBCLASS_METHODS
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// TODO: this needs to be reconciled...
|
// TODO: this needs to be reconciled...
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// PROP_COLOR
|
// PROP_COLOR
|
||||||
if (propertyFlags.getHasProperty(PROP_COLOR)) {
|
if (propertyFlags.getHasProperty(PROP_COLOR)) {
|
||||||
xColor color;
|
xColor color;
|
||||||
|
@ -364,7 +361,6 @@ qDebug() << "EntityTypes::decodeEntityEditPacket() ... lastEdited=" << lastEdite
|
||||||
processedBytes += sizeof(animationIsPlaying);
|
processedBytes += sizeof(animationIsPlaying);
|
||||||
properties.setAnimationIsPlaying(animationIsPlaying);
|
properties.setAnimationIsPlaying(animationIsPlaying);
|
||||||
}
|
}
|
||||||
//#endif
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
const bool wantDebugging = false;
|
const bool wantDebugging = false;
|
||||||
|
@ -378,10 +374,6 @@ qDebug() << "EntityTypes::decodeEntityEditPacket() ... lastEdited=" << lastEdite
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EntityTypes::registerEntityTypeRenderer(EntityType entityType, EntityTypeRenderer renderMethod) {
|
bool EntityTypes::registerEntityTypeRenderer(EntityType entityType, EntityTypeRenderer renderMethod) {
|
||||||
qDebug() << "EntityTypes::registerEntityTypeRenderer()";
|
|
||||||
qDebug() << " entityType=" << entityType;
|
|
||||||
qDebug() << " renderMethod=" << (void*)renderMethod;
|
|
||||||
|
|
||||||
if (!_renderersInitialized) {
|
if (!_renderersInitialized) {
|
||||||
memset(&_renderers,0,sizeof(_renderers));
|
memset(&_renderers,0,sizeof(_renderers));
|
||||||
_renderersInitialized = true;
|
_renderersInitialized = true;
|
||||||
|
|
|
@ -7,7 +7,9 @@ Base properties...
|
||||||
* velocity
|
* velocity
|
||||||
* gravity
|
* gravity
|
||||||
* damping
|
* damping
|
||||||
|
* mass
|
||||||
* glow level
|
* glow level
|
||||||
|
* lifetime
|
||||||
|
|
||||||
should these be included for all entities? Light, Models, planes, etc?
|
should these be included for all entities? Light, Models, planes, etc?
|
||||||
* rotational velocity? - wouldn't that be cool to be automatic with no edits
|
* rotational velocity? - wouldn't that be cool to be automatic with no edits
|
||||||
|
@ -38,6 +40,7 @@ Model properties:
|
||||||
// REQUIRED TO DO:
|
// REQUIRED TO DO:
|
||||||
|
|
||||||
A) add velocity, gravity, damping to entity base class
|
A) add velocity, gravity, damping to entity base class
|
||||||
|
Aa) visible???
|
||||||
2) EntityTree::update()/EntityTreeElement::update()... velocity changes...
|
2) EntityTree::update()/EntityTreeElement::update()... velocity changes...
|
||||||
C) verify "update" works
|
C) verify "update" works
|
||||||
|
|
||||||
|
@ -47,26 +50,35 @@ Model properties:
|
||||||
22a) void ModelItemProperties::copyFromNewModelItem(const ModelItem& modelItem); // XXX ??? Do we need this????
|
22a) void ModelItemProperties::copyFromNewModelItem(const ModelItem& modelItem); // XXX ??? Do we need this????
|
||||||
22b) Local Entities Overlay - from Local Models Overlay
|
22b) Local Entities Overlay - from Local Models Overlay
|
||||||
22c) void ModelTree::sendModels(ModelEditPacketSender* packetSender, float x, float y, float z)....
|
22c) void ModelTree::sendModels(ModelEditPacketSender* packetSender, float x, float y, float z)....
|
||||||
|
bool EntityTree::sendEntitiesOperation(OctreeElement* element, void* extraData) {...
|
||||||
DONE -- 22d) void ModelTree::findModelsInCube(const AACube& cube, QVector<ModelItem*>& foundModels)...
|
DONE -- 22d) void ModelTree::findModelsInCube(const AACube& cube, QVector<ModelItem*>& foundModels)...
|
||||||
DONE -- 22e) void ModelTreeElement::getModelsInside(const AACube& box, QVector<ModelItem*>& foundModels)...
|
DONE -- 22e) void ModelTreeElement::getModelsInside(const AACube& box, QVector<ModelItem*>& foundModels)...
|
||||||
|
|
||||||
F) TODO: do we need to handle "killing" viewed entities as well???
|
|
||||||
void EntityTreeElement::updateEntityItemID(const EntityItemID& creatorTokenEntityID, const EntityItemID& knownIDEntityID)...
|
|
||||||
13) support sitpoints
|
13) support sitpoints
|
||||||
|
|
||||||
K) verify shadows work
|
K) verify shadows work
|
||||||
|
|
||||||
|
|
||||||
M) change EntityTree::handleAddEntityResponse() to not scan entire tree... it can use the containing element stuff!!!
|
|
||||||
N) Handle the ID -> UUID swap in old files to new files
|
N) Handle the ID -> UUID swap in old files to new files
|
||||||
|
|
||||||
O) Test models -> attachments logic
|
O) Test models -> attachments logic
|
||||||
|
|
||||||
|
12) clean up delete behavior...
|
||||||
|
12a) make sure server is deleting items??
|
||||||
|
12b) Use the delete message instead of shouldDelete property
|
||||||
|
|
||||||
|
Q) Referentials????
|
||||||
|
|
||||||
|
R) fix these!!!
|
||||||
|
EntityItem::encodeEntityEditMessageDetails()
|
||||||
|
EntityTypes::decodeEntityEditPacket()
|
||||||
|
These both contain details about non base class properties I think moving this to the EntityItemProperties is better...
|
||||||
|
|
||||||
|
|
||||||
// NICE TO DO:
|
// NICE TO DO:
|
||||||
|
|
||||||
P) unit tests?
|
P) unit tests?
|
||||||
|
Pa) OctreeTests::modelItemTests()...????
|
||||||
|
|
||||||
// G) why does is the Box entity not drawn in it's bounds
|
// G) why does is the Box entity not drawn in it's bounds
|
||||||
// H) make the rotated model bounds work for other entity types?
|
// H) make the rotated model bounds work for other entity types?
|
||||||
|
@ -135,9 +147,6 @@ Model properties:
|
||||||
// Abort trap: 6
|
// Abort trap: 6
|
||||||
|
|
||||||
|
|
||||||
// 12) clean up delete behavior...
|
|
||||||
// 12a) make sure server is deleting items??
|
|
||||||
// 12b) Use the delete message instead of shouldDelete property
|
|
||||||
|
|
||||||
// 13b) add user properties
|
// 13b) add user properties
|
||||||
// 14) implement "Light" entity, "Fire" entity?
|
// 14) implement "Light" entity, "Fire" entity?
|
||||||
|
@ -191,4 +200,9 @@ Model properties:
|
||||||
// SOLVED - B) enable animation in model class
|
// SOLVED - B) enable animation in model class
|
||||||
// SOLVED - 18) change ID's to UUIDS????
|
// SOLVED - 18) change ID's to UUIDS????
|
||||||
// SOLVED - L) sometimes assert/crashes in server about containing element? I think we're adding entityIDs with UNKNOWN_ID to our maps
|
// SOLVED - L) sometimes assert/crashes in server about containing element? I think we're adding entityIDs with UNKNOWN_ID to our maps
|
||||||
// this crash is definitely caused by starting a server with an existing models file which has ID's already in use...
|
// this crash is definitely caused by starting a server with an existing models file which has ID's already in use...
|
||||||
|
// SOLVED - M) change EntityTree::handleAddEntityResponse() to not scan entire tree... it can use the containing element stuff!!!
|
||||||
|
// SOLVED - F) TODO: do we need to handle "killing" viewed entities as well???
|
||||||
|
// void EntityTreeElement::updateEntityItemID(const EntityItemID& creatorTokenEntityID, const EntityItemID& knownIDEntityID)...
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
|
|
||||||
void EntityTests::entityTreeTests(bool verbose) {
|
void EntityTests::entityTreeTests(bool verbose) {
|
||||||
|
|
||||||
//#ifdef HIDE_SUBCLASS_METHODS
|
|
||||||
bool extraVerbose = false;
|
bool extraVerbose = false;
|
||||||
int testsTaken = 0;
|
int testsTaken = 0;
|
||||||
int testsPassed = 0;
|
int testsPassed = 0;
|
||||||
|
@ -513,8 +512,6 @@ void EntityTests::entityTreeTests(bool verbose) {
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
qDebug() << "******************************************************************************************";
|
qDebug() << "******************************************************************************************";
|
||||||
}
|
}
|
||||||
//#endif
|
|
||||||
//#endif // 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1271,7 +1271,7 @@ void OctreeTests::byteCountCodingTests(bool verbose) {
|
||||||
|
|
||||||
void OctreeTests::modelItemTests(bool verbose) {
|
void OctreeTests::modelItemTests(bool verbose) {
|
||||||
|
|
||||||
#if 0 // def HIDE_SUBCLASS_METHODS
|
#if 0 // TODO - repair/replace these
|
||||||
|
|
||||||
//verbose = true;
|
//verbose = true;
|
||||||
EntityTreeElementExtraEncodeData modelTreeElementExtraEncodeData;
|
EntityTreeElementExtraEncodeData modelTreeElementExtraEncodeData;
|
||||||
|
|
Loading…
Reference in a new issue