/// <summary> /// Plots the heat map. /// </summary> /// <param name="tag">Tag.</param> /// <param name="data">Data.</param> private void PlotHeatMap(HeatTag tag, HeatData data) { Vector3 pos = SnapCoord(data.vec, tag.Size); int key = pos.GetHashCode(); GameObject point; Color markerColor = Color.blue; if (markerTable.Contains(key)) { point = markerTable[key] as GameObject; markerColor = new Color( point.renderer.material.color.r + tag.MapPointColorDelta, point.renderer.material.color.g, point.renderer.material.color.b - tag.MapPointColorDelta ); } else { point = Instantiate(tag.Marker, pos, Quaternion.identity) as GameObject; point.renderer.enabled = true; markerTable.Add(key, point); } markerColor.a = tag.MapPointTransparencyValue; point.renderer.material.color = markerColor; }
/// <summary> /// Helper for tracking player. /// </summary> /// <returns>The player helper.</returns> /// <param name="player">Player.</param> /// <param name="tag">Tag.</param> /// <param name="rate">Rate.</param> private IEnumerator TrackPlayerHelper(GameObject player, HeatTag tag, float rate) { while (isEnabled) { if (player) { Post(player.transform.position, tag); } yield return(new WaitForSeconds(rate)); } }
// Use this for initialization protected virtual void Start() { this.gun = new BasicGun(this); controller = new BillController(this); leftOrRight = 0; health = 3; billHealth = GameObject.Find("BillHealth").GetComponent <GUIText>(); if (godMode) { health = 1000; } startingHeight = renderer.bounds.size.y; startingWidth = renderer.bounds.size.x; if (Application.loadedLevelName == "Level_2") { leftBoundary = 0.8f; rightBoundary = 0.8f; } Respawn(); if (Application.loadedLevelName == "Level_1") { heatmap = GetComponent <HeatMap> (); string p_string = "Contra Bill Progresssion Level 1"; string d_string = "Contra Bill Death Level 1"; progressionTag = new HeatTag("p_string", url); progressionTag.SetSorted(); progressionTag.MapPointColorDelta = ProgressionMapColorDelta; deathTag = new HeatTag("d_string", url); deathTag.Type = HeatTag.HeatType.POINT; if (TrackPlayer) { heatmap.TrackPlayer(this.gameObject, progressionTag, 0.2f); } if (ShowHeatMap) { heatmap.PlotData(progressionTag); heatmap.PlotData(deathTag); } } }
/// <summary> /// Helper to get data. /// </summary> /// <returns>The data helper.</returns> /// <param name="tag">Tag.</param> private IEnumerator GetDataHelper(HeatTag tag) { WWW download = new WWW(tag.Url); yield return(download); if ((!string.IsNullOrEmpty(download.error))) { print("Error downloading: " + download.error); } else { var data = JSONNode.Parse(download.text); StartCoroutine(PlotHeat(data, tag)); } }
/// <summary> /// Helper function to post data. /// </summary> /// <returns>The helper.</returns> /// <param name="vec">Vec.</param> /// <param name="tag">Tag.</param> private IEnumerator PostHelper(Vector3 vec, HeatTag tag) { WWWForm form = new WWWForm(); form.AddField("x", vec.x.ToString()); form.AddField("y", vec.y.ToString()); form.AddField("z", vec.z.ToString()); form.AddField("label", tag.Label.ToUpper()); form.AddField("ticks", System.DateTime.Now.Ticks.ToString()); form.AddField("gameTimeStamp", Time.time.ToString()); WWW download = new WWW(tag.Url, form); yield return(download); if ((!string.IsNullOrEmpty(download.error))) { print("Error downloading: " + download.error); } }
/// <summary> /// Plots the heat data. /// </summary> /// <returns>The heat.</returns> /// <param name="data">Data.</param> /// <param name="tag">Tag.</param> private IEnumerator PlotHeat(JSONNode data, HeatTag tag) { for (int i = 0; i < data.Count; i++) { HeatData heatData = new HeatData(data[i]); if (tag.Type == HeatTag.HeatType.MAP) { PlotHeatMap(tag, heatData); } else if (tag.Type == HeatTag.HeatType.POINT) { PlotHeatPoint(tag, heatData); } else { throw new Exception("HeatType not found"); } yield return(null); } }
// Use this for initialization void Start() { Respawn(); heatmap = GetComponent <HeatMap> (); progressionTag = new HeatTag("Sample Progression 2", url); progressionTag.MapPointColorDelta = ProgressionMapColorDelta; deathTag = new HeatTag("Sample Death 2", url); deathTag.Type = HeatTag.HeatType.POINT; if (TrackPlayer) { heatmap.TrackPlayer(this.gameObject, progressionTag, 0.2f); } if (ShowHeatMap) { heatmap.PlotData(progressionTag); heatmap.PlotData(deathTag); } }
/// <summary> /// Tracks the player. Posts the player's transform's positions every specified rate seconds. /// </summary> /// <param name="player">The tracked player.</param> /// <param name="tag">The associated <see cref="HeatTag"/></param> /// <param name="rate">The rate that data is posted in seconds.</param> public void TrackPlayer(GameObject player, HeatTag tag, float rate) { StartCoroutine(TrackPlayerHelper(player, tag, rate)); }
/// <summary> /// Post the specified vector for the tag. /// The tag encapsulates the data about the url. /// </summary> /// <param name="vec">The vector that is posted</param> /// <param name="tag">The associated <see cref="HeatTag"/></param> public void Post(Vector3 vec, HeatTag tag) { StartCoroutine(PostHelper(vec, tag)); }
/// <summary> /// Plots the data for the specified tag. /// The tag encapsulates the data about the url, the marker and the plotting type. /// </summary> /// <param name="tag">The associated <see cref="HeatTag"/></param> public void PlotData(HeatTag tag) { StartCoroutine(GetDataHelper(tag)); }
/// <summary> /// Plots the heat point. /// </summary> /// <param name="tag">Tag.</param> /// <param name="data">Data.</param> private void PlotHeatPoint(HeatTag tag, HeatData data) { GameObject point = Instantiate(tag.Marker, data.vec, Quaternion.identity) as GameObject; point.renderer.enabled = true; }