Todo List
Member Urho3D::AnimatedModel::OnWorldBoundingBoxUpdate ()
If it's a skinned attachment that does not cover the whole body, it will have unnecessarily large bounds
Member Urho3D::AnimatedModel::UpdateBoneBoundingBox ()
The sphere radius should be multiplied with bone scale
Member Urho3D::Animation::CreateTrack (const String &name)
When tracks / keyframes are created dynamically, memory use is not updated
Member Urho3D::Camera::GetFrustumSize (Vector3 &near, Vector3 &far) const
Necessary? Explain this
Member Urho3D::Connection::Connection (Context *context, bool isClient, kNet::SharedPtr< kNet::MessageConnection > connection)
Not IPv6-capable.
Member Urho3D::Connection::ProcessExistingNode (Node *node, NodeReplicationState &nodeState)
Searching for the component is a potential CPU hotspot. It should be cached
Member Urho3D::Connection::ProcessSceneUpdate (int msgID, MemoryBuffer &msg)
On mobile devices processing this message may potentially cause a crash if it attempts to load new GPU resources while the application is minimized
Member Urho3D::Constraint::OnMarkedDirty (Node *node)
This does not catch the connected body node's scale changing
Member Urho3D::Context::~Context ()
Context should not need to know about subsystems
Member Urho3D::CrowdAgent::OnMarkedDirty (Node *node)
Handle node transform being dirtied.
Member Urho3D::DecalSet::AddDecal (Drawable *target, const Vector3 &worldPosition, const Quaternion &worldRotation, float size, float aspectRatio, float depth, const Vector2 &topLeftUV, const Vector2 &bottomRightUV, float timeToLive=0.0f, float normalCutoff=0.1f, unsigned subGeometry=M_MAX_UNSIGNED)
target transform is not right if adding a decal to StaticModelGroup
Member Urho3D::DecalSet::OnWorldBoundingBoxUpdate ()
The sphere radius should be multiplied with bone scale
Member Urho3D::EventReceiverGroup::EndSendEvent ()
Could be optimized by erase-swap, but this keeps the receiver order
Member Urho3D::File::Read (void *dest, unsigned size)
Handle errors
Member Urho3D::FileSystem::ScanDirInternal (Vector< String > &result, String path, const String &startPath, const String &filter, unsigned flags, bool recursive) const
Filename may be unnormalized Unicode on Mac OS X. Re-normalize as necessary
Member Urho3D::Graphics::Clear (unsigned flags, const Color &color=Color(0.0f, 0.0f, 0.0f, 0.0f), float depth=1.0f, unsigned stencil=0)
Any user-set scissor test will be lost
Member Urho3D::HttpRequest::ThreadFunction ()
SSL mode will not actually work unless Civetweb's SSL mode is initialized with an external SSL DLL
Member Urho3D::Image::Resize (int width, int height)
Reducing image size does not sample all needed pixels
Member Urho3D::Input::AddScreenJoystick (XMLFile *layoutFile=0, XMLFile *styleFile=0)

After a real joystick has been plugged in 1073741824 times, the ranges will overlap

Axis emulation for screen joystick is not fully supported yet.

Member Urho3D::Input::ResetState ()
Check if resetting joystick state on input focus loss is even necessary
Member Urho3D::JSONValue::GetVariantMap () const
Ideally this should allow any strings, but for now the convention is that the keys need to be hexadecimal StringHashes
Member Urho3D::NavigationMesh::BuildTile (Vector< NavigationGeometryInfo > &geometryList, int x, int z)
Assignment of flags from navigation areas?
Member Urho3D::NavigationMesh::CollectGeometries (Vector< NavigationGeometryInfo > &geometryList, Node *node, HashSet< Node * > &processedNodes, bool recursive)
Evaluate whether should handle other types. Now StaticModel & TerrainPatch are supported, others skipped
Member Urho3D::ParticleEffect2D::Clone (const String &cloneName=String::EMPTY) const
Zero if source was created programmatically
Member Urho3D::ParticleEffect::Clone (const String &cloneName=String::EMPTY) const
Zero if source was created programmatically
Member Urho3D::Renderer::DrawDebugGeometry (bool depthTest)
Because debug geometry is per-scene, if two cameras show views of the same area, occlusion is not shown correctly
Member Urho3D::Renderer::GetScreenBuffer (int width, int height, unsigned format, int multiSample, bool autoResolve, bool cubemap, bool filtered, bool srgb, unsigned persistentKey=0)
Mipmaps disabled for now. Allow to request mipmapped buffer?
Member Urho3D::Renderer::GetShadowMap (Light *light, Camera *camera, unsigned viewWidth, unsigned viewHeight)
Allow to specify maximum shadow maps per resolution, as smaller shadow maps take less memory
Member Urho3D::Renderer::UpdateQueuedViewport (unsigned index)
May result in incorrect debug geometry culling if the same scene is drawn from multiple viewports
Member Urho3D::Scene::UpdateAsyncLoading ()
Works poorly in scenes where one root-level child node contains all content
Member Urho3D::Spline::BezierInterpolation (const Vector< Variant > &knots, float t) const
Do not allocate a new vector each time
Member Urho3D::Spline::GetPoint (float f) const
Do not allocate a new vector each time
Member Urho3D::Sprite::IsWithinScissor (const IntRect &currentScissor)
Implement properly, for now just checks visibility flag
Member Urho3D::Terrain::GetHeight (const Vector3 &worldPosition) const
This assumes that the terrain scene node is upright
Member Urho3D::UIElement::SortChildren ()
Order is not stable when children have same priorities
Member Urho3D::ValueAnimationInfo::GetEventFrames (float beginTime, float endTime, PODVector< const VAnimEventFrame * > &eventFrames)
This can miss an event if the deltatime is exactly the animation's length
Member Urho3D::View::PrepareInstancingBuffer ()
If rendering the same view several times back-to-back, would not need to refill the buffer
Member Urho3D::Viewport::ScreenToWorldPoint (int x, int y, float depth) const
This is incorrect if the viewport is used on a texture rendertarget instead of the backbuffer, as it may have different dimensions.
Member Urho3D::Viewport::WorldToScreenPoint (const Vector3 &worldPos) const
This is incorrect if the viewport is used on a texture rendertarget instead of the backbuffer, as it may have different dimensions.