Exemple #1
0
    override public bool Init(ObjectInitParam param)
    {
        PlayerInitParam plyParam = (PlayerInitParam)param;

        if (!DataManager.PlayerTable.ContainsKey(plyParam.player_data.resId))
        {
            return(false);
        }
        mRes         = DataManager.PlayerTable[plyParam.player_data.resId] as PlayerTableItem;
        mModelResID  = mRes.model;
        mUseWeaponID = plyParam.player_data.main_weaponId;

        if (!base.Init(param))
        {
            return(false);
        }

        mLevel = plyParam.player_data.level;

        ApplyProperty(plyParam.init_property);

        mHeadNode = PlayerHeadUIManager.Instance.CreatePlayerHeadUI();
        mHeadNode.SetName(GetName());
        mHeadNode.SetTitle(GetTitleImg());
        mHeadNode.Show();
        SetLeague(LeagueDef.Red);
        return(true);
    }
Exemple #2
0
 public void PrintAll()
 {
     if (HeadNode.Next != null)
     {
         HeadNode.PrintNext();
     }
 }
Exemple #3
0
 public void Print()
 {
     if (HeadNode != null)
     {
         HeadNode.Print();
     }
 }
Exemple #4
0
    private void Awake()
    {
        _snake = new HeadNode(startingLocation, snakeColor, GameManager.Instance.tileColor);

        for (int i = 0; i < startingTailLength; i++)
        {
            _snake.AddTail();
        }
    }
Exemple #5
0
 override public void Destroy()
 {
     if (mHeadNode != null)
     {
         PlayerHeadUIManager.Instance.ReleasePlayerHeadUI(mHeadNode);
         mHeadNode = null;
     }
     base.Destroy();
 }
Exemple #6
0
        /// <summary>
        /// Add Object to End
        /// </summary>
        /// <param name="data"></param>
        public void AddToEnd(type data)
        {
            if (HeadNode == null)
            {
                HeadNode = new Node <type>(data);
            }
            else
            {
                HeadNode.AddToEnd(data);
            }

            Count++;
        }
Exemple #7
0
        public void AddToEndOfList(LinkedListNode <T> node)
        {
            Count++;
            TailNode = node;

            if (HeadNode == null)
            {
                HeadNode = node;
            }
            else
            {
                HeadNode.AddToEndOfList(node);
            }
        }
Exemple #8
0
    public HeadNode CreatePlayerHeadUI()
    {
        HeadNode node = null;

        if (mCacheQueue.Count > 0)
        {
            node = mCacheQueue.Dequeue() as HeadNode;
        }
        else
        {
            node = new HeadNode();
            node.Init();
        }

        return(node);
    }
Exemple #9
0
    protected override void HandleDispose(object additionalData)
    {
        slConstants.FoodType foodType = m_IsReaminsFoodContamination ? slConstants.FoodType.Contamination : slConstants.FoodType.Remains;
        float power = m_IsReaminsFoodContamination ? m_RemainsFoodContaminationPower : m_TweakableProperties.RemainsFoodPower;

        if (m_AliveState != AliveState.DeadFinishGame)
        {
            slWorld.GetInstance().GetFoodSystem().AddCreateEvent(foodType, m_Head.GetPosition(), m_Properties.DeadFoodColor, power);
            slWorld.GetInstance().GetFoodSystem().AddCreateEvent(foodType, m_Clothes.GetPosition(), m_Properties.DeadFoodColor, power);
            foreach (BodyNode node in m_Bodys)
            {
                slWorld.GetInstance().GetFoodSystem().AddCreateEvent(foodType, node.GetPosition(), m_Properties.DeadFoodColor, power);
            }
        }

        m_SkillEventArgs = null;

        m_Controller.UnControllerSnake();
        m_Controller = null;

        m_Head.Deactive();
        slWorld.GetInstance().GetSnakeSystem().GetHeadPool(m_SnakeName).Push(m_Head);
        m_Head = null;

        m_Clothes.Deactive();
        slWorld.GetInstance().GetSnakeSystem().GetClothesPool(m_SnakeName).Push(m_Clothes);
        m_Clothes = null;

        int bodyCount = m_Bodys.Count;

        for (int iBody = 0; iBody < bodyCount; iBody++)
        {
            BodyNode bodyNode = m_Bodys.PopBack();
            bodyNode.Deactive();
            m_BodyPool.Push(bodyNode);
        }
        m_Bodys.Clear();
        m_Bodys = null;

        Destroy(m_TweakableProperties);
        m_TweakableProperties = null;

        Destroy(m_TweakableProperties);
        m_Properties = null;
    }
