ZeroVR/ZeroPacientVR/Assets/CodeRespawn/DungeonArchitect_Samples/DemoBuilder_SimpleCity/Scripts/CitySkyscraperInserter.cs

39 lines
1.3 KiB
C#

//\$ Copyright 2015-22, Code Respawn Technologies Pvt Ltd - All Rights Reserved \$//\n
using UnityEngine;
using DungeonArchitect;
using DungeonArchitect.Utils;
using DungeonArchitect.Builders.SimpleCity;
[System.Serializable]
public class SkyscraperRange
{
public float startDistance;
public float endDistance;
public string markerName;
};
public class CitySkyscraperInserter : DungeonEventListener {
public SkyscraperRange[] skyscraperRanges;
public override void OnDungeonMarkersEmitted(Dungeon dungeon, DungeonModel model, LevelMarkerList markers) {
var cityModel = model as SimpleCityDungeonModel;
var width = cityModel.CityWidth;
var height = cityModel.CityHeight;
var center = Vector3.Scale(new Vector3 (width / 2.0f, 0, height / 2.0f), new Vector3 (cityModel.Config.CellSize.x, 0, cityModel.Config.CellSize.y));
center += dungeon.transform.position;
foreach (var marker in markers) {
if (marker.SocketType == SimpleCityDungeonMarkerNames.House) {
var distanceFromCenter = (Matrix.GetTranslation (ref marker.Transform) - center).magnitude;
foreach (var rangeInfo in skyscraperRanges) {
if (distanceFromCenter >= rangeInfo.startDistance && distanceFromCenter <= rangeInfo.endDistance) {
marker.SocketType = rangeInfo.markerName;
break;
}
}
}
}
}
}