Merge remote branch 'origin/divVerent/pangofix'
authorRudolf Polzer <divverent@alientrap.org>
Sun, 5 Dec 2010 15:52:23 +0000 (16:52 +0100)
committerRudolf Polzer <divverent@alientrap.org>
Sun, 5 Dec 2010 15:52:23 +0000 (16:52 +0100)
COMPILING
radiant/brush.h
radiant/entityinspector.cpp
tools/quake3/q3map2/map.c

index ab74b03..4b57fbb 100644 (file)
--- a/COMPILING
+++ b/COMPILING
@@ -1,23 +1,22 @@
 
-developer documentation for GtkRadiant 1.5.0-div0
-=================================================
+developer documentation for NetRadiant
+======================================
 
 (NOTE: outdated stuff has been ROT13ed)
 
 getting the source
 ==================
 
-The latest source is available from the Subversion repository.
-  https://zerowing.idsoftware.com/svn/radiant/GtkRadiant/trunk/
+The latest source is available from the git repository.
+  git://git.icculus.org/divverent/netradiant.git
 
-The subversion client can be obtained from the Subversion site.
-  http://subversion.tigris.org
+The git client can be obtained from the Subversion site.
+  http://git-scm.org
 
-To get a copy of the source using the commandline Subversion client:
+To get a copy of the source using the commandline git client:
   Change the current directory to the desired location for the source.
-  svn checkout http://svn.icculus.org/netradiant/trunk/ NetRadiant
-  cd NetRadiant
-  sh download-gamepacks.sh
+  git clone git://git.icculus.org/divverent/netradiant.git
+  cd netradiant
 
 
 
@@ -40,7 +39,7 @@ build:
 run 'make'
 
 run:
-Execute './GtkRadiant/install/radiant.x86' (or './GtkRadiant/install/radiant.ppc' on osx)
+Execute 'install/radiant.x86'
 
 OSX(using X-windows)
 ====================
index 75d4761..158077f 100644 (file)
@@ -1542,10 +1542,13 @@ void add_brush_filter(BrushFilter& filter, int mask, bool invert = false);
 
 
 /// \brief Returns true if 'self' takes priority when building brush b-rep.
-inline bool plane3_inside(const Plane3& self, const Plane3& other)
+inline bool plane3_inside(const Plane3& self, const Plane3& other, bool selfIsLater)
 {
   if(vector3_equal_epsilon(self.normal(), other.normal(), 0.001))
   {
+    // same plane? prefer the one with smaller index
+    if(self.dist() == other.dist())
+      return selfIsLater;
     return self.dist() < other.dist();
   }
   return true;
@@ -2420,7 +2423,7 @@ private:
     // duplicate plane
     for(std::size_t i = 0; i < m_faces.size(); ++i)
     {
-      if(index != i && !plane3_inside(m_faces[index]->plane3(), m_faces[i]->plane3()))
+      if(index != i && !plane3_inside(m_faces[index]->plane3(), m_faces[i]->plane3(), index < i))
       {
         return false;
       }
index ab9cabd..b563678 100644 (file)
@@ -1058,6 +1058,7 @@ public:
     m_creators.insert(Creators::value_type("model", &StatelessAttributeCreator<ModelAttribute>::create));
     m_creators.insert(Creators::value_type("sound", &StatelessAttributeCreator<SoundAttribute>::create));
     m_creators.insert(Creators::value_type("vector3", &StatelessAttributeCreator<Vector3Attribute>::create));
+    m_creators.insert(Creators::value_type("real3", &StatelessAttributeCreator<Vector3Attribute>::create));
   }
   EntityAttribute* create(const char* type, const char* name)
   {
index 448a24f..d61f51b 100644 (file)
@@ -251,7 +251,7 @@ int FindFloatPlane( vec3_t innormal, vec_t dist, int numPoints, vec3_t *points )
                        /* ydnar: test supplied points against this plane */
                        for( j = 0; j < numPoints; j++ )
                        {
-                               d = DotProduct( points[ j ], normal ) - dist;
+                               d = DotProduct( points[ j ], p->normal ) - p->dist;
                                if( fabs( d ) > distanceEpsilon )
                                        break;
                        }
@@ -284,7 +284,22 @@ int FindFloatPlane( vec3_t innormal, vec_t dist, int numPoints, vec3_t *points )
        SnapPlane( normal, &dist, centerofweight );
        for( i = 0, p = mapplanes; i < nummapplanes; i++, p++ )
        {
-               if( PlaneEqual( p, normal, dist ) )
+               if( !PlaneEqual( p, normal, dist ) )
+                       continue;
+
+               /* ydnar: uncomment the following line for old-style plane finding */
+               //%     return i;
+                       
+               /* ydnar: test supplied points against this plane */
+               for( j = 0; j < numPoints; j++ )
+               {
+                       d = DotProduct( points[ j ], p->normal ) - p->dist;
+                       if( fabs( d ) > distanceEpsilon )
+                               break;
+               }
+               
+               /* found a matching plane */
+               if( j >= numPoints )
                        return i;
        }