Exemple #10
0
		/// <summary>
		/// 创建数据集
		/// </summary>
		/// <param name="headNode">VCT头节点</param>
        public Dataset CreateDataset(HeadNode headNode, string strName)
        {
            if (headNode == null)
                return null;
            try
            {
                m_Dataset = new Dataset(m_pIWorkspace);
                if (m_Dataset.CreateESRIDataset(strName, headNode))
                    return m_Dataset;

                return m_Dataset;
            }
            catch (Exception ex)
            {
                Logger.WriteErrorLog(ex);
                return null;
            }
        }
Exemple #11
0
        /// <summary>
        /// Returns the linked list as a comma-delimited string of values.
        /// </summary>
        /// <returns>The linked list as a comma-delimited string of values.</returns>
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            if (HeadNode != null)
            {
                sb.Append(HeadNode.ToString());

                Node <T> next = HeadNode.Next;
                while (next != null)
                {
                    sb.AppendFormat(", {0}", next.ToString());
                    next = next.Next;
                }
            }

            return(sb.ToString());
        }
        ///-------------------------------------------------------------------------------------------------
        /// <summary>   Node list addat front. </summary>
        ///
        /// <remarks>   Jaege, 17/09/2018. </remarks>
        ///
        /// <param name="aNode">    The node. </param>
        ///-------------------------------------------------------------------------------------------------


        public void NodeListAddatFront(Node aNode)
        {
            if ((HeadNode == null) && (CurrentNode == null) && (TailNode == null))
            {
                // this firstNode in the list
                HeadNode    = aNode;
                CurrentNode = aNode;
                TailNode    = aNode;
                count++;
            }
            else
            {
                CurrentNode = aNode;
                HeadNode.SetPrevious(aNode);
                CurrentNode.SetNext(HeadNode);
                SetHeadNode(CurrentNode);
                count++;
            }
        }
Exemple #13
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>   Adds a node. </summary>
        ///
        /// <remarks>   Brayden, 16/09/2018. </remarks>
        ///
        /// <param name="node"> The node. </param>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public void AddNode(Node node)
        {
            if ((HeadNode == null) && (CurrentNode == null) && (TailNode == null))
            {
                // This is the first node in the list
                HeadNode    = node;
                CurrentNode = node;
                TailNode    = node;
                count++;
            }
            else
            {
                CurrentNode = node;
                HeadNode.setPrevious(node);
                CurrentNode.setNext(HeadNode);
                setHeadNode(CurrentNode);
                count++;
            }
        }
Exemple #14
0
        /// <summary>
        /// vct转mdb的时候创建esri数据集
        /// </summary>
        /// <param name="pWorkspace"></param>
        /// <param name="sDatasetName"></param>
        /// <param name="pHeadnode"></param>
        /// <returns></returns>
        public bool CreateESRIDataset(string strDatasetName, HeadNode pHeadnode)
        {
            try
            {
                ISpatialReference pISpatialReference = CreateProjection(pHeadnode);
                if (pISpatialReference != null)
                {
                    IFeatureWorkspace pIFeatureWorkspace = this.m_pIWorkspace as IFeatureWorkspace;
                    this.m_pIDataset = pIFeatureWorkspace.CreateFeatureDataset(strDatasetName, pISpatialReference);
                    return true;
                }

            }
            catch (Exception ex)
            {
                LogAPI.WriteErrorLog(ex);
            }
            return false;
        }
Exemple #15
0
 public void AddToTail(string inputData)
 {
     HeadNode.AddToTail(inputData);
     NumberOfNodes++;
 }
