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)); }
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)); } }