コード例 #1
0
        public RemoveDesignationResult RemoveVoxelDesignation(VoxelHandle Voxel, DesignationType Type)
        {
            var key = VoxelHelpers.GetVoxelQuickCompare(Voxel);

            if (!VoxelDesignations.ContainsKey(key))
            {
                return(RemoveDesignationResult.DidntExist);
            }
            var list = VoxelDesignations[key];
            var r    = list.RemoveAll(d => TypeSet(d.Type, Type)) == 0 ? RemoveDesignationResult.DidntExist : RemoveDesignationResult.Removed;

            if (list.Count == 0)
            {
                VoxelDesignations.Remove(key);
            }
            Voxel.Invalidate();
            return(r);
        }
コード例 #2
0
        public AddDesignationResult AddVoxelDesignation(VoxelHandle Voxel, DesignationType Type, Object Tag, Task Task)
        {
            lock (designationLock)
            {
                var key = VoxelHelpers.GetVoxelQuickCompare(Voxel);

                List <VoxelDesignation> list = null;
                if (VoxelDesignations.ContainsKey(key))
                {
                    list = VoxelDesignations[key];
                }
                else
                {
                    list = new List <VoxelDesignation>();
                    VoxelDesignations.Add(key, list);
                }

                var existingEntry = list.FirstOrDefault(d => d.Type == Type);

                if (existingEntry != null)
                {
                    existingEntry.Tag = Tag;
                    return(AddDesignationResult.AlreadyExisted);
                }
                else
                {
                    list.Add(new VoxelDesignation
                    {
                        Voxel = Voxel,
                        Type  = Type,
                        Tag   = Tag,
                        Task  = Task
                    });
                    Voxel.Invalidate();
                    return(AddDesignationResult.Added);
                }
            }
        }