mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 08:04:01 +02:00
removed todo file
This commit is contained in:
parent
ea22073ddc
commit
fa5c2b9638
1 changed files with 0 additions and 319 deletions
|
@ -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<QUuid, EditPacketBuffer>::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<void (ScriptEngine::*)()>::call<void, void>(void (ScriptEngine::*)(), ScriptEngine*, void**) + 142 (qobjectdefs_impl.h:142)
|
||||
5 io.highfidelity.Interface 0x000000010b97432a QtPrivate::QSlotObject<void (ScriptEngine::*)(), void, void>::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<EntityItemID>&) + 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<ModelItem*>& foundModels)...
|
||||
// DONE -- 37e) void ModelTreeElement::getModelsInside(const AACube& box, QVector<ModelItem*>& 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<SittingPoint> sittingPoints) ??? - should this just be a string property???
|
||||
|
Loading…
Reference in a new issue