Пример #1
0
        /// <summary>
        /// 获取一级地区
        /// </summary>
        /// <param name="rootAreaCode">根级地区(默认取站点地区配置)</param>
        public Dictionary <string, string> GetRootAreaDictionary(string rootAreaCode = null)
        {
            if (rootAreaCode == null)
            {
                IAreaSettingsManager areaSettingsManager = DIContainer.Resolve <IAreaSettingsManager>();
                if (areaSettingsManager != null)
                {
                    AreaSettings areaSettings = areaSettingsManager.Get();
                    rootAreaCode = areaSettings.RootAreaCode;
                }
            }
            //获取根级地区
            IEnumerable <Area> areas = null;

            if (!string.IsNullOrEmpty(rootAreaCode))
            {
                Area area = areaService.Get(rootAreaCode);
                if (area != null)
                {
                    areas = area.Children;
                }
            }
            else
            {
                areas = areaService.GetRoots();
            }
            if (areas == null)
            {
                return(null);
            }

            return(areas.ToDictionary(n => n.AreaCode, n => n.Name));
        }
 public RoleClaimsTransformer(IUsersRepository usersRepository,
                              IRolesRepository rolesRepository, IOptions <AreaSettings> areaSetings)
 {
     _usersRepository = usersRepository;
     _rolesRepository = rolesRepository;
     _areaSettings    = areaSetings.Value;
 }
Пример #3
0
    public static GameObject DrawAreaSettings(AreaSettings areaSettings)
    {
        GameObject result = new GameObject(areaSettings.Name);

        var border = DrawPolygon(areaSettings.BorderPolygon, Color.yellow, "Border");

        border.transform.parent = result.transform;

        foreach (var clearPolygon in areaSettings.ClearPolygons)
        {
            var clearPolygonGO = DrawPolygon(clearPolygon, Color.red, "Clear");
            clearPolygonGO.transform.parent = result.transform;
        }

        foreach (var areaData in areaSettings.AreaDataGraph.GetAllNodeData())
        {
            var segment = DrawPolygon(areaData.Polygon, Color.blue, areaData.Segment.Type + " Segment");
            segment.transform.parent = result.transform;
            segment.SetActive(false);

            var center = DrawSphere(new Vector3(areaData.Center.x, 0, areaData.Center.y), 2, Color.blue, areaData.Segment.Type + " Center");
            center.transform.parent = result.transform;
        }


        return(result);
    }
Пример #4
0
    public AreaSettings GetSettings()
    {
        if (settings == null)
        {
            Debug.Log("Area settings created");
            settings = new AreaSettings();
        }

        return(settings);
    }
Пример #5
0
        /// <summary>
        /// 地区下拉列表
        /// </summary>
        /// <param name="htmlHelper">被扩展的htmlHelper实例</param>
        /// <param name="name">控件name属性</param>
        /// <param name="name">选中的地区编码</param>
        /// <param name="areaLevel">地区层级(默认取站点配置)</param>
        /// <param name="rootAreaCode">根级地区(默认取站点地区配置)</param>
        public static MvcHtmlString AreaDropDownList(this HtmlHelper htmlHelper, string name, string value, int?areaLevel = null, string rootAreaCode = null)
        {
            string            getChildAreasUrl  = SiteUrls.Instance().GetChildAreas();
            AreaServiceHelper areaServiceHelper = new AreaServiceHelper();

            if (areaLevel == null)
            {
                AreaSettings areaSettings = DIContainer.Resolve <ISettingsManager <AreaSettings> >().Get();
                areaLevel = areaSettings.AreaLevel;
            }
            return(htmlHelper.LinkageDropDownList <string>(name, value, string.Empty, areaLevel.Value, areaServiceHelper.GetRootAreaDictionary(rootAreaCode), areaServiceHelper.GetParentCode, areaServiceHelper.GetChildrenDictionary, getChildAreasUrl));
        }