Exemple #16
0
 public override void SetParent(ITreeNode parent) => HeadNode.SetParent(parent);
Exemple #17
0
    private IEnumerator MoveSnakeAStar(HeadNode snake, Queue <GridTile> path, GridTile target)
    {
        while (GameManager.Instance.pause)
        {
            yield return(new WaitForEndOfFrame());
        }

        GridTile pos = GameManager.GameGrid.grid[snake.position.x, snake.position.y];

        // No path available
        if (path == null || path.Count == 0)
        {
            // Do some random movement then check if path is available
            int i = 0;
            while (i < 4)
            {
                switch (i)
                {
                case 0:
                    if (!snake.CheckIfCollide(snake.LimitMoveToGrid(snake.position + Vector2Int.up)))
                    {
                        snake.MoveSnake(Vector2Int.up);
                        _dir = Vector2Int.up;
                        yield return(new WaitForSeconds(GameManager.Instance.gameSpeed));

                        SnakePath(target);
                        yield break;
                    }

                    i++;
                    break;

                case 1:
                    if (!snake.CheckIfCollide(snake.LimitMoveToGrid(snake.position + Vector2Int.down)))
                    {
                        snake.MoveSnake(Vector2Int.down);
                        _dir = Vector2Int.down;
                        yield return(new WaitForSeconds(GameManager.Instance.gameSpeed));

                        SnakePath(target);
                        yield break;
                    }
                    i++;
                    break;

                case 2:
                    if (!snake.CheckIfCollide(snake.LimitMoveToGrid(snake.position + Vector2Int.left)))
                    {
                        snake.MoveSnake(Vector2Int.left);
                        _dir = Vector2Int.left;
                        yield return(new WaitForSeconds(GameManager.Instance.gameSpeed));

                        SnakePath(target);
                        yield break;
                    }
                    i++;
                    break;

                case 3:
                    if (!snake.CheckIfCollide(snake.LimitMoveToGrid(snake.position + Vector2Int.right)))
                    {
                        snake.MoveSnake(Vector2Int.right);
                        _dir = Vector2Int.right;
                        yield return(new WaitForSeconds(GameManager.Instance.gameSpeed));

                        SnakePath(target);
                        yield break;
                    }
                    i++;
                    break;
                }
            }

            // Can't move trigger win
            GameManager.Instance.Win();
            yield break;
        }

        // First path is the tile that the snake stands on
        path.Dequeue();

        foreach (var grid in path)
        {
            if (grid == null)
            {
                yield break;
            }

            while (GameManager.Instance.pause)
            {
                yield return(new WaitForEndOfFrame());
            }

            if (grid == GameManager.GameGrid.GetTile(snake.position))
            {
                SnakePath(target);
                yield break;
            }

            if (snake.child != null)
            {
                if (grid == GameManager.GameGrid.GetTile(snake.child.position))
                {
                    SnakePath(target);
                    yield break;
                }
            }

            if (!grid.walkable)
            {
                SnakePath(target);
                yield break;
            }

            _dir = grid.position - snake.position;
            snake.MoveSnakePos(grid.position);
            yield return(new WaitForSeconds(GameManager.Instance.gameSpeed));
        }
    }
Exemple #18
0
        public T GetAtIndex(int index)
        {
            T nodeVal = HeadNode.GetAtIndex(index);

            return(nodeVal);
        }
