UltimateZoneBuilder/Source/Plugins/UDBScript/API/BlockMapContentBase.cs
biwa 5b2b149b40
UDBScript version 5 (#819)
Improved UDBScript to version 5:

- Added Plane class
- Added BlockMap, BlockEntry, and BlackMapQueryResult classes
- Sector class
  - Added getLabelPositions method to get the position of sector labels (where tags, effects etc. are displayed)
- Added support for JavaScript BigInt for UDMF fields. This means it's not necessary anymore to use UniValue to assign integers to new UDMF fields. Instead it can be done like this: sector.fields.my_int_field = 1n;
- Added type information file (udbscript.d.ts)
2022-11-13 01:15:17 +01:00

76 lines
2.2 KiB
C#

#region ================== Copyright (c) 2022 Boris Iwanski
/*
* This program is free software: you can redistribute it and/or modify
*
* it under the terms of the GNU General Public License as published by
*
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
*
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
*
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.If not, see<http://www.gnu.org/licenses/>.
*/
#endregion
#region ================== Namespaces
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
#endregion
namespace CodeImp.DoomBuilder.UDBScript.Wrapper
{
abstract class BlockMapContentBase
{
#region ================== Variables
protected LinedefWrapper[] wrappedlines;
protected ThingWrapper[] wrappedthings;
protected SectorWrapper[] wrappedsectors;
protected VertexWrapper[] wrappedvertices;
#endregion
#region ================== Methods
abstract public LinedefWrapper[] getLinedefs();
abstract public ThingWrapper[] getThings();
abstract public SectorWrapper[] getSectors();
abstract public VertexWrapper[] getVertices();
/// <summary>
/// Fills the container array with wrapped instances of the map elements in the given list.
/// </summary>
/// <typeparam name="W">Wrapped map element type</typeparam>
/// <typeparam name="T">Regular map element type</typeparam>
/// <param name="list">List of regular map elements</param>
/// <param name="container">Array of wrapped map elements</param>
/// <returns></returns>
protected internal W[] GetArray<W, T>(IEnumerable<T> list, ref W[] container)
{
if (container == null)
{
if (list == null)
container = new W[0];
else
container = list.Select(s => (W)Activator.CreateInstance(typeof(W), BindingFlags.NonPublic | BindingFlags.Instance, null, new object[] { s }, null)).ToArray();
}
return container;
}
#endregion
}
}