<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>FarseerPhysics Work Item Rss Feed</title><link>http://www.codeplex.com/WorkItem/List.aspx?ProjectName=FarseerPhysics</link><description>FarseerPhysics Work Item Rss Description</description><item><title>Created Issue: Portable Library [33989]</title><link>http://farseerphysics.codeplex.com/workitem/33989</link><description>Wish I had Farseer to be available as a portable library. Best - for all platforms&lt;br /&gt;</description><author>LostTheBlack</author><pubDate>Sun, 21 Apr 2013 03:27:27 GMT</pubDate><guid isPermaLink="false">Created Issue: Portable Library [33989] 20130421032727A</guid></item><item><title>Created Issue: IsSensor attribute of fixture is lost after deserializing world [33795]</title><link>http://farseerphysics.codeplex.com/workitem/33795</link><description>Hello,&lt;br /&gt;after I serialize world and than deserialize. IsSensor property of fixtures is lost.&lt;br /&gt;&lt;br /&gt;So as a result my sensor fixtures are now normal fixtures.&lt;br /&gt;&lt;br /&gt;I have found and problem in FarseerPhysics.Common.Deserialize&amp;#40;World world, Stream stream&amp;#41;&amp;#58;&lt;br /&gt;case &amp;#38;quot&amp;#59;fixtures&amp;#38;quot&amp;#59;&amp;#58;&lt;br /&gt;                                    &amp;#123;&lt;br /&gt;                                        foreach &amp;#40;XMLFragmentElement v in sn.Elements&amp;#41;&lt;br /&gt;                                        &amp;#123;&lt;br /&gt;                                            Fixture blueprint &amp;#61; _fixtures&amp;#91;int.Parse&amp;#40;v.Value&amp;#41;&amp;#93;&amp;#59;&lt;br /&gt;                                            Fixture f &amp;#61; new Fixture&amp;#40;body, blueprint.Shape&amp;#41;&amp;#59;&lt;br /&gt;                                            f.Restitution &amp;#61; blueprint.Restitution&amp;#59;&lt;br /&gt;                                            f.UserData &amp;#61; blueprint.UserData&amp;#59;&lt;br /&gt;                                            f.Friction &amp;#61; blueprint.Friction&amp;#59;&lt;br /&gt;                                            f.CollidesWith &amp;#61; blueprint.CollidesWith&amp;#59;&lt;br /&gt;                                            f.CollisionCategories &amp;#61; blueprint.CollisionCategories&amp;#59;&lt;br /&gt;                                            f.CollisionGroup &amp;#61; blueprint.CollisionGroup&amp;#59;&lt;br /&gt;                                        &amp;#125;&lt;br /&gt;                                        break&amp;#59;&lt;br /&gt;                                    &amp;#125;&lt;br /&gt;&lt;br /&gt;Where is missing this line&amp;#58;&lt;br /&gt;                                            f.IsSensor &amp;#61; blueprint.IsSensor&amp;#59;&lt;br /&gt;&lt;br /&gt;Nice day Peter&lt;br /&gt;</description><author>camel82106</author><pubDate>Wed, 20 Feb 2013 19:43:43 GMT</pubDate><guid isPermaLink="false">Created Issue: IsSensor attribute of fixture is lost after deserializing world [33795] 20130220074343P</guid></item><item><title>Created Issue: Creating objects OnCollision [33784]</title><link>http://farseerphysics.codeplex.com/workitem/33784</link><description>I&amp;#39;m trying to create a simple circle in an oncollision handler but i am getting an assert fail &amp;#40;island.cs line 444&amp;#41;. What am I supposed to do&amp;#63;&lt;br /&gt;&lt;br /&gt;My Code&amp;#58;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;        var b &amp;#61; BodyFactory.CreateCircle&amp;#40;world, 0.5f, 1.0f, active.Position, null&amp;#41;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;&lt;br /&gt;Island.cs&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;        public void Add&amp;#40;Body body&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;            Debug.Assert&amp;#40;BodyCount &amp;#38;lt&amp;#59; _bodyCapacity&amp;#41;&amp;#59;&lt;br /&gt;            Bodies&amp;#91;BodyCount&amp;#43;&amp;#43;&amp;#93; &amp;#61; body&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;</description><author>genbox</author><pubDate>Mon, 18 Feb 2013 05:36:17 GMT</pubDate><guid isPermaLink="false">Created Issue: Creating objects OnCollision [33784] 20130218053617A</guid></item><item><title>Created Issue: Setting Body.Enabled=false in OnCollision not supported [33783]</title><link>http://farseerphysics.codeplex.com/workitem/33783</link><description>I could be doing something wrong, but this causes problems for Farseer. What I&amp;#39;m seeing is that Contact.FixtureA and&amp;#47;or Contact.FixtureB are set to null whilst it&amp;#39;s in the middle of iterating and calling the OnCollision handlers &amp;#40;causing null reference exception&amp;#41;.&lt;br /&gt;&lt;br /&gt;For me it occurs when a bullet hits an enemy and both need to disable their physics at that time, which seems like a common use case. I know I could set a flag to disable the body in the next frame, but I&amp;#39;d rather not.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve &amp;#38;quot&amp;#59;fixed&amp;#38;quot&amp;#59; it for now by adding Body.Enabled checks in ContactManager.Collide and FixtureA and FixtureB &amp;#33;&amp;#61; null checks in Contact.Update&amp;#40;&amp;#41;. Perhaps there is a better way though&amp;#63;&lt;br /&gt;</description><author>genbox</author><pubDate>Mon, 18 Feb 2013 05:28:55 GMT</pubDate><guid isPermaLink="false">Created Issue: Setting Body.Enabled=false in OnCollision not supported [33783] 20130218052855A</guid></item><item><title>Created Issue: Explosion UserData usage problem [33780]</title><link>http://farseerphysics.codeplex.com/workitem/33780</link><description>Hi,&lt;br /&gt;&lt;br /&gt;   I was playing around with the Explosion object today, and I hit what might be a bug. I have been using the UserData property of the Body object to store game data &amp;#40;hit points, score, etc.&amp;#41; and I tried creating a basic explosion, I get an invalid cast exception from line 277 of Explosion.cs &amp;#40;Using v3.3.1 of the engine&amp;#41; as my data structure is being cast an int.&lt;br /&gt;&lt;br /&gt;   I think the problem here is that the author is trying to use the userdata object to store an index used in processing the explosion&amp;#39;s effects. My understanding was that this property was created to let devs tie their game objects to the physics engine. &lt;br /&gt;&lt;br /&gt;   The proper fix I think, would be to add an index property to the explosion class to use for internal calculations, but I am new to using farseer so I feel it should be looked at by someone more familiar with the engine.&lt;br /&gt;</description><author>MadTigger</author><pubDate>Fri, 15 Feb 2013 21:52:00 GMT</pubDate><guid isPermaLink="false">Created Issue: Explosion UserData usage problem [33780] 20130215095200P</guid></item><item><title>Created Issue: World Serializer with User Data [33684]</title><link>http://farseerphysics.codeplex.com/workitem/33684</link><description>I got the World serializer working, but when trying to deserialize the User Data, it threw an &amp;#38;quot&amp;#59;out of range&amp;#38;quot&amp;#59; exception in the &amp;#38;quot&amp;#59;ReadSimpleType&amp;#38;quot&amp;#59; method.&lt;br /&gt;&lt;br /&gt;The serialized type name was not &amp;#39;assembly qualified&amp;#39;, so the type deserialization was failing, causing the type to be null - in turn causing a extra call to &amp;#38;quot&amp;#59;ReadSimpleType&amp;#38;quot&amp;#59; method. My project is referencing Farseer in an external assembly so&lt;br /&gt; the full name was required for deserialization.&lt;br /&gt;&lt;br /&gt;So in the Serializer.cs file, you can modify the WriteDynamicType method to use the assembly qualified name.&lt;br /&gt;&lt;br /&gt;I know there could be an issue if the assembly information changes, but you could use a text editor to correct it.  Otherwise, I am open to other suggestions &amp;#61;&amp;#93;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private void WriteDynamicType&amp;#40;Type type, object val&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;            &amp;#47;&amp;#47; JDB - Use AssemblyQualifiedName to enable deserialization of types in other assemblies&lt;br /&gt;            &amp;#47;&amp;#47;_writer.WriteElementString&amp;#40;&amp;#38;quot&amp;#59;Type&amp;#38;quot&amp;#59;, type.FullName&amp;#41;&amp;#59;&lt;br /&gt;            _writer.WriteElementString&amp;#40;&amp;#38;quot&amp;#59;Type&amp;#38;quot&amp;#59;, type.AssemblyQualifiedName&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            _writer.WriteStartElement&amp;#40;&amp;#38;quot&amp;#59;Value&amp;#38;quot&amp;#59;&amp;#41;&amp;#59;&lt;br /&gt;            XmlSerializer serializer &amp;#61; new XmlSerializer&amp;#40;type&amp;#41;&amp;#59;&lt;br /&gt;            XmlSerializerNamespaces xmlnsEmpty &amp;#61; new XmlSerializerNamespaces&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            xmlnsEmpty.Add&amp;#40;&amp;#38;quot&amp;#59;&amp;#38;quot&amp;#59;, &amp;#38;quot&amp;#59;&amp;#38;quot&amp;#59;&amp;#41;&amp;#59;&lt;br /&gt;            serializer.Serialize&amp;#40;_writer, val, xmlnsEmpty&amp;#41;&amp;#59;&lt;br /&gt;            _writer.WriteEndElement&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;</description><author>genbox</author><pubDate>Sat, 19 Jan 2013 21:11:21 GMT</pubDate><guid isPermaLink="false">Created Issue: World Serializer with User Data [33684] 20130119091121P</guid></item><item><title>Created Issue: NuGet Components [33659]</title><link>http://farseerphysics.codeplex.com/workitem/33659</link><description>It seems that only the WP7XNA compiled version of Farseer and the non-XNA version has been submitted to NuGet.  I was wondering why the other versions of Farseer haven&amp;#39;t been submitted - the XBOX and Windows XNA versions for example.&lt;br /&gt;</description><author>joewood72</author><pubDate>Sun, 13 Jan 2013 20:28:32 GMT</pubDate><guid isPermaLink="false">Created Issue: NuGet Components [33659] 20130113082832P</guid></item><item><title>Closed Issue: Can't use x:name on multiple shapes in a PhysicsSprite [33603]</title><link>http://farseerphysics.codeplex.com/workitem/33603</link><description>Add two ucSmileys to the Physics Helper Metro Demo.Advanced ucMainGame.xaml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Run the project in debug mode with the simulator and you will get an error of &lt;br /&gt;&lt;br /&gt;An exception of type &amp;#39;System.ArgumentException&amp;#39; occurred in mscorlib.dll but was not handled in user code&lt;br /&gt;&lt;br /&gt;WinRT information&amp;#58; The name already exists in the tree&amp;#58; smiley_1.&lt;br /&gt;Comments: This is not an issue with Farseer Physics Engine. For help with setting up projects using physics helper, go to: http://physicshelper.codeplex.com/</description><author>genbox</author><pubDate>Thu, 10 Jan 2013 23:49:24 GMT</pubDate><guid isPermaLink="false">Closed Issue: Can't use x:name on multiple shapes in a PhysicsSprite [33603] 20130110114924P</guid></item><item><title>Closed Issue: Add support for ChainShape (in addition to LoopShape) [33635]</title><link>http://farseerphysics.codeplex.com/workitem/33635</link><description>Neither Box2D.XNA, nor Farseer currently support ChainShapes, whereas Box2D supports them. In Box2D there is actually only a ChainShape file that contains both the LoopShape and the ChainShape implementation.&lt;br /&gt;&lt;br /&gt;Proper implementation would be to create a ChainShape class i guess. As a quick workaround the code in PathManager.ConvertPathToEdges could be tweaked to handle this case properly &amp;#40;as in handling ghost vertices automatically&amp;#41;&lt;br /&gt;&lt;br /&gt;Quick hack i am currently using in my code. This could be the base to hack ConvertPathToEdges. It would replace the &amp;#38;quot&amp;#59;else&amp;#38;quot&amp;#59; part &amp;#40;path is not closed&amp;#41;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            Vertices verts &amp;#61; groundPath.GetVertices&amp;#40;groundPath.ControlPoints.Count &amp;#42; groundSubdivisions&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;handle special case first edge, only has vertex3&lt;br /&gt;            EdgeShape firstEdge &amp;#61; new EdgeShape&amp;#40;verts&amp;#91;0&amp;#93;, verts&amp;#91;1&amp;#93;&amp;#41;&amp;#59;&lt;br /&gt;            firstEdge.Vertex3 &amp;#61; verts&amp;#91;2&amp;#93;&amp;#59;&lt;br /&gt;            firstEdge.HasVertex3 &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;handle special case last edge, only has vertex0&lt;br /&gt;            EdgeShape lastEdge &amp;#61; new EdgeShape&amp;#40;verts&amp;#91;verts.Count - 2&amp;#93;, verts&amp;#91;verts.Count - 1&amp;#93;&amp;#41;&amp;#59;&lt;br /&gt;            lastEdge.Vertex0 &amp;#61; verts&amp;#91;verts.Count - 3&amp;#93;&amp;#59;&lt;br /&gt;            lastEdge.HasVertex0 &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;            groundBody.CreateFixture&amp;#40;firstEdge&amp;#41;&amp;#59;&lt;br /&gt;            groundBody.CreateFixture&amp;#40;lastEdge&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;handle the rest of the edges, having both vertex0 and vertex3&lt;br /&gt;            for &amp;#40;int i &amp;#61; 1&amp;#59; i &amp;#38;lt&amp;#59; verts.Count-2&amp;#59; i&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                EdgeShape edge &amp;#61; new EdgeShape&amp;#40;verts&amp;#91;i&amp;#93;, verts&amp;#91;i &amp;#43; 1&amp;#93;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;                edge.Vertex0 &amp;#61; verts&amp;#91;i - 1&amp;#93;&amp;#59;&lt;br /&gt;                edge.Vertex1 &amp;#61; verts&amp;#91;i    &amp;#93;&amp;#59;&lt;br /&gt;                edge.Vertex2 &amp;#61; verts&amp;#91;i &amp;#43; 1&amp;#93;&amp;#59;&lt;br /&gt;                edge.Vertex3 &amp;#61; verts&amp;#91;i &amp;#43; 2&amp;#93;&amp;#59;&lt;br /&gt;&lt;br /&gt;                edge.HasVertex0 &amp;#61; true&amp;#59;&lt;br /&gt;                edge.HasVertex3 &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;                groundBody.CreateFixture&amp;#40;edge&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;Comments: This has already been included in the source control version. Only recently has it been fixed to work correctly, but it has been there for some time.&lt;br /&gt;&lt;br /&gt;Beware that ghost vertices causes other problems. Smooth collision with edges above 90 degrees can cause collisions to penetrate the chain shape. I'm currently working on workarounds to this problem.</description><author>genbox</author><pubDate>Thu, 10 Jan 2013 23:47:50 GMT</pubDate><guid isPermaLink="false">Closed Issue: Add support for ChainShape (in addition to LoopShape) [33635] 20130110114750P</guid></item><item><title>Closed Issue: Performance issue. FarseerPhysics.Fluids.SpatialTable.Rehash() [33651]</title><link>http://farseerphysics.codeplex.com/workitem/33651</link><description>Hello,&lt;br /&gt;&lt;br /&gt;I used version 3.3.1&amp;#40;stable one&amp;#41;. Now I use the latest version from source control &amp;#40;because of some solved bugs&amp;#41;.&lt;br /&gt;I noticed that after update my game works 7-10 times slower. I profiled it and found out that almost all processor time &amp;#40;26 &amp;#37; from totally used by the engine 31&amp;#37;&amp;#41; is used by method FarseerPhysics.Fluids.SpatialTable.Rehash&amp;#40;&amp;#41; &amp;#40;see the attachment&amp;#41;. &lt;br /&gt;&lt;br /&gt;It seems that method &amp;#38;quot&amp;#59;Clear&amp;#38;quot&amp;#59; &amp;#40;of generic List&amp;#41; is called so often, that Physics engine spend 75&amp;#37; of it&amp;#39;s time to do it&amp;#58;&lt;br /&gt;for &amp;#40;int i &amp;#61; 0&amp;#59; i &amp;#38;lt&amp;#59; _column&amp;#59; i&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                for &amp;#40;int j &amp;#61; 0&amp;#59; j &amp;#38;lt&amp;#59; _row&amp;#59; j&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;                &amp;#123;&lt;br /&gt;                    if &amp;#40;_nearby&amp;#91;i&amp;#93;&amp;#91;j&amp;#93; &amp;#33;&amp;#61; null&amp;#41;&lt;br /&gt;                        _nearby&amp;#91;i&amp;#93;&amp;#91;j&amp;#93;.Clear&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;Could you please fix it or optimize it somehow&amp;#63;&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;best regards,&lt;br /&gt;Radik&lt;br /&gt;Comments: I appreciate you want to inform me of this, but I'm currently working on that part of the engine, and what you see should be considered unusable for production. I'm closing this bug as it is found in testing code that might not be shipped with the final version.</description><author>genbox</author><pubDate>Thu, 10 Jan 2013 23:44:59 GMT</pubDate><guid isPermaLink="false">Closed Issue: Performance issue. FarseerPhysics.Fluids.SpatialTable.Rehash() [33651] 20130110114459P</guid></item><item><title>Commented Issue: Performance issue. FarseerPhysics.Fluids.SpatialTable.Rehash() [33651]</title><link>http://farseerphysics.codeplex.com/workitem/33651</link><description>Hello,&lt;br /&gt;&lt;br /&gt;I used version 3.3.1&amp;#40;stable one&amp;#41;. Now I use the latest version from source control &amp;#40;because of some solved bugs&amp;#41;.&lt;br /&gt;I noticed that after update my game works 7-10 times slower. I profiled it and found out that almost all processor time &amp;#40;26 &amp;#37; from totally used by the engine 31&amp;#37;&amp;#41; is used by method FarseerPhysics.Fluids.SpatialTable.Rehash&amp;#40;&amp;#41; &amp;#40;see the attachment&amp;#41;. &lt;br /&gt;&lt;br /&gt;It seems that method &amp;#38;quot&amp;#59;Clear&amp;#38;quot&amp;#59; &amp;#40;of generic List&amp;#41; is called so often, that Physics engine spend 75&amp;#37; of it&amp;#39;s time to do it&amp;#58;&lt;br /&gt;for &amp;#40;int i &amp;#61; 0&amp;#59; i &amp;#38;lt&amp;#59; _column&amp;#59; i&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                for &amp;#40;int j &amp;#61; 0&amp;#59; j &amp;#38;lt&amp;#59; _row&amp;#59; j&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;                &amp;#123;&lt;br /&gt;                    if &amp;#40;_nearby&amp;#91;i&amp;#93;&amp;#91;j&amp;#93; &amp;#33;&amp;#61; null&amp;#41;&lt;br /&gt;                        _nearby&amp;#91;i&amp;#93;&amp;#91;j&amp;#93;.Clear&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;Could you please fix it or optimize it somehow&amp;#63;&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;best regards,&lt;br /&gt;Radik&lt;br /&gt;Comments: ** Comment from web user: RadikSalakhov ** &lt;p&gt;Checked again. The code above improved performance a little bit, but &amp;quot;rehash&amp;quot; method still takes a lot of processor time (see the screenshot)&lt;/p&gt;&lt;p&gt;best regards,&lt;br&gt;Radik&lt;/p&gt;</description><author>RadikSalakhov</author><pubDate>Thu, 10 Jan 2013 23:36:48 GMT</pubDate><guid isPermaLink="false">Commented Issue: Performance issue. FarseerPhysics.Fluids.SpatialTable.Rehash() [33651] 20130110113648P</guid></item><item><title>Commented Issue: Performance issue. FarseerPhysics.Fluids.SpatialTable.Rehash() [33651]</title><link>http://farseerphysics.codeplex.com/workitem/33651</link><description>Hello,&lt;br /&gt;&lt;br /&gt;I used version 3.3.1&amp;#40;stable one&amp;#41;. Now I use the latest version from source control &amp;#40;because of some solved bugs&amp;#41;.&lt;br /&gt;I noticed that after update my game works 7-10 times slower. I profiled it and found out that almost all processor time &amp;#40;26 &amp;#37; from totally used by the engine 31&amp;#37;&amp;#41; is used by method FarseerPhysics.Fluids.SpatialTable.Rehash&amp;#40;&amp;#41; &amp;#40;see the attachment&amp;#41;. &lt;br /&gt;&lt;br /&gt;It seems that method &amp;#38;quot&amp;#59;Clear&amp;#38;quot&amp;#59; &amp;#40;of generic List&amp;#41; is called so often, that Physics engine spend 75&amp;#37; of it&amp;#39;s time to do it&amp;#58;&lt;br /&gt;for &amp;#40;int i &amp;#61; 0&amp;#59; i &amp;#38;lt&amp;#59; _column&amp;#59; i&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                for &amp;#40;int j &amp;#61; 0&amp;#59; j &amp;#38;lt&amp;#59; _row&amp;#59; j&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;                &amp;#123;&lt;br /&gt;                    if &amp;#40;_nearby&amp;#91;i&amp;#93;&amp;#91;j&amp;#93; &amp;#33;&amp;#61; null&amp;#41;&lt;br /&gt;                        _nearby&amp;#91;i&amp;#93;&amp;#91;j&amp;#93;.Clear&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;Could you please fix it or optimize it somehow&amp;#63;&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;best regards,&lt;br /&gt;Radik&lt;br /&gt;Comments: ** Comment from web user: RadikSalakhov ** &lt;p&gt;Resolved by adding the following condition:&lt;/p&gt;&lt;p&gt;if (_nearby[i][j] != null &amp;amp;&amp;amp; _nearby[i][j].Count &amp;gt; 0)&lt;br&gt;   _nearby[i][j].Clear();&lt;/p&gt;</description><author>RadikSalakhov</author><pubDate>Thu, 10 Jan 2013 23:26:27 GMT</pubDate><guid isPermaLink="false">Commented Issue: Performance issue. FarseerPhysics.Fluids.SpatialTable.Rehash() [33651] 20130110112627P</guid></item><item><title>Created Issue: Performance issue. FarseerPhysics.Fluids.SpatialTable.Rehash() [33651]</title><link>http://farseerphysics.codeplex.com/workitem/33651</link><description>Hello,&lt;br /&gt;&lt;br /&gt;I used version 3.3.1&amp;#40;stable one&amp;#41;. Now I use the latest version from source control &amp;#40;because of some solved bugs&amp;#41;.&lt;br /&gt;I noticed that after update my game works 7-10 times slower. I profiled it and found out that almost all processor time &amp;#40;26 &amp;#37; from totally used by the engine 31&amp;#37;&amp;#41; is used by method FarseerPhysics.Fluids.SpatialTable.Rehash&amp;#40;&amp;#41; &amp;#40;see the attachment&amp;#41;. &lt;br /&gt;&lt;br /&gt;It seems that method &amp;#38;quot&amp;#59;Clear&amp;#38;quot&amp;#59; &amp;#40;of generic List&amp;#41; is called so often, that Physics engine spend 75&amp;#37; of it&amp;#39;s time to do it&amp;#58;&lt;br /&gt;for &amp;#40;int i &amp;#61; 0&amp;#59; i &amp;#38;lt&amp;#59; _column&amp;#59; i&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                for &amp;#40;int j &amp;#61; 0&amp;#59; j &amp;#38;lt&amp;#59; _row&amp;#59; j&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;                &amp;#123;&lt;br /&gt;                    if &amp;#40;_nearby&amp;#91;i&amp;#93;&amp;#91;j&amp;#93; &amp;#33;&amp;#61; null&amp;#41;&lt;br /&gt;                        _nearby&amp;#91;i&amp;#93;&amp;#91;j&amp;#93;.Clear&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;Could you please fix it or optimize it somehow&amp;#63;&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;br /&gt;best regards,&lt;br /&gt;Radik&lt;br /&gt;</description><author>RadikSalakhov</author><pubDate>Thu, 10 Jan 2013 23:20:07 GMT</pubDate><guid isPermaLink="false">Created Issue: Performance issue. FarseerPhysics.Fluids.SpatialTable.Rehash() [33651] 20130110112007P</guid></item><item><title>Created Issue: Add support for ChainShape (in addition to LoopShape) [33635]</title><link>http://farseerphysics.codeplex.com/workitem/33635</link><description>Neither Box2D.XNA, nor Farseer currently support ChainShapes, whereas Box2D supports them. In Box2D there is actually only a ChainShape file that contains both the LoopShape and the ChainShape implementation.&lt;br /&gt;&lt;br /&gt;Proper implementation would be to create a ChainShape class i guess. As a quick workaround the code in PathManager.ConvertPathToEdges could be tweaked to handle this case properly &amp;#40;as in handling ghost vertices automatically&amp;#41;&lt;br /&gt;&lt;br /&gt;Quick hack i am currently using in my code. This could be the base to hack ConvertPathToEdges. It would replace the &amp;#38;quot&amp;#59;else&amp;#38;quot&amp;#59; part &amp;#40;path is not closed&amp;#41;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            Vertices verts &amp;#61; groundPath.GetVertices&amp;#40;groundPath.ControlPoints.Count &amp;#42; groundSubdivisions&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;handle special case first edge, only has vertex3&lt;br /&gt;            EdgeShape firstEdge &amp;#61; new EdgeShape&amp;#40;verts&amp;#91;0&amp;#93;, verts&amp;#91;1&amp;#93;&amp;#41;&amp;#59;&lt;br /&gt;            firstEdge.Vertex3 &amp;#61; verts&amp;#91;2&amp;#93;&amp;#59;&lt;br /&gt;            firstEdge.HasVertex3 &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;handle special case last edge, only has vertex0&lt;br /&gt;            EdgeShape lastEdge &amp;#61; new EdgeShape&amp;#40;verts&amp;#91;verts.Count - 2&amp;#93;, verts&amp;#91;verts.Count - 1&amp;#93;&amp;#41;&amp;#59;&lt;br /&gt;            lastEdge.Vertex0 &amp;#61; verts&amp;#91;verts.Count - 3&amp;#93;&amp;#59;&lt;br /&gt;            lastEdge.HasVertex0 &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;            groundBody.CreateFixture&amp;#40;firstEdge&amp;#41;&amp;#59;&lt;br /&gt;            groundBody.CreateFixture&amp;#40;lastEdge&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;handle the rest of the edges, having both vertex0 and vertex3&lt;br /&gt;            for &amp;#40;int i &amp;#61; 1&amp;#59; i &amp;#38;lt&amp;#59; verts.Count-2&amp;#59; i&amp;#43;&amp;#43;&amp;#41;&lt;br /&gt;            &amp;#123;&lt;br /&gt;                EdgeShape edge &amp;#61; new EdgeShape&amp;#40;verts&amp;#91;i&amp;#93;, verts&amp;#91;i &amp;#43; 1&amp;#93;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;                edge.Vertex0 &amp;#61; verts&amp;#91;i - 1&amp;#93;&amp;#59;&lt;br /&gt;                edge.Vertex1 &amp;#61; verts&amp;#91;i    &amp;#93;&amp;#59;&lt;br /&gt;                edge.Vertex2 &amp;#61; verts&amp;#91;i &amp;#43; 1&amp;#93;&amp;#59;&lt;br /&gt;                edge.Vertex3 &amp;#61; verts&amp;#91;i &amp;#43; 2&amp;#93;&amp;#59;&lt;br /&gt;&lt;br /&gt;                edge.HasVertex0 &amp;#61; true&amp;#59;&lt;br /&gt;                edge.HasVertex3 &amp;#61; true&amp;#59;&lt;br /&gt;&lt;br /&gt;                groundBody.CreateFixture&amp;#40;edge&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;</description><author>instinctvfx</author><pubDate>Wed, 02 Jan 2013 18:48:06 GMT</pubDate><guid isPermaLink="false">Created Issue: Add support for ChainShape (in addition to LoopShape) [33635] 20130102064806P</guid></item><item><title>Commented Issue: Suggestion: Implement loose QuadTree to improve performance [32776]</title><link>http://farseerphysics.codeplex.com/workitem/32776</link><description>&amp;#60;p&amp;#62;QuadTree suffers from poor performance when there are fixtures lying over the boundaries of the children of the root node. This is a feature of quad trees in general.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;The performance hit can be bad -- if, say, 100 small fixtures are located at the center of World, they will all be stored in the root of the QuadTree. Then every Query and every RayCast will loop through those 100 small fixtures even if the queried area is nowhere near the center of World.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;To significantly improve performance in this situation, I modified QuadTree to become a &amp;#38;quot&amp;#59;loose quad tree&amp;#38;quot&amp;#59;.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Here is an introduction to loose quadtrees &amp;#40;he speaks about octrees, but the idea is the same&amp;#41;&amp;#58; http&amp;#58;&amp;#47;&amp;#47;www.tulrich.com&amp;#47;geekstuff&amp;#47;partitioning.html&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Here is a live demo of loose quadtrees &amp;#40;for comparison, you can click on &amp;#38;quot&amp;#59;Data Structures&amp;#38;quot&amp;#59; and choose MX-CIF Quadtree which seems to be the closest alternative to Farseer QuadTree&amp;#41;&amp;#58; http&amp;#58;&amp;#47;&amp;#47;donar.umiacs.umd.edu&amp;#47;quadtree&amp;#47;rectangles&amp;#47;loosequad.html&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;The idea is that each QuadTree node spans over an extended area. I settled for a 50 &amp;#37; increase in each of the four directions which suited my case well. Tree nodes will overlap. As before, fixtures are added to the smallest node that completely contains the fixture. If there are many such nodes, choose the one where the fixture is the farthest from the node borders.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;When splitting tree nodes, I consider the unextended node area, split it into four non-overlapping quadrants and then extend them by 50 &amp;#37;. Children must be extended to make them overlap, that is key to good performance&amp;#41;. I reduce the parent node area to make the nodes reduce in size regardless of how large an extension you choose.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;In the World constructor, I expand the world area by 50 &amp;#37; and create the root node for that size. This is essential for performance. If I don&amp;#38;&amp;#35;39&amp;#59;t extend the root, then its children won&amp;#38;&amp;#35;39&amp;#59;t cover the borders of the world area, which results in poor performance.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;I have attached a ZIP with my modifications and the original Farseer 3.3.1 files for comparison. I wanted to include a patch but couldn&amp;#38;&amp;#35;39&amp;#59;t find any decent patch program for Windows &amp;#58;-&amp;#40;. The changes are quite few. You can also recover the original QuadTree behaviour even after these modifications if you set the extension to 0 &amp;#37; from Settings.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;The most essential change is of course in QuadTree.cs. Affected methods are Partition and AddNode. Partition finds the correct subnode for an AABB by computing how well each subnode contains the AABB. AddNode is modified only for the part where a node is split into four subnodes.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Also affected is QuadTreeBroadPhase.cs. In the constructor I extend the world area to avoid possible performance problems at world borders, as mentioned above.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Collision.cs contains three helpers. New AABB properties Fattened and Thinned can be used to add and remove the quad tree node extension. A new method AABB.ContainmentDistance&amp;#40;AABB&amp;#41; is used like AABB.Contains&amp;#40;AABB&amp;#41; except that it returns a float denoting the distance the provided AABB can move to any direction while staying contained in this AABB. It returns a negative number of the given AABB is not contained in this AABB.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Finally, Settings.cs contains a new constant, QuadTreeLooseness, which is the extension ratio of quadtree nodes. I settled for 0.5 which gives 50 &amp;#37; extension to each direction. Setting this to 0 would give the old QuadTree behaviour with its performance penalties.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&lt;br /&gt;Comments: ** Comment from web user: genbox ** &lt;p&gt;I implemented the loose quadtree, but overall performance dropped in my testcases. This is perhaps the fat and thin AABBs are generated all the time.&lt;/p&gt;</description><author>genbox</author><pubDate>Sun, 30 Dec 2012 02:48:05 GMT</pubDate><guid isPermaLink="false">Commented Issue: Suggestion: Implement loose QuadTree to improve performance [32776] 20121230024805A</guid></item><item><title>Created Issue: Can't use x:name on multiple shapes in a PhysicsSprite [33603]</title><link>http://farseerphysics.codeplex.com/workitem/33603</link><description>Add two ucSmileys to the Physics Helper Metro Demo.Advanced ucMainGame.xaml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Run the project in debug mode with the simulator and you will get an error of &lt;br /&gt;&lt;br /&gt;An exception of type &amp;#39;System.ArgumentException&amp;#39; occurred in mscorlib.dll but was not handled in user code&lt;br /&gt;&lt;br /&gt;WinRT information&amp;#58; The name already exists in the tree&amp;#58; smiley_1.&lt;br /&gt;</description><author>dmarchant</author><pubDate>Mon, 24 Dec 2012 21:29:27 GMT</pubDate><guid isPermaLink="false">Created Issue: Can't use x:name on multiple shapes in a PhysicsSprite [33603] 20121224092927P</guid></item><item><title>Closed Issue: Setting body.enabled = false at creation causes error in broadphase collision [33101]</title><link>http://farseerphysics.codeplex.com/workitem/33101</link><description>&amp;#60;p&amp;#62;Setting body.enabled &amp;#61; false at creation causes error in broadphase collision if there&amp;#38;&amp;#35;39&amp;#59;s another body in the vicinity. This is strange as the body should not be considered in the broadphase collision detection. This issue has been discussed in for example&amp;#58;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;http&amp;#58;&amp;#47;&amp;#47;gamedev.stackexchange.com&amp;#47;questions&amp;#47;22860&amp;#47;indexoutofrangeexception-on-world-step-after-enabling-disabling-a-farseer-physic&amp;#47;35626&amp;#35;35626&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;I made a quick workaround for my own project by adding the following to the ContactManager.cs-file in the method Collide&amp;#40;&amp;#41; before calling BroadPhase.TestOverlap-function. &amp;#40;Actually I added it at line 249&amp;#41;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;        if &amp;#40;bodyA.Enabled &amp;#61;&amp;#61; false &amp;#124;&amp;#124; bodyB.Enabled &amp;#61;&amp;#61; false&amp;#41;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;        &amp;#123;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;            continue&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;        &amp;#125;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;This might be considered a hack though...&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&lt;br /&gt;Comments: &lt;p&gt;No answer in 30 days. Closing.&lt;/p&gt;</description><author>genbox</author><pubDate>Fri, 21 Dec 2012 01:45:40 GMT</pubDate><guid isPermaLink="false">Closed Issue: Setting body.enabled = false at creation causes error in broadphase collision [33101] 20121221014540A</guid></item><item><title>Commented Issue: Suggestion: Implement loose QuadTree to improve performance [32776]</title><link>http://farseerphysics.codeplex.com/workitem/32776</link><description>&amp;#60;p&amp;#62;QuadTree suffers from poor performance when there are fixtures lying over the boundaries of the children of the root node. This is a feature of quad trees in general.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;The performance hit can be bad -- if, say, 100 small fixtures are located at the center of World, they will all be stored in the root of the QuadTree. Then every Query and every RayCast will loop through those 100 small fixtures even if the queried area is nowhere near the center of World.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;To significantly improve performance in this situation, I modified QuadTree to become a &amp;#38;quot&amp;#59;loose quad tree&amp;#38;quot&amp;#59;.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Here is an introduction to loose quadtrees &amp;#40;he speaks about octrees, but the idea is the same&amp;#41;&amp;#58; http&amp;#58;&amp;#47;&amp;#47;www.tulrich.com&amp;#47;geekstuff&amp;#47;partitioning.html&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Here is a live demo of loose quadtrees &amp;#40;for comparison, you can click on &amp;#38;quot&amp;#59;Data Structures&amp;#38;quot&amp;#59; and choose MX-CIF Quadtree which seems to be the closest alternative to Farseer QuadTree&amp;#41;&amp;#58; http&amp;#58;&amp;#47;&amp;#47;donar.umiacs.umd.edu&amp;#47;quadtree&amp;#47;rectangles&amp;#47;loosequad.html&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;The idea is that each QuadTree node spans over an extended area. I settled for a 50 &amp;#37; increase in each of the four directions which suited my case well. Tree nodes will overlap. As before, fixtures are added to the smallest node that completely contains the fixture. If there are many such nodes, choose the one where the fixture is the farthest from the node borders.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;When splitting tree nodes, I consider the unextended node area, split it into four non-overlapping quadrants and then extend them by 50 &amp;#37;. Children must be extended to make them overlap, that is key to good performance&amp;#41;. I reduce the parent node area to make the nodes reduce in size regardless of how large an extension you choose.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;In the World constructor, I expand the world area by 50 &amp;#37; and create the root node for that size. This is essential for performance. If I don&amp;#38;&amp;#35;39&amp;#59;t extend the root, then its children won&amp;#38;&amp;#35;39&amp;#59;t cover the borders of the world area, which results in poor performance.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;I have attached a ZIP with my modifications and the original Farseer 3.3.1 files for comparison. I wanted to include a patch but couldn&amp;#38;&amp;#35;39&amp;#59;t find any decent patch program for Windows &amp;#58;-&amp;#40;. The changes are quite few. You can also recover the original QuadTree behaviour even after these modifications if you set the extension to 0 &amp;#37; from Settings.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;The most essential change is of course in QuadTree.cs. Affected methods are Partition and AddNode. Partition finds the correct subnode for an AABB by computing how well each subnode contains the AABB. AddNode is modified only for the part where a node is split into four subnodes.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Also affected is QuadTreeBroadPhase.cs. In the constructor I extend the world area to avoid possible performance problems at world borders, as mentioned above.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Collision.cs contains three helpers. New AABB properties Fattened and Thinned can be used to add and remove the quad tree node extension. A new method AABB.ContainmentDistance&amp;#40;AABB&amp;#41; is used like AABB.Contains&amp;#40;AABB&amp;#41; except that it returns a float denoting the distance the provided AABB can move to any direction while staying contained in this AABB. It returns a negative number of the given AABB is not contained in this AABB.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Finally, Settings.cs contains a new constant, QuadTreeLooseness, which is the extension ratio of quadtree nodes. I settled for 0.5 which gives 50 &amp;#37; extension to each direction. Setting this to 0 would give the old QuadTree behaviour with its performance penalties.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&lt;br /&gt;Comments: ** Comment from web user: genbox ** &lt;p&gt;I will surely take a look at this and see if we gain some improvements in regards to performance.&lt;/p&gt;</description><author>genbox</author><pubDate>Mon, 22 Oct 2012 14:25:57 GMT</pubDate><guid isPermaLink="false">Commented Issue: Suggestion: Implement loose QuadTree to improve performance [32776] 20121022022557P</guid></item><item><title>Commented Issue: WorldSerializer failing with object[] as UserData [32910]</title><link>http://farseerphysics.codeplex.com/workitem/32910</link><description>&amp;#60;p&amp;#62;If a fixture&amp;#38;&amp;#35;39&amp;#59;s UserData contains an object&amp;#91;&amp;#93;, which in my case contains 3 variables&amp;#58;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;Vertices object&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;int object&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;TexturedFixture object&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;The XmlSerializer class throws an exception every time you try to serialize an object array which has either of the 1st or 3rd variables&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&lt;br /&gt;Comments: ** Comment from web user: genbox ** &lt;p&gt;Vertices is not marked as serializable and that is probably why you get the exception. I'm not sure TexturedFixture is ever going to be serializable, as it is not part of the actual engine.&lt;/p&gt;&lt;p&gt;I will make sure that more parts of the engine are serializable in FPE 3.5.&lt;/p&gt;</description><author>genbox</author><pubDate>Mon, 22 Oct 2012 14:16:05 GMT</pubDate><guid isPermaLink="false">Commented Issue: WorldSerializer failing with object[] as UserData [32910] 20121022021605P</guid></item><item><title>Commented Issue: Vertices.ForceCounterClockWise() doesn't make any sense [31618]</title><link>http://farseerphysics.codeplex.com/workitem/31618</link><description>&amp;#60;p&amp;#62;I&amp;#38;&amp;#35;39&amp;#59;m not sure exactly what this method is supposed to do, it says that it &amp;#38;quot&amp;#59;forces&amp;#38;quot&amp;#59; Counter Clockwise order so does that mean that it&amp;#38;&amp;#35;39&amp;#59;s supposed to sort them in a Counter Clockwise order&amp;#63;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;If yes, then I&amp;#38;&amp;#35;39&amp;#59;d like to say that this is not what it is doing.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;If no, then I think it&amp;#38;&amp;#35;39&amp;#59;s useless to have a method that reverses the order of the verticies if they&amp;#38;&amp;#35;39&amp;#59;re not in Counter Clockwise order.&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&lt;br /&gt;Comments: ** Comment from web user: hassanselim0 ** &lt;p&gt;Thanks for your reply (even though it's exactly 1 year late :D).&lt;br&gt;It was just that in the project I was working on (1 year ago!) I had a very rough-shaped body (it was actually captured from a first-gen Microsoft Surface/PixelSense multi-touch screen) and I expected this method to sort the verticies of that body for me, maybe you should specify (in Documentation Comments) that it doesn't actually sort the verticies and that it just takes already sorted verticies and make sure they're in the correct order.&lt;br&gt;Anyways, I ended up using the EarclipDecomposer to split my unsorted bulk of verticies into smaller sorted collection of verticies which are then set as the fixture shapes of a body, and thankfully I was later able to optimize everything to make it run quick enough for my use :)&lt;/p&gt;</description><author>hassanselim0</author><pubDate>Sun, 21 Oct 2012 23:48:20 GMT</pubDate><guid isPermaLink="false">Commented Issue: Vertices.ForceCounterClockWise() doesn't make any sense [31618] 20121021114820P</guid></item></channel></rss>