Exemple #19
0
        /// <summary>
        /// 创建空间参考
        /// </summary>
        /// <param name="headNode">VCT头节点</param>
        private ISpatialReference CreateProjection(HeadNode headNode)
        {
            try
            {
                string sPrjInfo = "";
                //根据投影参数中的长半轴值,来判断是什么坐标系统(北京54,西安80,WGS-84,其他地方坐标系)
                //北京54
                double dMajorAxis = headNode.MajorMax.Y;

                //读取参考椭球的名称 (名称,长半轴,扁率的倒数)
                string sProjection = headNode.Spheroid.Split(',')[0];
                dMajorAxis = Math.Abs(dMajorAxis - 6378245);
                //if (fabs( m_dSemiMajorAxis - 6378245) < 0.0001)
                if (dMajorAxis < 0.0001)
                {
                    sPrjInfo = string.Format("PROJCS[\"{0}\",GEOGCS[\"GCS_Beijing_1954\",DATUM[\"D_Beijing_1954\""
                        + ",SPHEROID[\"{1}\",6378140.0,298.257]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
                    + "PROJECTION[\"Gauss_Kruger\"],PARAMETER[\"False_Easting\",{2}],PARAMETER[\"False_Northing\",0.0],"
                    + "PARAMETER[\"Central_Meridian\",{3}],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],"
                    + "UNIT[\"Meter\",1.0]]", sProjection, "Gauss-Krueger", headNode.Excursion, headNode.Parametetor.OriginLongtitude);

                }
                //西安80
                else
                {
                    // sPrjInfo = string.Format("PROJCS["%s\",GEOGCS[\"GCS_Xian_1980\",DATUM[\"D_Xian_1980\",SPHEROID[\"%s\",6378140.0,298.257]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Gauss_Kruger\"],PARAMETER[\"False_Easting\",%s],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",%f],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]", m_strProjection, m_strSpheroid, sPianYi, m_lMeridian);
                    sPrjInfo = string.Format("PROJCS[\"{0}\",GEOGCS[\"GCS_Xian_1980\",DATUM[\"D_Xian_1980\","
                    + "SPHEROID[\"{1}\",6378140.0,298.257]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
                    + "PROJECTION[\"Gauss_Kruger\"],PARAMETER[\"False_Easting\",{2}],PARAMETER[\"False_Northing\",0.0],"
                    + "PARAMETER[\"Central_Meridian\",{3}],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],"
                    + "UNIT[\"Meter\",1.0]]", sProjection, "Gauss-Krueger", headNode.Parametetor.EastOffset, headNode.Parametetor.OriginLongtitude);
                }
                //将坐标信息写入到Prj文件
                string sPrjFilename = Application.StartupPath + "tempPrj.prj";
                FileStream fs = File.Create(sPrjFilename);
                StreamWriter sw = new StreamWriter(fs);
                sw.Write(sPrjInfo);
                sw.Close();
                fs.Close();

                //根据Prj文件生成空间参考
                ISpatialReferenceFactory ipSpatialFactory = new SpatialReferenceEnvironmentClass();
                ISpatialReference pSpatialReference = ipSpatialFactory.CreateESRISpatialReferenceFromPRJFile(sPrjFilename);
                pSpatialReference.SetDomain(headNode.MajorMin.X,headNode.MajorMax.X,headNode.MajorMin.Y,headNode.MajorMax.Y);//
                //设置精度,防止cut失败
                //设置六位小数精度。以保证导出时也是六位
                ISpatialReferenceTolerance ipSrTolerance = pSpatialReference as ISpatialReferenceTolerance;

                ipSrTolerance.XYTolerance = 0.000001;
                ipSrTolerance.MTolerance = 0.001;
                ipSrTolerance.ZTolerance = 0.001;

                ISpatialReferenceResolution ipSrResolution = pSpatialReference as ISpatialReferenceResolution;
                ipSrResolution.MResolution = 0.001;
                ipSrResolution.set_XYResolution(true, 0.000001);
                ipSrResolution.set_ZResolution(true, 0.001);

                //删除生成的Prj文件
                File.Delete(sPrjFilename);


                //ISpatialReference pSpatialReference;
                //ISpatialReferenceFactory pSpatialreferenceFactory;
                //pSpatialreferenceFactory = new SpatialReferenceEnvironmentClass();
                //IGeographicCoordinateSystem pGeographicCoordinateSystem;
                //pGeographicCoordinateSystem = pSpatialreferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCS3Type.esriSRGeoCS_Xian1980);
                //pSpatialReference = pGeographicCoordinateSystem as ISpatialReference;
                //pSpatialReference.SetFalseOriginAndUnits(-180, -90, 1000000);//

                return pSpatialReference;
            }
            catch (Exception ex)
            {
                LogAPI.WriteLog("创建空间参考失败,系统默认创建空的空间参考!\r\n");
                LogAPI.WriteErrorLog(ex);
                ISpatialReference pSpatialReference = new UnknownCoordinateSystemClass();
                pSpatialReference.SetDomain(headNode.MajorMin.X, headNode.MajorMax.X, headNode.MajorMin.Y, headNode.MajorMax.Y);//
                return pSpatialReference;
            }
        }
 public EnumeratorForward(IListNode <TData> node)
 {
     Current = new HeadNode {
         Next = node
     };
 }
