using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Gaia { /// /// Simple Spawn Extension for demo / debug purposes. Just writes some info to the console when being executed. /// public class GeNaSpawnExtension : MonoBehaviour, ISpawnExtension { public string Name { get { return "GeNaSpawnExtension"; } } public bool AffectsHeights => false; public bool AffectsTextures => false; public GameObject m_genaSpawnerPrefab; private GeNa.Spawner m_genaSpawnerInstance; public void Close() { //Debug.Log("Spawn Extension is closing down."); if (m_genaSpawnerInstance != null) { DestroyImmediate(m_genaSpawnerInstance.gameObject); } } public void Init(Spawner spawner) { //Debug.Log("Spawn Extension starting up."); if (m_genaSpawnerPrefab == null) { Debug.LogWarning("GeNa Spawn Extension '" + Name + "' does not have a GeNa Spawner Prefab assigned."); return; } GameObject newGO = Instantiate(m_genaSpawnerPrefab); m_genaSpawnerInstance = newGO.GetComponent(); if (m_genaSpawnerInstance == null) { Debug.LogWarning("Could not find a GeNa Spawner component on the prefab for GeNa Spawn Extension '" + Name + "'. Does this prefab use a GeNa Spawner component on the top level?"); } } public void Spawn(Spawner spawner, Transform target, int ruleIndex, int instanceIndex, SpawnExtensionInfo spawnExtensionInfo) { //Debug.Log("Spawn Extension spawning."); if (m_genaSpawnerInstance != null) { float scalarX = (spawnExtensionInfo.m_position.x - spawnExtensionInfo.m_currentTerrain.transform.position.x) / spawnExtensionInfo.m_currentTerrain.terrainData.size.x; float scalarZ = (spawnExtensionInfo.m_position.z - spawnExtensionInfo.m_currentTerrain.transform.position.z) / spawnExtensionInfo.m_currentTerrain.terrainData.size.z; Vector3 normal = spawnExtensionInfo.m_currentTerrain.terrainData.GetInterpolatedNormal(scalarX,scalarZ); m_genaSpawnerInstance.Initialise(target,"Gaia Spawn Extension Spawn",false); m_genaSpawnerInstance.m_parentName = target.name; m_genaSpawnerInstance.Spawn(spawnExtensionInfo.m_position, true); } } public void Delete() { } } }