private object _spawnUnits(object state) { var navMeshBounds = _mapGenerator.GetComponentInChildren <MeshRenderer>().bounds; // create copies of prefabs to avoid changing the actual prefabs var prefabWrapepr = transform.Find("Prefabs"); _prefabDict = new Dictionary <Faction, Dictionary <Class, GameObject> >(); for (var faction = 0; faction < Prefabs.Count; faction++) { var factionPrefabs = Prefabs[faction]; var factionDict = new Dictionary <Class, GameObject>(); for (var unitClass = 0; unitClass < factionPrefabs.Prefabs.Count; unitClass++) { var classPrefab = factionPrefabs.Prefabs[unitClass]; factionDict.Add((Class)unitClass, Instantiate(classPrefab.Prefab, prefabWrapepr)); } _prefabDict.Add((Faction)faction, factionDict); } foreach (var faction in _prefabDict.Values) { foreach (var unitClass in faction) { if (!EditorMode) { unitClass.Value.GetComponent <NavMeshAgent>().agentTypeID = _mapGenerator.NavMeshDictionary[unitClass.Key].agentTypeID; } else { // remove all unnecessary unitClass.Value.GetComponent <Unit>().enabled = false; unitClass.Value.GetComponent <NavMeshAgent>().enabled = false; Destroy(unitClass.Value.GetComponent <Animator>()); } } } foreach (var stat in _situation.Stats) { stat.ApplyTo(_prefabDict[stat.Faction][stat.Class]); stat.ApplyTo(_prefabDict[stat.Faction][stat.Class]); } _unitWrapper = transform.Find("Units"); foreach (var unit in _situation.Units) { Instantiate( _prefabDict[unit.Faction][unit.Class], _mapGenerator.RealWorldToUnity(unit.Position), Quaternion.AngleAxis(unit.Rotation, Vector3.up), _unitWrapper); } return(state); }
private object _enableCamera(object state) { _mapGenerator = FindObjectOfType <MapGenerator>(); var navMeshBounds = _mapGenerator.GetComponentInChildren <MeshRenderer>().bounds; ViewTarget = navMeshBounds.center; _moveCamera(); return(state); }