Пример #6
0
        /// <summary>
        /// 地区下拉列表
        /// </summary>
        /// <param name="htmlHelper">被扩展的htmlHelper实例</param>
        /// <param name="expression">选择实体中类别属性的lamda表达式</param>
        /// <param name="areaLevel">地区层级(默认取站点地区配置)</param>
        /// <param name="rootAreaCode">根级地区(默认取站点地区配置)</param>
        public static MvcHtmlString AreaDropDownListFor <TModel>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, string> > expression, int?areaLevel = null, string rootAreaCode = null)
        {
            string            getChildAreasUrl  = SiteUrls.Instance().GetChildAreas();
            AreaServiceHelper areaServiceHelper = new AreaServiceHelper();

            if (areaLevel == null)
            {
                IAreaSettingsManager areaSettingsManager = DIContainer.Resolve <IAreaSettingsManager>();
                AreaSettings         areaSettings        = areaSettingsManager.Get();
                areaLevel = areaSettings.AreaLevel;
            }
            return(htmlHelper.LinkageDropDownListFor <TModel, string>(expression, string.Empty, areaLevel.Value, areaServiceHelper.GetRootAreaDictionary(rootAreaCode), areaServiceHelper.GetParentCode, areaServiceHelper.GetChildrenDictionary, getChildAreasUrl));
        }
Пример #7
0
        private void ScanTwainFixedSize()
        {
            AreaSettings       AreaSettings = new AreaSettings(Units.Centimeters, 0f, 0f, 29.7f, 21.01f);
            ScanSettings       _settings    = new ScanSettings();
            ResolutionSettings rs           = new ResolutionSettings();

            rs.ColourSetting                  = ColourSetting.GreyScale;
            rs.Dpi                            = 100;
            _settings.Resolution              = rs;
            _settings.ShowTwainUI             = false;
            _settings.ShowProgressIndicatorUI = true;
            _settings.Area                    = AreaSettings;


            _twain.StartScanning(_settings);
        }
Пример #8
0
        public new AreaModel <TNode> InitModel()
        {
            var settings = GameCore.GetModel <SettingsModel>().Settings;

            _areaSettings = settings.AreaSettings;
            _prefab       = settings.GetPefab <NodeView>();

            _unitsRoot = new GameObject(units_root_name).transform;
            _nodesRoot = new GameObject(nodes_root_name).transform;

            _inxWidth  = _areaSettings.Width;
            _inxHeight = _areaSettings.Height;

            _nodes = new TNode[_inxWidth * _inxHeight];

            ConstructArea();
            return(this);
        }
Пример #9
0
        private static object AreaSettingsReader(MappingReadArgs args)
        {
            var reader   = args.Reader;
            var settings = new AreaSettings
            {
                Unk00    = reader.ReadInt16(),
                Unk02    = reader.ReadInt16(),
                Settings = new List <IAreaDataSetting>()
            };

            while (reader.BaseStream.Position < args.Reader.BaseStream.Length)
            {
                var opcode   = reader.ReadInt16();
                var instance = Activator.CreateInstance(_idSetType[opcode]);
                instance = Mapping.ReadObject(reader.BaseStream, instance);
                settings.Settings.Add(instance as IAreaDataSetting);
            }

            return(settings);
        }
Пример #10
0
 /// <summary>
 /// 保存地区设置
 /// </summary>
 /// <returns></returns>
 public void Save(AreaSettings areaSettings)
 {
     repository.Save(areaSettings);
 }
