Modification start date
[BattleCats.git] / Assets / Scripts / Terrain / ParallaxBackground.cs
blob6ce8c24d6b668956c5e09069eeb6ce0d5b448719
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using UnityEngine;
6 public class ParallaxBackground : MonoBehaviour
8 private Dictionary<ParallaxBackgroundLayer.Layer, Transform[]> m_layers = new Dictionary<ParallaxBackgroundLayer.Layer, Transform[]>();
9 private Dictionary<ParallaxBackgroundLayer.Layer, float> m_speeds = new Dictionary<ParallaxBackgroundLayer.Layer, float>();
10 private Dictionary<Transform, Vector3> m_offsets = new Dictionary<Transform, Vector3>();
12 private Transform m_yarn;
14 private void Start()
16 m_yarn = GameObject.FindGameObjectWithTag("YarnPhysics").transform;
18 List<Transform> children = new List<Transform>();
19 foreach (Transform child in transform)
21 children.Add(child);
22 m_offsets.Add(child, child.position - m_yarn.position);
25 var layersDefined = Enum.GetValues(typeof(ParallaxBackgroundLayer.Layer));
26 float speedModifier = 0.9f;
27 foreach (ParallaxBackgroundLayer.Layer layer in layersDefined)
29 List<Transform> childrenInLayer = children.Where(t => t.GetComponent<ParallaxBackgroundLayer>().m_layer == layer).ToList();
31 m_layers.Add(layer, childrenInLayer.ToArray());
32 m_speeds.Add(layer, speedModifier);
33 speedModifier /= layersDefined.Length;
37 void Update ()
39 var layersDefined = Enum.GetValues(typeof(ParallaxBackgroundLayer.Layer));
40 foreach (ParallaxBackgroundLayer.Layer layer in layersDefined)
42 float layerSpeed = m_speeds[layer];
44 foreach (Transform child in m_layers[layer])
46 Vector3 offset = m_offsets[child];
48 child.position = new Vector3
50 m_yarn.position.x + offset.x,
51 m_yarn.position.y + offset.y, // temp, while parallax effect is being fixed
52 0.0f