public void Init(EditorSpawnerData referenceData) { assetCode = referenceData.assetCode; spawnType = (SpawnerTypeEditor)referenceData.spawnerType; spawnMethod = (SpawnerMethodEditor)referenceData.spawnerMethod; if (spawnMethod == SpawnerMethodEditor.Line) { spawnerLine = this.gameObject.GetComponent <SpawnerLine>(); } spawnInterval = referenceData.spawnInterval; spawnRate = referenceData.spawnRate; maxSpawn = referenceData.maxSpawn; spawnItems = referenceData.spawnItem; SetPosition(referenceData.spawnStartPos, referenceData.spawnEndPos); SetAngle(referenceData.angle); SetRadius(referenceData.radius); if (spawnMethod == SpawnerMethodEditor.Line) { SetDistance(distance); } }
public EditorSpawnerData GenerateData() { EditorSpawnerData data = new EditorSpawnerData(); data.assetCode = assetCode; data.spawnerMethod = (int)spawnMethod; data.spawnerType = (int)spawnType; data.spawnInterval = spawnInterval; data.spawnRate = spawnRate; data.maxSpawn = maxSpawn; data.spawnItem = spawnItems; data.angle = GetAngle(); data.radius = GetRadius(); if (spawnMethod == SpawnerMethodEditor.Line) { data.spawnStartPos = spawnerLine.firstPoint.position; data.spawnEndPos = spawnerLine.secondPoint.position; } else { data.spawnStartPos = new Vector2(transform.localPosition.x, transform.localPosition.y); data.spawnEndPos = data.spawnStartPos; } return(data); }
void GenerateSpawner(List <EditorSpawnerData> spawners) { for (int i = 0; i < spawners.Count; i++) { EditorSpawnerData referenceData = spawners[i]; Object prefab = AssetManager.Instance.GetPrefabByKeyword(referenceData.assetCode); GameObject go = Instantiate(prefab) as GameObject; go.transform.SetParent(spawnerParent); MapEditorSpawnerController controller = go.AddComponent <MapEditorSpawnerController>(); controller.Init(referenceData); } }
public EditorMapData(Dictionary <string, object> rawData) { mapName = JsonUtility.GetString(rawData, TAG_NAME); width = JsonUtility.GetInt(rawData, TAG_WIDTH); height = JsonUtility.GetInt(rawData, TAG_HEIGHT); //Load tiles from given dictionary listTile = new List <EditorTileData>(); if (rawData.ContainsKey(TAG_TILES)) { var tiles = rawData[TAG_TILES] as List <object>; for (int i = 0; i < tiles.Count; i++) { var rawTile = tiles[i] as Dictionary <string, object>; EditorTileData tileData = new EditorTileData(rawTile); listTile.Add(tileData); } } //Load map features from given dictionary listFeature = new List <EditorMapFeatureData>(); if (rawData.ContainsKey(TAG_FEATURE)) { var features = rawData[TAG_FEATURE] as List <object>; for (int i = 0; i < features.Count; i++) { var rawFeature = features[i] as Dictionary <string, object>; EditorMapFeatureData featureData = new EditorMapFeatureData(rawFeature); listFeature.Add(featureData); } } //Load saved spawner data listSpawner = new List <EditorSpawnerData>(); if (rawData.ContainsKey(TAG_SPAWNER)) { var spawners = rawData[TAG_SPAWNER] as List <object>; for (int i = 0; i < spawners.Count; i++) { var rawSpanwer = spawners[i] as Dictionary <string, object>; EditorSpawnerData spawnerData = new EditorSpawnerData(rawSpanwer); listSpawner.Add(spawnerData); } } }
public void OnPointerClick(PointerEventData eventData) { if (ToolboxManager.Instance.selectedTileType == ToolBoxTileType.Spawner) { Vector3 pressPosition = eventData.pointerPressRaycast.worldPosition; ToolBoxSpawnerTemplate template = (ToolBoxSpawnerTemplate)ToolboxManager.Instance.tileTemplate; Object prefab = AssetManager.Instance.GetPrefabByKeyword(template.assetCode); GameObject go = Instantiate(prefab) as GameObject; go.transform.SetParent(EditorTileManager.Instance.spawnerParent); MapEditorSpawnerController spawnControl = go.AddComponent <MapEditorSpawnerController>(); EditorSpawnerData spawnData = new EditorSpawnerData(); spawnData.assetCode = template.assetCode; spawnData.spawnerMethod = (int)template.spawnMethod; spawnData.spawnerType = (int)template.spawnerType; spawnData.spawnInterval = 1; spawnData.spawnRate = 1; spawnData.maxSpawn = 10; spawnData.radius = 0.5f; if (template.spawnMethod == SpawnerMethodEditor.Point) { spawnData.spawnStartPos = spawnData.spawnEndPos = new Vector2(pressPosition.x, pressPosition.y); } else if (template.spawnMethod == SpawnerMethodEditor.Line) { spawnData.spawnStartPos = new Vector2(pressPosition.x - 0.5f, pressPosition.y); spawnData.spawnEndPos = new Vector2(pressPosition.x + 0.5f, pressPosition.y); } spawnControl.Init(spawnData); Debug.Log("Spawner Spawn " + spawnData.assetCode); } }