Пример #11
0
        /// <summary>
        /// 发现群组
        /// </summary>
        /// <returns></returns>
        public ActionResult FindGroup(string nameKeyword, string areaCode, long?categoryId, SortBy_Group?sortBy, int pageIndex = 1)
        {
            nameKeyword = WebUtility.UrlDecode(nameKeyword);
            string pageTitle = string.Empty;
            IEnumerable <Category> childCategories = null;

            if (categoryId.HasValue && categoryId.Value > 0)
            {
                var category = categoryService.Get(categoryId.Value);
                if (category != null)
                {
                    if (category.ChildCount > 0)
                    {
                        childCategories = category.Children;
                    }
                    else//若是叶子节点,则取同辈分类
                    {
                        if (category.Parent != null)
                        {
                            childCategories = category.Parent.Children;
                        }
                    }
                    List <Category> allParentCategories = new List <Category>();
                    //递归获取所有父级类别,若不是叶子节点,则包含其自身
                    RecursiveGetAllParentCategories(category.ChildCount > 0 ? category : category.Parent, ref allParentCategories);
                    ViewData["allParentCategories"] = allParentCategories;
                    ViewData["currentCategory"]     = category;
                    pageTitle = category.CategoryName;
                }
            }


            if (childCategories == null)
            {
                childCategories = categoryService.GetRootCategories(TenantTypeIds.Instance().Group());
            }

            ViewData["childCategories"] = childCategories;

            AreaSettings       areaSettings = DIContainer.Resolve <IAreaSettingsManager>().Get();
            IEnumerable <Area> childArea    = null;

            if (!string.IsNullOrEmpty(areaCode))
            {
                var area = areaService.Get(areaCode);
                if (area != null)
                {
                    if (area.ChildCount > 0)
                    {
                        childArea = area.Children;
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(area.ParentCode))
                        {
                            var parentArea = areaService.Get(area.ParentCode);
                            if (parentArea != null)
                            {
                                childArea = parentArea.Children;
                            }
                        }
                    }
                }
                List <Area> allParentAreas = new List <Area>();
                RecursiveGetAllParentArea(area.ChildCount > 0 ? area : areaService.Get(area.ParentCode), areaSettings.RootAreaCode, ref allParentAreas);
                ViewData["allParentAreas"] = allParentAreas;
                ViewData["currentArea"]    = area;
                if (!string.IsNullOrEmpty(pageTitle))
                {
                    pageTitle += ",";
                }
                pageTitle += area.Name;
            }

            if (childArea == null)
            {
                Area rootArea = areaService.Get(areaSettings.RootAreaCode);
                if (rootArea != null)
                {
                    childArea = rootArea.Children;
                }
                else
                {
                    childArea = areaService.GetRoots();
                }
            }

            ViewData["childArea"] = childArea;

            if (!string.IsNullOrEmpty(nameKeyword))
            {
                if (!string.IsNullOrEmpty(pageTitle))
                {
                    pageTitle += ",";
                }
                pageTitle += nameKeyword;
            }

            if (string.IsNullOrEmpty(pageTitle))
            {
                pageTitle = "发现群组";
            }
            pageResourceManager.InsertTitlePart(pageTitle);
            PagingDataSet <GroupEntity> groups = groupService.Gets(areaCode, categoryId, sortBy ?? SortBy_Group.DateCreated_Desc, pageIndex: pageIndex);

            if (Request.IsAjaxRequest())
            {
                return(PartialView("_List", groups));
            }

            return(View(groups));
        }
Пример #12
0
 public void update(AreaSettings setting)
 {
     Debug.Log(setting);
 }
Пример #13
0
 private void Start()
 {
     settings = new AreaSettings();
 }