Exemple #21
0
    protected override void HandleInitialize(object additionalData)
    {
        InitializeAdditionalData initializeData = additionalData as InitializeAdditionalData;

        hwmDebug.Assert(initializeData.NodeCount >= slConstants.SNAKE_INITIALIZEZ_NODE_MINCOUNT, "initializeData.NodeCount >= slConstants.SNAKE_INITIALIZEZ_NODE_MINCOUNT");

        m_AliveState = AliveState.Alive;

        m_SnakeName           = initializeData.SnakeName;
        m_TweakableProperties = slWorld.GetInstance().GetSnakeSystem().GetTweakableProperties(initializeData.TweakableProperties);
        m_Properties          = slWorld.GetInstance().GetSnakeSystem().GetProperties(m_SnakeName);

        m_Power = initializeData.NodeCount * m_TweakableProperties.NodeToPower;

        #region Head
        m_Head = slWorld.GetInstance().GetSnakeSystem().GetHeadPool(m_SnakeName).Pop();
        m_Head.Active(this);
        m_Head.SetPositionAndRotation(initializeData.HeadPosition, initializeData.HeadRotation);
        #endregion

        #region Clothes
        m_Clothes = slWorld.GetInstance().GetSnakeSystem().GetClothesPool(m_SnakeName).Pop();
        m_Clothes.Active(this);
        m_Clothes.SetPositionAndRotation(initializeData.HeadPosition + initializeData.HeadRotation * new Vector3(0, -slConstants.SNAKE_NODE_TO_NODE_DISTANCE, 0)
                                         , initializeData.HeadRotation);
        #endregion

        #region Body
        m_BodyPool = slWorld.GetInstance().GetSnakeSystem().GetBodyPool(m_SnakeName);

        m_Bodys = new hwmDeque <BodyNode>(16);
        Vector3 bodyToClothesOffset = initializeData.HeadRotation * new Vector3(0, -slConstants.SNAKE_NODE_TO_NODE_DISTANCE, 0);
        Vector3 bodyToBodyOffset    = initializeData.HeadRotation * new Vector3(0, -slConstants.SNAKE_NODE_TO_NODE_DISTANCE, 0);
        for (int iNode = 3; iNode <= initializeData.NodeCount; iNode++)         // MagicNumber: 1->Head 2->Clothes 3->FirstBody
        {
            BodyNode node = m_BodyPool.Pop();
            node.Active(this);
            node.SetPositionAndRotation(m_Clothes.GetPosition() + bodyToClothesOffset + bodyToBodyOffset * (iNode - 3)
                                        , initializeData.HeadRotation);
            if (node.Sprite != null)
            {
                node.Sprite.sortingOrder = slConstants.SNAKE_SPRITERENDERER_MIN_ORDERINLAYER + initializeData.NodeCount - iNode;
            }

            m_Bodys.PushBack(node);
        }

        #endregion

        if (initializeData.IsBot)
        {
            m_Controller = gameObject.AddComponent <slAIController>();
            m_Controller.Initialize();
        }
        else
        {
            m_Controller = slWorld.GetInstance().GetPlayerController();
        }
        m_Controller.SetControllerSnake(this);

        TargetMoveDirection    = (initializeData.HeadRotation * Vector2.up).normalized;
        m_CurrentMoveDirection = TargetMoveDirection;
        m_SpeedState           = SpeedState.Normal;

        m_EnableDamageType = int.MaxValue;
        m_CanEatFood       = true;

        m_SkillEventArgs = new slSkill.EventArgs();

        m_IsReaminsFoodContamination = false;
    }
