示例#1
0
        public void PlanPieceRemovedFromBlueprint(PlanPiece planPiece)
        {
            ZDOID blueprintID = planPiece.GetBlueprintID();

            if (blueprintID == ZDOID.None)
            {
                return;
            }

            ZDO blueprintZDO = ZDOMan.instance.GetZDO(blueprintID);

            if (blueprintZDO == null)
            {
                return;
            }
            ZDOIDSet planPieces = GetPlanPieces(blueprintZDO);

            planPieces?.Remove(planPiece.GetPlanPieceID());
            if (planPieces == null || planPieces.Count() == 0)
            {
                GameObject blueprintObject = ZNetScene.instance.FindInstance(blueprintID);
                if (blueprintObject)
                {
                    ZNetScene.instance.Destroy(blueprintObject);
                }
            }
            else
            {
                blueprintZDO.Set(PlanPiece.zdoBlueprintPiece, planPieces.ToZPackage().GetArray());
            }
        }
示例#2
0
        public List <PlanPiece> FindPlanPiecesInRange()
        {
            Dictionary <PlanPiece, float> result = new Dictionary <PlanPiece, float>();

            foreach (var piece in Piece.m_allPieces)
            {
                Vector3 pieceCenter = GetCenter(piece.gameObject);
                float   distance    = Vector2.Distance(new Vector2(transform.position.x, transform.position.z), new Vector2(pieceCenter.x, pieceCenter.z));
                if (distance <= radiusConfig.Value)
                {
                    PlanPiece planPiece = piece.GetComponent <PlanPiece>();
                    if (planPiece)
                    {
                        result.Add(planPiece, distance);
                    }
                }
            }
            return(result.AsEnumerable()
                   .OrderBy(pair => pair.Value)
                   .Select(pair => pair.Key)
                   .ToList());
        }