Пример #14
0
        public static IEnumerable <AreaDataScript> Compile(string text)
        {
            const char Comment = '#';

            AreaDataScript newScript() => new AreaDataScript
            {
                Functions = new List <IAreaDataCommand>()
            };

            var script = newScript();
            var state  = LexState.Init;
            var lines  = text
                         .Replace("\n\r", "\n")
                         .Replace("\r\n", "\n")
                         .Replace("\r", "\n")
                         .Split('\n');

            var row = 0;

            while (row < lines.Length)
            {
                var line      = lines[row++];
                var cleanLine = line.Split(Comment);
                var tokens    = Tokenize(row, cleanLine[0]).ToList();
                if (tokens.Count == 0)
                {
                    continue;
                }

                if (state == LexState.Init && tokens[0] != "Program")
                {
                    throw new SpawnScriptMissingProgramException(row);
                }

                switch (tokens[0])
                {
                case "Program":
                    var programId = ParseAsShort(row, GetToken(row, tokens, 1));
                    if (state == LexState.Code)
                    {
                        yield return(script);

                        script = newScript();
                    }

                    state            = LexState.Code;
                    script.ProgramId = programId;
                    break;

                case "AreaSettings":
                    var function = new AreaSettings
                    {
                        Settings = new List <IAreaDataSetting>()
                    };
                    function.Parse(row, tokens);
                    script.Functions.Add(function);

                    while (row < lines.Length && (lines[row].Length == 0 || lines[row][0] == '\t'))
                    {
                        line      = lines[row++];
                        cleanLine = line.Split(Comment);
                        tokens    = Tokenize(row, cleanLine[0]).ToList();
                        if (tokens.Count == 0)
                        {
                            continue;
                        }

                        function.Settings.Add(ParseAreaSetting(row, tokens));
                    }
                    break;

                default:
                    script.Functions.Add(ParseCommand(row, tokens));
                    break;
                }
            }

            yield return(script);
        }
