Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- public class DecorationSpawner : MonoBehaviour
- {
- [System.Serializable]
- public class decoInfo
- {
- public List<Decoration> decorationReferences;
- public int decorationCount = 10;
- public float minimalDistanceBetweenDecoration = 10.0f;
- }
- public float minX = 0.0f;
- public float maxX = 180.0f;
- public float minZ = 0.0f;
- public float maxZ = 180.0f;
- public List<decoInfo> decorations = new List<decoInfo>();
- private float Scale = 0.5f;
- public void RemoveDecoration()
- {
- foreach (Decoration item in Object.FindObjectsOfType<Decoration>())
- {
- DestroyImmediate(item.gameObject);
- }
- }
- public void SpawnDecoration()
- {
- foreach (decoInfo item in decorations)
- {
- for (int i = 0; i < item.decorationCount; i++)
- {
- //Object newProp = Instantiate(item.decorationReferences[(int)Random.Range(0.0f, (float)item.decorationReferences.Count)]);
- int iObject = Random.Range(0, item.decorationReferences.Count);
- bool bPlaced = false;
- int counter = 0;
- while ((bPlaced == false) && (counter < 10))
- {
- item.decorationReferences[iObject].transform.position = new Vector3(Random.Range(minX, maxX), 250, Random.Range(minZ, maxZ));
- RaycastHit hit;
- Physics.Raycast(item.decorationReferences[iObject].transform.position, Vector3.down, out hit);
- if (hit.transform.gameObject == this.transform.gameObject)
- {
- if (item.decorationReferences[iObject].isAllowed(hit.point.y))
- {
- item.decorationReferences[iObject].transform.position = new Vector3(item.decorationReferences[iObject].transform.position.x,
- item.decorationReferences[iObject].getRandomAltitude(hit.point.y),
- item.decorationReferences[iObject].transform.position.z);
- GameObject tObject = Instantiate(item.decorationReferences[iObject].gameObject, item.decorationReferences[iObject].transform.position, item.decorationReferences[iObject].getRandomOrientation(hit.normal)) as GameObject;
- tObject.transform.localScale = new Vector3(Scale, Scale, Scale);
- bPlaced = true;
- }
- else counter++;
- }
- else counter++;
- }
- }
- }
- }
- // Use this for initialization
- void Start()
- {
- }
- // Update is called once per frame
- void Update()
- {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement