示例#1
0
        /// <summary>
        /// move to geometry to current space
        /// </summary>
        protected void MoveToSpace()
        {
            // remove all current shapes from their spaces and add them to the
            // new one
            //std::vector<GeomData*>::iterator iter;
            //for ( iter = mGeomDataList.begin(); iter != mGeomDataList.end(); ++iter )
            for (int i = 0; i < geomDataList.Count; i++)
            {
                if (geomDataList[i].TransformID != null)
                {
                    // This geom uses a transform, so apply the new space only
                    // to the transform geom.
                    //				dSpaceRemove( ( *iter ) ->spaceID, ( *iter ) ->transformID );
                    geomDataList[i].SpaceID.Remove(geomDataList[i].TransformID);
                    //				dSpaceAdd( mSpaceID, ( *iter ) ->transformID );
                    spaceID.Add(geomDataList[i].TransformID);
                }
                else
                {
                    // Normal geom with no transform.
                    //				dSpaceRemove( ( *iter ) ->spaceID, ( *iter ) ->geomID );
                    geomDataList[i].SpaceID.Remove(geomDataList[i].GeomID);
                    //				dSpaceAdd( mSpaceID, ( *iter ) ->geomID );
                    spaceID.Add(geomDataList[i].GeomID);
                }

                geomDataList[i].SpaceID = spaceID;
            }
        }