Exemple #22
0
 public void ReleasePlayerHeadUI(HeadNode node)
 {
     node.Hide();
     mCacheQueue.Enqueue(node);
 }
Exemple #23
0
		/// <summary>
		/// 获取VCT头节点
		/// </summary>
		public HeadNode GetHeadNode()
        {
            m_HeadNode = new HeadNode();
            ///头文件数据标识、版本号、坐标系统类型,维数
            m_HeadNode.Datamark =Metadata.MetaDataFile.HeadConfig.DataMark.Value;
            m_HeadNode.Version = Metadata.MetaDataFile.HeadConfig.Version.Defualt;// "1.0";
            m_HeadNode.CoordinateSystemType = Metadata.MetaDataFile.HeadConfig.CoordSystemType.Defualt;//"C";
            m_HeadNode.Dim =Convert.ToInt32( Metadata.MetaDataFile.HeadConfig.CoordinateDim.Defualt);

            ///投影类型
            m_HeadNode.Projection = Metadata.MetaDataFile.HeadConfig.Projection.Value;

            ///头文件X、Y坐标方向
            m_HeadNode.XaxisDirection = Metadata.MetaDataFile.HeadConfig.XAxisDirection.Defualt;
            m_HeadNode.YAxisDirection = Metadata.MetaDataFile.HeadConfig.YAxisDirection.Defualt;

            //获取投影参数
           // m_HeadNode.Parametetor = Metadata.MetaDataFile.HeadConfig.ProjectionParator.Value;//ipSpheroid.SemiMajorAxis.ToString("f6") + "," + ipSpheroid.SemiMinorAxis.ToString("f6");

            ///参考椭球,长半轴,扁率的倒数
            m_HeadNode.Spheroid = Metadata.MetaDataFile.HeadConfig.Spheroid.Value; //pSpatialReference.Name + "," + ipSpheroid.SemiMajorAxis.ToString("f6") + "," + flater.ToString("f6");

            //首子午线
            m_HeadNode.PrimeMeridian = Metadata.MetaDataFile.HeadConfig.PrimeMeridian.Value;// ipProjCoordSys.get_CentralMeridian(true).ToString();

            ///比例尺
            m_HeadNode.Scale = Metadata.MetaDataFile.HeadConfig.Scale.Value;

            ///坐标单位
            m_HeadNode.Unit = Metadata.MetaDataFile.HeadConfig.CoordinateUnit.Defualt;

            ///偏移量
            m_HeadNode.Excursion = Metadata.MetaDataFile.HeadConfig.Excurtion.Value;

            //if("3_Degree")


            //获取空间参考参数
            ISpatialReference pSpatialReference = m_pSpatialReference;
            ISpheroid ipSpheroid=null;
            IProjection ipProjection;

            ///投影坐标系
            if (m_pSpatialReference is IProjectedCoordinateSystem)
            {
                //获取空间参考参数
                IProjectedCoordinateSystem ipProjCoordSys = m_pSpatialReference as IProjectedCoordinateSystem;//投影参考信息
                ipProjection = ipProjCoordSys.Projection;

                IGeographicCoordinateSystem ipGeoCoordSys = ipProjCoordSys.GeographicCoordinateSystem;
                ipSpheroid = ipGeoCoordSys.Datum.Spheroid;

                //m_HeadNode.Excursion = ipProjCoordSys.FalseEasting.ToString();///坐标偏移量

                //m_HeadNode.Scale = ipProjCoordSys.ScaleFactor.ToString("6f");//比例尺

                ///获取最小、大坐标
                double xMin = 10000000, xMax = 10000000, yMin = -10000000, yMax = -10000000;
                ipProjCoordSys.GetDomain(out xMin, out xMax, out yMin, out yMax);
                //GetXyDomain(m_pWorkspace, ref xMin, ref yMin, ref xMax, ref yMax);
                m_HeadNode.MajorMax = new PointInfoNode(xMax, yMax);
                m_HeadNode.MajorMin = new PointInfoNode(xMin, yMin);

                m_HeadNode.CoordinateSystemType = "P";

                ///投影参数(东偏、北偏、原点经度、第一标准纬线,第二标准纬线、方位角)
                m_HeadNode.Parametetor.EastOffset = ipProjCoordSys.FalseEasting.ToString();
                m_HeadNode.Parametetor.NorthOffset = ipProjCoordSys.FalseNorthing.ToString();
                m_HeadNode.Parametetor.OriginLongtitude = ipProjCoordSys.get_CentralMeridian(true).ToString();
                try
                {
                    m_HeadNode.Parametetor.FirstStandard = ipProjCoordSys.LatitudeOf1st.ToString();
                    m_HeadNode.Parametetor.SecondStandard = ipProjCoordSys.LatitudeOf2nd.ToString();
                    m_HeadNode.Parametetor.Angle = ipProjCoordSys.Azimuth.ToString();
                }
                catch
                { }
                //m_HeadNode.Parametetor.Angle = ipProjCoordSys.Azimuth.ToString();
               // m_HeadNode.Parametetor.OriginLatitude= ipProjCoordSys.

                /////根据投影名称来判断带号,带宽
                if (ipProjCoordSys.Name.Contains("3_Degree"))
                {
                    m_HeadNode.Parametetor.With = "3";
                }
                else
                {
                    m_HeadNode.Parametetor.With = "6";
                }


                ////包含Zone的表示可能带带号
                if (ipProjCoordSys.Name.Contains("Zone"))
                {
                    int index = ipProjCoordSys.Name.LastIndexOf("Zone_");
                    int nTolLen = ipProjCoordSys.Name.Length;

                    string strSubName = ipProjCoordSys.Name.Substring(index+5, nTolLen - index-5);

                    ////带号中不存在n则表示有带号
                    if (!strSubName.Contains("N"))
                        m_HeadNode.Parametetor.Num = m_HeadNode.Parametetor.Num;
                }
                else
                {
                    ///不存在带号
                }
            }
            else if (m_pSpatialReference is IGeographicCoordinateSystem)
            {
                IGeographicCoordinateSystem ipGeoCoordSys = m_pSpatialReference as IGeographicCoordinateSystem;
                ipSpheroid = ipGeoCoordSys.Datum.Spheroid;

                ///获取最小、大坐标
                double xMin = 10000000, xMax = 10000000, yMin = -10000000, yMax = -10000000;
                ipGeoCoordSys.GetDomain(out xMin, out xMax, out yMin, out yMax);
                //GetXyDomain(m_pWorkspace, ref xMin, ref yMin, ref xMax, ref yMax);
                m_HeadNode.MajorMax = new PointInfoNode(xMax, yMax);
                m_HeadNode.MajorMin = new PointInfoNode(xMin, yMin);
                m_HeadNode.CoordinateSystemType = "D";

                //中央经线
                m_HeadNode.Parametetor.OriginLongtitude = ipGeoCoordSys.PrimeMeridian.Longitude.ToString();
            }


            ///高程基准 时间参考系
            m_HeadNode.Vertical = Metadata.MetaDataFile.HeadConfig.Vertical.Value;
            m_HeadNode.TemporalReferenceSystem = Metadata.MetaDataFile.HeadConfig.TemporalReferenceSystem.Value;

            ///获取日期
            string dataTime = DateTime.Now.Year.ToString();

            ///计算月份部分不足两位加0
            if (DateTime.Now.Month < 10)
                dataTime = dataTime + "0" + DateTime.Now.Month.ToString();
            else
                dataTime += DateTime.Now.Month.ToString();
            ///计算日期部分不足两位加0
            if (DateTime.Now.Day < 10)
                dataTime = dataTime + "0" + DateTime.Now.Day.ToString();
            else
                dataTime += DateTime.Now.Day.ToString();

            m_HeadNode.Date= dataTime;
            HeadNode.Separator = Metadata.MetaDataFile.HeadConfig.Sparator.Value.ToCharArray()[0];
            return m_HeadNode;
		}