private Rect GetSceneRect(SceneDataControl scene)
            {
                if (!this.positions.ContainsKey(scene.getId()))
                {
                    string id = GetScenePropertyId(Controller.Instance.SelectedChapterDataControl, scene);
                    string X  = ProjectConfigData.getProperty(id + ".X");
                    string Y  = ProjectConfigData.getProperty(id + ".Y");
                    positions.Add(scene.getId(), new Vector2(ExParsers.ParseDefault(X, 0), ExParsers.ParseDefault(Y, 0)));
                }

                var background = scene.getPreviewBackground();

                if (!sizes.ContainsKey(background))
                {
                    Texture2D scenePreview = null;
                    Vector2   previewSize  = new Vector2(800, 600);
                    if (!images.ContainsKey(background))
                    {
                        scenePreview       = Controller.ResourceManager.getImage(background) ?? Controller.ResourceManager.getImage(SpecialAssetPaths.ASSET_EMPTY_IMAGE);
                        images[background] = scenePreview;
                    }
                    else
                    {
                        scenePreview = images[background];
                    }

                    if (scenePreview)
                    {
                        previewSize = new Vector2(scenePreview.width, scenePreview.height);
                    }

                    sizes.Add(background, previewSize);
                    Color color;
                    try
                    {
                        var pixel         = scenePreview.GetPixel(scenePreview.width / 2, scenePreview.height / 2);
                        var colorAsVector = ToHSV(new Color(1f - pixel.r, 1f - pixel.g, 1f - pixel.b));
                        colorAsVector.y *= 2f;
                        colorAsVector.z *= 1.5f;
                        color            = FromHSV(colorAsVector);
                    }
                    catch
                    {
                        // Error getting the pixel
                        color = UnityEngine.Random.ColorHSV(0f, 1f, 0.8f, 1f, 0.5f, 1f, 1f, 1f);
                    }

                    sceneColors[background] = color;
                }

                return(new Rect(positions[scene.getId()], sizes[background] * SceneScaling));
            }
Esempio n. 2
0
                public Vector2 this[string id]
                {
                    get
                    {
                        if (!positions.ContainsKey(id))
                        {
                            var idX = id + X;
                            var idY = id + Y;

                            if (!ProjectConfigData.existsKey(idX))
                            {
                                ProjectConfigData.setProperty(idX, "0");
                            }
                            if (!ProjectConfigData.existsKey(idY))
                            {
                                ProjectConfigData.setProperty(idY, "0");
                            }
                            var x = ProjectConfigData.getProperty(idX);
                            var y = ProjectConfigData.getProperty(idY);
                            positions.Add(id, new Vector2(ExParsers.ParseDefault(x, 0), ExParsers.ParseDefault(y, 0)));
                        }

                        return(positions[id]);
                    }
                    set
                    {
                        if (value == this[id]) // this[id] forces positions[id] initialization
                        {
                            return;
                        }

                        positions[id] = value;
                        ProjectConfigData.setProperty(id + X, value.x.ToString(CultureInfo.InvariantCulture));
                        ProjectConfigData.setProperty(id + Y, value.y.ToString(CultureInfo.InvariantCulture));
                    }
                }