Пример #15
0
        public async void GenerateTexture(bool boundsChecker, int areaId = -1) //-1 dla wszystkich
        {
            if (this.loadingInProgress)
            {
                return;
            }

            this.loadingInProgress = true;
            editPanelMainSplitContainer.Panel2.Enabled = false;

            try
            {
                BitmapAreaProcessor bitmapProc = this.bitmapAreaInfo;

                if (bitmapProc == null)
                {
                    throw new Exception($"Obiekt przetwarzania mapy bitowej jest NULL!");
                }

                List <int> areaIdsList = (areaId == -1 ? bitmapProc.GetAllAreaIds() : new List <int>()
                {
                    areaId
                });
                int bmpWidth           = this.sourceBitmap.Width;
                int bmpHeight          = this.sourceBitmap.Height;

                if (bmpWidth < 1 || bmpHeight < 1)
                {
                    throw new Exception($"odczytano błędne wymiary bitmapy źródłowej [{bmpWidth},{bmpHeight}]!");
                }

                #region Wstępne wypełnianie bitmapy rezultatu - przezroczystość
                //WSTĘPNE WYPEŁNIANIE BITMAPY REZULTATU
                UpdateInfo($"Wstępne tworzenie bitmapy rezultatu");

                PacketObjMsg transparentBmpPacket = await bitmapProc.GenerateTransparentBitmapTaskStart(bmpWidth, bmpHeight);

                this.resultBitmap = (Bitmap)transparentBmpPacket.Obj;

                if (!String.IsNullOrEmpty(transparentBmpPacket.Msg))
                {
                    MessageBox.Show(transparentBmpPacket.Msg);
                }

                #endregion

                foreach (int areaIdFromList in areaIdsList)
                {
                    UpdateInfo($"Generowanie tekstury dla ID strefy [{areaIdFromList}]");

                    #region Ograniczenia strefy
                    //POBIERANIE OGRANICZEŃ STREFY
                    PacketObjMsg boundingsPacket = await bitmapProc.GetAreaBoundingsTaskStart(areaIdFromList);

                    AreaBoundings areaBoundings = (AreaBoundings)boundingsPacket.Obj;

                    if (!String.IsNullOrEmpty(boundingsPacket.Msg))
                    {
                        MessageBox.Show(boundingsPacket.Msg);
                    }

                    int areaMinX = areaBoundings.BoundsX.X;
                    int areaMaxX = areaBoundings.BoundsX.Y;
                    int areaMinY = areaBoundings.BoundsY.X;
                    int areaMaxY = areaBoundings.BoundsY.Y;

                    //obiekt, który będzie przechowywał poszerzone ograniczenia strefy w przypadku, w którym rysowanie wyjdzie poza ograniczenia (np. losowe punkty krzywej)
                    AreaBoundings processingAreaBoundings = areaBoundings.Copy();

                    #endregion

                    #region Test ograniczeń stref
                    //TEST
                    //Brush brush = new SolidBrush(Color.FromArgb(255, 255, 0, 0));
                    //using (Graphics gr = Graphics.FromImage(this.resultBitmap))
                    //{
                    //    gr.FillRectangle(brush, areaMinX, areaMinY, (areaMaxX - areaMinX), (areaMaxY - areaMinY));
                    //}
                    #endregion

                    #region Ustawienia użytkownika
                    //USTAWIENIA UŻYTKOWNIKA DLA STREFY
                    AreaSettings userAreaSettings = this.uiController.GetAreaSettings(areaIdFromList);

                    AreaSettings.HairDrawingDirection hairDirection   = userAreaSettings.Direction;
                    AreaSettings.HairCuttingSide      hairCuttingSide = userAreaSettings.CuttingSide;

                    int     drawingSteps             = userAreaSettings.DrawingSteps;
                    int     drawingIterations        = userAreaSettings.DrawingIterations;
                    decimal iterationLossPercent     = userAreaSettings.DrawingStepIterationLossPercent;
                    decimal bezierRandomRangePercent = userAreaSettings.BezierRandomRangePercent;
                    decimal bezierMarginPercent      = userAreaSettings.BezierMarginPercent;
                    double  cuttingRangePercent      = Convert.ToDouble(userAreaSettings.CuttingRangePercent);

                    int bezierPointCount = userAreaSettings.MultiBezierPointCount;

                    if (userAreaSettings.BezierLineType == AreaSettings.BezierType.Quadratic || userAreaSettings.BezierLineType == AreaSettings.BezierType.QuadraticCp)
                    {
                        bezierPointCount = 3;
                    }
                    else
                    if (userAreaSettings.BezierLineType == AreaSettings.BezierType.Cubic)
                    {
                        bezierPointCount = 4;
                    }

                    Point3 backgroundRgbPalette = userAreaSettings.BackgroundRgbPalette;
                    Point3 foregroundRgbPalette = userAreaSettings.ForegroundRgbPalette;

                    bool hairMapDefinesOpacity    = userAreaSettings.HairMapDefinesOpacity;
                    bool hairMapDefinesBrightness = userAreaSettings.HairMapDefinesBrightness;

                    #endregion

                    #region Dane wynikowe
                    //DANE WYNIKOWE
                    int iterationLossCount    = Convert.ToInt32(drawingIterations * (iterationLossPercent / 100));
                    int currentIterationCount = drawingIterations;

                    int areaRangeX = areaMaxX - areaMinX;
                    int areaRangeY = areaMaxY - areaMinY;

                    #endregion

                    #region Dane przetwarzane
                    //DANE PRZETWARZANE W PĘTLACH
                    int           currentAxisPosition;
                    double        stepPercent;
                    double        positionPercent;
                    double        bezierPositionPercent;
                    PacketObjMsg  lineRangePacket;
                    AreaLineRange lineRange;
                    int           rangePointFrom;
                    int           rangePointTo;
                    int           resultPoint;

                    int boundRangeMin;
                    int boundRangeMax;

                    List <Point> hairBezierPoints = new List <Point>();

                    Point3 currentColorPalette = new Point3(0, 0, 0);
                    int    currentR            = 0;
                    int    currentG            = 0;
                    int    currentB            = 0;

                    bool cutOnStart = false;
                    bool cutOnEnd   = false;

                    if (hairDirection == AreaSettings.HairDrawingDirection.TopToBottom || hairDirection == AreaSettings.HairDrawingDirection.LeftToRight)
                    {
                        cutOnStart = (hairCuttingSide == AreaSettings.HairCuttingSide.Beginning || hairCuttingSide == AreaSettings.HairCuttingSide.BothSides);
                        cutOnEnd   = (hairCuttingSide == AreaSettings.HairCuttingSide.End || hairCuttingSide == AreaSettings.HairCuttingSide.BothSides);
                    }
                    else
                    if (hairDirection == AreaSettings.HairDrawingDirection.BottomToTop || hairDirection == AreaSettings.HairDrawingDirection.RightToLeft)
                    {
                        cutOnEnd   = (hairCuttingSide == AreaSettings.HairCuttingSide.Beginning || hairCuttingSide == AreaSettings.HairCuttingSide.BothSides);
                        cutOnStart = (hairCuttingSide == AreaSettings.HairCuttingSide.End || hairCuttingSide == AreaSettings.HairCuttingSide.BothSides);
                    }

                    #endregion

                    for (int drawingStep = 0; drawingStep < drawingSteps; drawingStep++) //PĘTLA TONÓW - KROKI
                    {
                        if (currentIterationCount <= 0)
                        {
                            break;
                        }

                        stepPercent = DataProcessor.CalculatePercent(Convert.ToDouble(drawingSteps - 1), Convert.ToDouble(drawingStep));

                        #region Kolor podstawowy (ton)
                        //WYODRĘBNIANIE PODSTAWOWEGO TONU KOLORU
                        currentR = Convert.ToInt32(DataProcessor.Lerp(backgroundRgbPalette.X, foregroundRgbPalette.X, (stepPercent / 100)));
                        currentG = Convert.ToInt32(DataProcessor.Lerp(backgroundRgbPalette.Y, foregroundRgbPalette.Y, (stepPercent / 100)));
                        currentB = Convert.ToInt32(DataProcessor.Lerp(backgroundRgbPalette.Z, foregroundRgbPalette.Z, (stepPercent / 100)));
                        currentR = DataProcessor.Clamp(0, 255, currentR);
                        currentG = DataProcessor.Clamp(0, 255, currentG);
                        currentB = DataProcessor.Clamp(0, 255, currentB);

                        currentColorPalette = new Point3(currentR, currentG, currentB);

                        #endregion

                        for (int drawingIteration = 0; drawingIteration < currentIterationCount; drawingIteration++) //PĘTLA ITERACJI - SZTUK WŁOSA
                        {
                            hairBezierPoints.Clear();
                            positionPercent = DataProcessor.CalculatePercent(Convert.ToDouble(currentIterationCount - 1), Convert.ToDouble(drawingIteration));

                            for (int bezierPointIteration = 0; bezierPointIteration < bezierPointCount; bezierPointIteration++)
                            {
                                bezierPositionPercent = DataProcessor.CalculatePercent(Convert.ToDouble(bezierPointCount - 1), Convert.ToDouble(bezierPointIteration));

                                if (hairDirection == AreaSettings.HairDrawingDirection.TopToBottom || hairDirection == AreaSettings.HairDrawingDirection.BottomToTop)
                                {
                                    #region Pionowo

                                    currentAxisPosition = Convert.ToInt32(DataProcessor.Lerp(areaMinY, areaMaxY, bezierPositionPercent / 100));

                                    lineRangePacket = await this.bitmapAreaInfo.GetAreaLineRangeTaskStart
                                                      (
                                        BitmapAreaProcessor.AreaAxis.Y,
                                        currentAxisPosition,
                                        areaIdFromList
                                                      );

                                    lineRange = (AreaLineRange)lineRangePacket.Obj;

                                    //POBIERANIE PUNKTÓW GRANICZNYCH DLA STREFY
                                    rangePointFrom = lineRange.RangePointFrom;
                                    rangePointTo   = lineRange.RangePointTo;

                                    //MODYFIKACJA O MARGINESY
                                    rangePointFrom = Convert.ToInt32(rangePointFrom - (rangePointTo - rangePointFrom) * (bezierMarginPercent / 100));
                                    rangePointTo   = Convert.ToInt32(rangePointTo + (rangePointTo - rangePointFrom) * (bezierMarginPercent / 100));

                                    if (rangePointFrom < 0)
                                    {
                                        rangePointFrom = 0;
                                    }

                                    if (rangePointTo > this.resultBitmap.Width - 1)
                                    {
                                        rangePointTo = this.resultBitmap.Width - 1;
                                    }


                                    //WSTĘPNE TWORZENIE PUNKTU WYNIKOWEGO
                                    resultPoint = Convert.ToInt32(DataProcessor.Lerp(rangePointFrom, rangePointTo, positionPercent / 100));

                                    //ZAKRES LOSOWANIA / LOSOWANIE PUNKTU
                                    boundRangeMin = Convert.ToInt32(resultPoint - ((rangePointTo - rangePointFrom) * (bezierRandomRangePercent / 100)));
                                    boundRangeMax = Convert.ToInt32(resultPoint + ((rangePointTo - rangePointFrom) * (bezierRandomRangePercent / 100)));

                                    resultPoint = this.random.Next(boundRangeMin, boundRangeMax + 1);
                                    resultPoint = DataProcessor.Clamp(0, this.resultBitmap.Width, resultPoint);

                                    //PRZYPISYWANIE PUNKTU WYNIKOWEGO

                                    hairBezierPoints.Add
                                    (
                                        new Point
                                        (
                                            resultPoint,
                                            currentAxisPosition
                                        )
                                    );

                                    #endregion
                                }
                                else
                                if (hairDirection == AreaSettings.HairDrawingDirection.LeftToRight || hairDirection == AreaSettings.HairDrawingDirection.RightToLeft)
                                {
                                    #region Poziomo

                                    currentAxisPosition = Convert.ToInt32(DataProcessor.Lerp(areaMinX, areaMaxX, bezierPositionPercent / 100));

                                    lineRangePacket = await this.bitmapAreaInfo.GetAreaLineRangeTaskStart
                                                      (
                                        BitmapAreaProcessor.AreaAxis.X,
                                        currentAxisPosition,
                                        areaIdFromList
                                                      );

                                    lineRange = (AreaLineRange)lineRangePacket.Obj;

                                    //POBIERANIE PUNKTÓW GRANICZNYCH DLA STREFY
                                    rangePointFrom = lineRange.RangePointFrom;
                                    rangePointTo   = lineRange.RangePointTo;

                                    //MODYFIKACJA O MARGINESY
                                    rangePointFrom = Convert.ToInt32(rangePointFrom - (rangePointTo - rangePointFrom) * (bezierMarginPercent / 100));
                                    rangePointTo   = Convert.ToInt32(rangePointTo + (rangePointTo - rangePointFrom) * (bezierMarginPercent / 100));

                                    if (rangePointFrom < 0)
                                    {
                                        rangePointFrom = 0;
                                    }

                                    if (rangePointTo > this.resultBitmap.Height - 1)
                                    {
                                        rangePointTo = this.resultBitmap.Height - 1;
                                    }

                                    //WSTĘPNE TWORZENIE PUNKTU WYNIKOWEGO
                                    resultPoint = Convert.ToInt32(DataProcessor.Lerp(rangePointFrom, rangePointTo, positionPercent / 100));

                                    //ZAKRES LOSOWANIA / LOSOWANIE PUNKTU
                                    boundRangeMin = Convert.ToInt32(resultPoint - ((rangePointTo - rangePointFrom) * (bezierRandomRangePercent / 100)));
                                    boundRangeMax = Convert.ToInt32(resultPoint + ((rangePointTo - rangePointFrom) * (bezierRandomRangePercent / 100)));

                                    resultPoint = this.random.Next(boundRangeMin, boundRangeMax + 1);
                                    resultPoint = DataProcessor.Clamp(0, this.resultBitmap.Height, resultPoint);

                                    //PRZYPISYWANIE PUNKTU WYNIKOWEGO

                                    hairBezierPoints.Add
                                    (
                                        new Point
                                        (
                                            currentAxisPosition,
                                            resultPoint
                                        )
                                    );

                                    #endregion
                                }
                                else
                                if (hairDirection == AreaSettings.HairDrawingDirection.Radial)
                                {
                                }
                                else
                                if (hairDirection == AreaSettings.HairDrawingDirection.LinearX)
                                {
                                }
                                else
                                if (hairDirection == AreaSettings.HairDrawingDirection.LinearY)
                                {
                                }
                            }

                            //RYSOWANIE

                            BitmapAreaProcessor.DrawBezierLineOnBitmap
                            (
                                hairBezierPoints,
                                this.resultBitmap,
                                (userAreaSettings.BezierLineType == AreaSettings.BezierType.QuadraticCp),
                                0.02,
                                currentColorPalette,
                                cutOnStart,
                                cutOnEnd,
                                cuttingRangePercent,
                                ref processingAreaBoundings
                            );

                            //POSZERZANIE GRANIC STREFY - DLA PRZETWARZANIA PRZEZROCZYSTOŚCI / POŁYSKU
                            //processingAreaBoundings.ExtendAreaBoundings(hairBezierPoints, this.resultBitmap.Width - 1, this.resultBitmap.Height - 1);
                        }

                        currentIterationCount -= iterationLossCount;
                    }

                    //PRZEZROCZYSTOŚĆ / POŁYSK
                    BitmapAreaProcessor.AreaAxis glossOpacAxis = BitmapAreaProcessor.AreaAxis.None;
                    if (hairDirection == AreaSettings.HairDrawingDirection.TopToBottom || hairDirection == AreaSettings.HairDrawingDirection.BottomToTop)
                    {
                        glossOpacAxis = BitmapAreaProcessor.AreaAxis.X;
                    }
                    else
                    if (hairDirection == AreaSettings.HairDrawingDirection.LeftToRight || hairDirection == AreaSettings.HairDrawingDirection.RightToLeft)
                    {
                        glossOpacAxis = BitmapAreaProcessor.AreaAxis.Y;
                    }

                    PacketObjMsg glossOpacityPacket = await bitmapProc.GenerateHairTexGlossinessAndOpacityTaskStart
                                                      (
                        processingAreaBoundings, //areaBoundings,
                        this.resultBitmap,
                        Color.FromArgb(255, backgroundRgbPalette.X, backgroundRgbPalette.Y, backgroundRgbPalette.Z),
                        hairMapDefinesBrightness,
                        hairMapDefinesOpacity,
                        //new double[] { Convert.ToDouble(bezierMarginPercent / 100), Convert.ToDouble(bezierRandomRangePercent / 100) },
                        //glossOpacAxis
                        boundsChecker
                                                      );

                    this.resultBitmap = (Bitmap)glossOpacityPacket.Obj;

                    if (!String.IsNullOrEmpty(glossOpacityPacket.Msg))
                    {
                        MessageBox.Show(glossOpacityPacket.Msg);
                    }
                }

                //WYŚWIETLANIE OBRAZU REZULTATU
                SetPreview(PreviewType.Result, this.resultBitmap);
            }
            catch (Exception exception)
            {
                MessageBox.Show($"Błąd generowania tekstury: {exception.Message}");
            }

            UpdateInfo("");
            editPanelMainSplitContainer.Panel2.Enabled = true;
            this.loadingInProgress = false;
        }
Пример #16
0
        /// <summary>
        /// Get the agent's speed on the area with the given index.
        /// </summary>
        public float GetAreaSpeed(int inAreaIndex)
        {
            AreaSettings settings = GetAreaSettingsByID(inAreaIndex);

            return((settings != null && settings.Speed != -1) ? settings.Speed : Speed);
        }
Пример #17
0
        /// <summary>
        /// Get the name of the animation trigger to play upon entering the area with the given index.
        /// </summary>
        public string GetAreaAnimationTrigger(int inAreaIndex)
        {
            AreaSettings settings = GetAreaSettingsByID(inAreaIndex);

            return((settings != null) ? settings.AnimationTriggerName : string.Empty);
        }