using System.Xml; using System.Xml.Linq; using UnityEngine; // public class MinEventActionSpawnEntityAtPoint : MinEventActionRemoveBuff { private string strCvar; private string strSpawnGroup = ""; public override void Execute(MinEventParams _params) { if (!SingletonMonoBehaviour.Instance.IsServer) return; var position = _params.Position; if (targetType != TargetTypes.positionAOE) { if (Voxel.voxelRayHitInfo.bHitValid) { var hitInfo = Voxel.voxelRayHitInfo; if (hitInfo == null) return; position = hitInfo.hit.blockPos; } } position += Vector3i.up; int EntityID = -1; // If the group is set, then use it. if (!string.IsNullOrEmpty(strSpawnGroup)) { var ClassID = 0; EntityID = EntityGroups.GetRandomFromGroup(strSpawnGroup, ref ClassID); } if (EntityID == -1) return; var NewEntity = EntityFactory.CreateEntity(EntityID, position) as EntityAlive; if (NewEntity) { var entityCreationData = new EntityCreationData(NewEntity); entityCreationData.id = -1; GameManager.Instance.RequestToSpawnEntityServer(entityCreationData); NewEntity.OnEntityUnload(); } } public override bool ParseXmlAttribute(XAttribute _attribute) { var flag = base.ParseXmlAttribute(_attribute); if (!flag) { var name = _attribute.Name.LocalName; if (name != null) { if (name == "SpawnGroup") { strSpawnGroup = _attribute.Value; return true; } if (name == "Cvar") { strCvar = _attribute.Value; return true; } } } return flag; } }