1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Merge pull request #26065 from neikeq/csharp-fix-gd-range

C#: Make GD.Range return IEnumerable instead of array
This commit is contained in:
Ignacio Etcheverry
2019-02-19 19:27:37 +01:00
committed by GitHub
4 changed files with 20 additions and 54 deletions

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
#if REAL_T_IS_DOUBLE #if REAL_T_IS_DOUBLE
using real_t = System.Double; using real_t = System.Double;
@@ -125,7 +126,7 @@ namespace Godot
godot_icall_GD_randomize(); godot_icall_GD_randomize();
} }
public static double rand_range(double from, double to) public static double RandRange(double from, double to)
{ {
return godot_icall_GD_rand_range(from, to); return godot_icall_GD_rand_range(from, to);
} }
@@ -135,68 +136,34 @@ namespace Godot
return godot_icall_GD_rand_seed(seed, out newSeed); return godot_icall_GD_rand_seed(seed, out newSeed);
} }
public static int[] Range(int length) public static IEnumerable<int> Range(int end)
{ {
var ret = new int[length]; return Range(0, end, 1);
for (int i = 0; i < length; i++)
{
ret[i] = i;
}
return ret;
} }
public static int[] Range(int from, int to) public static IEnumerable<int> Range(int start, int end)
{ {
if (to < from) return Range(start, end, 1);
return new int[0];
var ret = new int[to - from];
for (int i = from; i < to; i++)
{
ret[i - from] = i;
}
return ret;
} }
public static int[] Range(int from, int to, int increment) public static IEnumerable<int> Range(int start, int end, int step)
{ {
if (to < from && increment > 0) if (end < start && step > 0)
return new int[0]; yield break;
if (to > from && increment < 0)
return new int[0];
// Calculate count if (end > start && step < 0)
int count; yield break;
if (increment > 0) if (step > 0)
count = (to - from - 1) / increment + 1;
else
count = (from - to - 1) / -increment + 1;
var ret = new int[count];
if (increment > 0)
{ {
int idx = 0; for (int i = start; i < end; i += step)
for (int i = from; i < to; i += increment) yield return i;
{
ret[idx++] = i;
}
} }
else else
{ {
int idx = 0; for (int i = start; i > end; i += step)
for (int i = from; i > to; i += increment) yield return i;
{
ret[idx++] = i;
}
} }
return ret;
} }
public static void Seed(ulong seed) public static void Seed(ulong seed)

View File

@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
namespace Godot namespace Godot
{ {
public partial class NodePath : IDisposable public sealed partial class NodePath : IDisposable
{ {
private bool disposed = false; private bool disposed = false;
@@ -31,7 +31,7 @@ namespace Godot
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
protected virtual void Dispose(bool disposing) private void Dispose(bool disposing)
{ {
if (disposed) if (disposed)
return; return;

View File

@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
namespace Godot namespace Godot
{ {
public partial class RID : IDisposable public sealed partial class RID : IDisposable
{ {
private bool disposed = false; private bool disposed = false;
@@ -31,7 +31,7 @@ namespace Godot
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
protected virtual void Dispose(bool disposing) private void Dispose(bool disposing)
{ {
if (disposed) if (disposed)
return; return;

View File

@@ -88,7 +88,6 @@ namespace Godot
} }
} }
public real_t this[int index, int axis] public real_t this[int index, int axis]
{ {
get get