From fa5c2b9638e73990ebc77d4dd42105871f1c044d Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 1 Sep 2014 23:09:18 -0700 Subject: [PATCH] removed todo file --- libraries/entities/src/todo.txt | 319 -------------------------------- 1 file changed, 319 deletions(-) delete mode 100644 libraries/entities/src/todo.txt diff --git a/libraries/entities/src/todo.txt b/libraries/entities/src/todo.txt deleted file mode 100644 index 9e7ae3ac27..0000000000 --- a/libraries/entities/src/todo.txt +++ /dev/null @@ -1,319 +0,0 @@ -// REQUIRED: - - -http://highfidelity-public.s3-us-west-1.amazonaws.com/meshes/Feisar_Ship.FBX#1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 -http://highfidelity-public.s3-us-west-1.amazonaws.com/meshes/newInvader16x16-large-purple.svo#1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 --123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - - - 1) clock skew sometimes causes properties to get reject when sent from the server... - - -- this appears to be related to clock skew!!! - -- need to determine "when to deleted extra data" -- - - 2) edits not being sent??? - - - - - - - - - - - - - - - - - - - - 7) some jutter with moving entities - -- I think this might only happen with lots of models in an element or in view - -- test lots of entities with the new suppress mode - - 10) What happens if the edit properties don't fit in a single message MTU??? - - 12) Double check operators for these problems: - MovingEntitiesOperator has these issues: - - does the same pruning/reallocating issue as the old UpdateEntityOperator - - doesn't used clamped boxes for best fit tests... so could be problematic - - - - -// NICE TO HAVE: - - - 1) clean up Octree::encodeTreeBitstreamRecursion() -- - It would be nice to clean up this function to be shorter... - 1015-1158 - helper functions "exit early helpers" - 1200-1245 - helper function "sorted children" - 1248-1376 - helper function "visible children" - - this handles LOD, occlusion, in view/was in view for child elements - NOTE: this information could be cached for secondary passes of the element - in the same scene encode since they shouldn't change in same scene encode - - - 11) quickly do some edits... then change domains... watch the entities continue to exist in new domain and move around. - -- verify this happens in old code, if so... move to "nice to have" - -- maybe this relates to having incoming packets waiting in the processing queue... they should be discarded on switching domains? - - - Z) Consider using client side "on the fly" billboard of entites to handle LOD - -- have routine to shoot views of an entity for 6 faces - -- store those images in the entity on the client - -- based on camera position pick "closest" face of model - -- as LOD drops use those images instead of rendering the model - - 3) Make sure LOD logic honors the LOD settings for entities in "spanners/parent" cells. - -- network - don't SEND small entities even if their spanner cell is visible - - -- if animation is stopped, changing frame doesn't update the simulation - - - why is _entityItems a pointer? why not just make it a member of EntityTreeElement.... - - 1) EnterEntity/LeaveEntity JS messages - - 2) PROP_VISIBLE - - 3) PROP_SCRIPT - - - 2) update and verify all particle examples to use new entity features - - 3) implement support for requestedProperties in appendEntityData() that only include CHANGED properties for the viewer... - - 4) unit tests? - - 5) make the rotated model bounds work for other entity types? - - 6) improve EntityItemProperties class to allow registration of new properties, and to be more generic - - basic properties features use getter/setter.... - all others use: - set('propertyName', value)... but... we need to know the type of value - - setStringProperty('name', const QString& value); - QString getStringProperty('name'); - - setFloatProperty('name', float value); - float getFloatProperty('name'); - 7) Consider making properties of the entities be registered... - and handle their streaming in a more automatice fashion - DRY up the code, eliminate the common blocks for each differetn property - - 8) add user properties - - 9) implement "Light" entity, "Fire" entity? - - 10) LOD - we've never supported LOD in model server other than not recursing into nodes that can't be seen. - 10a) LOD - at higher level nodes with entities that are small, handle don't include small entities for LOD setting would not have sent them. - 10b) LOD - generalized "re-averaging"? - how can we allow an entity to present itself to a higher level as an average? - for models - we've talked about storing them as voxels... - for models - if we had access to mesh, we could use numerous mesh LOD algorithms out there - - 12) xColor vs rbgColor???? - 13) get rid of EntityItem::expectedBytes()... - 14) consider moving the EntityTypes static Maps to be inside a singleton instance of EntityTypes to ensure initialization order - 15) Why can't we call REGISTER_ENTITY_TYPE() in BoxEntityType.cpp or the CPP of the implementation? - 16) crash on startup of client sometimes... - Thread 46 Crashed:: QThread - 0 QtCore 0x000000010d189e47 QHashData::nextNode(QHashData::Node*) + 7 - 1 io.highfidelity.Interface 0x000000010bce2189 QHash::iterator::operator++(int) + 41 (qhash.h:378) - 2 io.highfidelity.Interface 0x000000010bce109a OctreeEditPacketSender::releaseQueuedMessages() + 154 (OctreeEditPacketSender.cpp:306) - 3 io.highfidelity.Interface 0x000000010bf17bb3 ScriptEngine::run() + 2099 (ScriptEngine.cpp:433) - 4 io.highfidelity.Interface 0x000000010b97444e void QtPrivate::FunctionPointer::call(void (ScriptEngine::*)(), ScriptEngine*, void**) + 142 (qobjectdefs_impl.h:142) - 5 io.highfidelity.Interface 0x000000010b97432a QtPrivate::QSlotObject::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) + 202 (qobject_impl.h:150) - 6 QtCore 0x000000010d34383b QMetaObject::activate(QObject*, int, int, void**) + 2139 - 7 QtCore 0x000000010d12aba5 QThreadPrivate::start(void*) + 309 - 8 libsystem_pthread.dylib 0x00007fff8bb96899 _pthread_body + 138 - 9 libsystem_pthread.dylib 0x00007fff8bb9672a _pthread_start + 137 - 10 libsystem_pthread.dylib 0x00007fff8bb9afc9 thread_start + 13 - - - - -- crash on shutdown while animating...??? - Thread 0 Crashed:: Dispatch queue: com.apple.main-thread - 0 io.highfidelity.Interface 0x000000010cf99a6a EntityTree::updateChangingEntities(unsigned long long, QSet&) + 202 - 1 io.highfidelity.Interface 0x000000010cf998a6 EntityTree::update() + 70 - 2 io.highfidelity.Interface 0x000000010cb64a3e EntityTreeRenderer::update() + 62 - 3 io.highfidelity.Interface 0x000000010c9eb6ec Application::update(float) + 796 - 4 io.highfidelity.Interface 0x000000010c9f5e26 Application::idle() + 550 - 5 io.highfidelity.Interface 0x000000010c99f567 Application::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 1655 - 6 QtCore 0x0000000112474a30 QMetaObject::activate(QObject*, int, int, void**) + 2640 - 7 QtCore 0x000000011246d5c1 QObject::event(QEvent*) + 49 - -=============== - - -// SOLVED - 1) crash in client assert on addEntity() assetting that not viewing??? -// SOLVED - 2) when changing properties that include position OR radius, but not both the update logic gets confused. -// SOLVED - 3) in assignEntityID() we assert if the containing element exists... this is too harsh, what if someone sends us a bad packet -// -- fixed this by only storing assigned IDs in the server's ID base -// SOLVED - 4) problem here... looks like the client got confused and sent us an unknown edit packet with a creator token id we already had... -// we probably can't keep the creator tokens in our server tree or else we'll collide between multiple editors!! -// -- fixed this by only storing assigned IDs in the server's ID base -// SOLVED - 5) fix all places where "Voxels" turns off some features of models/entities -// SOLVED - 6) duplicate copies of entity references in the elements... this appears to be caused when "viewing" while editing... -// SOLVED - 7) Handle the newer on client vs changed on server problem properly for entities -// SOLVED - 8) Verified that multiple machines viewing real time edits works - fixed bugs in lastEdited. -// SOLVED - 9) entities have same ID? unknown??? - wasn't setting ID on read from buffer... -// SOLVED - 10) crash in entity server on add entity? -// SOLVED - 11) addOrUpdateEntity() -// SOLVED - 12) enable animation in model class -// SOLVED - 13) change ID's to UUIDS???? -// SOLVED - 14) 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... -// SOLVED - 15) change EntityTree::handleAddEntityResponse() to not scan entire tree... it can use the containing element stuff!!! -// SOLVED - 16) TODO: do we need to handle "killing" viewed entities as well??? -// void EntityTreeElement::updateEntityItemID(const EntityItemID& creatorTokenEntityID, const EntityItemID& knownIDEntityID)... -// SOLVED - 17) move to EntityItemProperties -// EntityItem::encodeEntityEditMessageDetails() -// EntityTypes::decodeEntityEditPacket() -// SOLVED - 18) handle sublass appendEntityData() and readEntityItemIDFromBuffer() similar to how we -// handle setProperty()/getProperty() so that each subclass doesn't have to completely reimplement -// the entire base class data stream... -// SOLVED - 19) implement support for requestedProperties in appendEntityData() to be virtual to handle various subclasses -// SOLVED - 20) add velocity, gravity, damping to entity base class -// SOLVED - 21) EntityTree::update()/EntityTreeElement::update()... velocity changes... -// SOLVED - 22) verify "update" works -// SOLVED - 23) crash/assert when you move an entity out of domain bounds??? -// SOLVED - 24) UNEXPECTED -- OctreeElement::getMyChildContaining() cubeScale=[0.000012] > ourScale=[0.000004] -// SOLVED - 25) what about??? rememberDirtyCube()... -- removed it... not needed -// SOLVED - 26) what about editing/edit messages... moved to EntityItemProperties... -// EntityItem::encodeEntityEditMessageDetails() -- this could be a member of EntityItemProperties -// EntityTypes::decodeEntityEditPacket() -- this could be a member of EntityItemProperties -// SOLVED - 27) change delete to use delete messages instead of shouldBeDeleted property -// SOLVED - 27a) make sure server is deleting items?? -// SOLVED - 27b) Use the delete message instead of shouldDelete property -// SOLVED -- problem 1: -// it appears as if on a second pass on the element a DONT_FIT case occurs and this confuses things... -// SOLVED -- problem 2: -// sometimes it appears as if the element entities mostly fit, but then the extra data (bit masks) fails -// to fit and in this case the "extra data" gets confused... -// maybe remember the extra state before removing it and if it fails, always re-add it -// maybe add support for "reserving" bytes in the packet -// SOLVED -- 28) BROKEN File persistence... -- added chunking support in SVO file persistence. -// SOLVED -- 29) why does is the Box entity not drawn in it's bounds -// SOLVED -- 30) render performance of models... -// SOLVED -- a) make getModel() faster... consider storing the Model* in the actual EntityItem class -// SOLVED -- b) only call simulate when properties change -// SOLVED -- 31) verify lots of models in single element works -// -- repro case - run editModelsExample.js -- create 10 models in the same octree element -// SOLVED -- 32) support sitpoints and referentials.... -// SOLVED -- 33) Referentials -- working as well as master -// For sitting points and referentials you can kill two birds with one stone. -// Put this model in world: http://highfidelity-public.s3-us-west-1.amazonaws.com/ozan/theater.fst -// Launch sit.js -// See sitting points -// Sit somewhere -// Move model with another avatar. -// Observe first avatar moving. -// SOLVED -- 34) verify shadows work -// SOLVED -- 35) Handle the ID -> UUID swap in old files to new files - verify old files read correctly -// SOLVED -- 36) Test models -> attachments logic --- TESTED/WORKS -// SOLVED -- 37) Import/Export Models - verify it works. /copy/paste?? -// DONE -- 37d) void ModelTree::findModelsInCube(const AACube& cube, QVector& foundModels)... -// DONE -- 37e) void ModelTreeElement::getModelsInside(const AACube& box, QVector& foundModels)... -// DONE -- 37f) Application::exportEntities() tested/works -// DONE -- 37g) Application::pasteEntities() tested/works -// DONE -- 37c) void ModelTree::sendModels(ModelEditPacketSender* packetSender, float x, float y, float z).... -// bool EntityTree::sendEntitiesOperation(OctreeElement* element, void* extraData) {... -// RESOLVED -- 37a) void ModelItemProperties::copyFromNewModelItem(const ModelItem& modelItem); // Do we need this? NO! -// WORKS AS PRODUCTION -- 37b) Local Entities Overlay - from Local Models Overlay -// Note: there's a bug in production related to the overlay correctly rendering when -// the original (non-translated positions) of the models are out of view. This is a bug -// not introduced byt this PR. -// SOLVED -- 38) Make sure EntityItems are deleted... -// delete all entity items on deletion of the tree? -// cases: -// PASSED -- 1) test UI delete entity (on client) -// PASSED -- 2) test UI delete entity (on server) -// PASSED --- 7) test UI delete on other client -// PASSED --- 3) test client shutdown -// PASSED --- 4) test server shutdown (on server) -// PASSED --- a) click X on domain page -// PASSED --- b) shutdown domain server -// PASSED --- 6) test change domains -// SAME AS PRODUCTION - 5) test server shutdown (on client) - models aren't deleted when model server goes away -// SOLVED -- 39) EntityTreeRenderer::clearModelsCache() - Model instance cleanup handled in ~RenderableModelEntityItem -// SOLVED -- 40) Lifetime, Age, Created -// DONE - * support created timestamp in all entities -// DONE - * handle old model files with no created time stamp -// DONE - * add age, ageAsText properties for scripting -// DONE - * make sure that entities that expire are correctly deleted safely -// DONE - * make sure that deleting a mortal but not yet dead entity works -// DONE - * make sure that newly "viewed" entities are correctly added to our simulation lists: mortal, changing, moving -// SOLVED -- 41) clear all entities when changing domains? -// SOLVED -- 42) Crash in delete model - deleting the geometry... -// SOLVED -- 43) Moving models don't always move.. I think this relates to the render optimization... -// need to make sure we re-simulate when a model is moving... -// SOLVED -- 44) if velocity sends a model out of the domain - delete it -// SOLVED -- 45) Don't allow models to be "edited" to be outside of domain. clamp them to the domain. - clamp it baby!! -// SOLVED -- 46) random crashes on moving -- -// FIXED - bug in PossiblyCreateChildAt for clamped entities - new entity not added. -// FIXED - Assertion failed: (!_removeOld), function PreRecursion, file /Users/zappoman/Development/HiFi/hifi/libraries/entities/src/UpdateEntityOperator.cpp, line 234 -// -- what appears to be happening is that the containing elements memory location is getting reused -// -- 1) the OLD containing element was found first, -// -- 2) the entity was removed -// -- 3) the containing element got pruned -// -- 4) the NEW branch is traversed and PossiblyCreateChildAt creates a new element -- THAT HAS SAME POINTER AS CONTAINING ELEMENT!!!! -// -- 5) the logic for recursedelement == _containingElement gets confused -// SOLVED -- 47) crash on rendering of element that flies off the domain -// -- root cause was an UpdateEntityOperator that left two copies of the entity in the tree -// this was caused by the original element that the entity was in (according to the server) -// was not actually the best fit. it's not clear how this happened, but we can protect -// against it in the update operator if it does happen again. This made update operator more robust. -// SOLVED -- 48) server and client definitley not adding entities to proper update lists on load... only on change... -// SOLVED -- 49) test animation again... -// FIXED -- This looks like it was all related to members not being initialized... -// FIXED -- animations don't appear on all viewers -// FIXED -- animations are on different frames -- the data suggest they are the same frame number from a simulation perspective -// SOLVED -- 50) Verify pruning logic... -// SOLVED -- 51) LOD for rendering - don't render small entities even if their spanner cell is visible -// SOLVED -- 52) Look into why non-changed octree cells are being resent when editing an entity -- -// this is probably because we're marking the trees as dirty -- but we probably can not send entitys that haven't changed -// Solution -- suppress sending of entities that haven't been edited since the last view frustum sent -// SOLVED -- 53) Test sibling cells - - - ----------------- properties ----------------- -Base properties... - * type - * position - * size/radius/bounds?? maybe correct is x,y,z scales - * rotation - * script - * velocity - * gravity - * damping - * mass - * glow level - * lifetime - * age - -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 damping?? - can you slow a quat rotation by simply multiplying it by a fraction? - * color?? - -Primitive Object Properties: - * color? - * texture? - - -Model properties: - void setModelURL(const QString& url) - void setAnimationURL(const QString& url) - void setAnimationFrameIndex(float value) - void setAnimationIsPlaying(bool value) - void setAnimationFPS(float value) - void setSittingPoints(QVector sittingPoints) ??? - should this just be a string property??? -