Quote from: Ryan Timothy on Thu 04/07/2013 00:07:09Yeah...(heh) to the point when it stops working.
Properties is one method (although currently it's still read-only, but Crimson is doing a fantastic job at tweaking the engine).

Anyway, the thing is that it might be much faster both for user and for program to iterate between two indexes, rather then fill the custom array every time.
And what if the range is varied?
With indexes you can do
function DoActionWithObjects(int first, int last)
{
}
While without them you'll have to manually fill the custom array, checking some property maybe, and don't forget to change that property if you need to save the object from being included to that list.
---(pseudo-code)---
int obj;
while (obj < Room.ObjectCount)
{
if (object[obj].GetProperty("blah") == 1)
AddObjectToArray(obj);
obj++;
}
DoActionWithObjectArray();
Yes, that's safer, and more formal, but that would be real pain to program to suit your particular needs. Besides it is slower than it could be. The latter may or may not be an issue, though I think I am getting paranoid over execution speed lately (seeing as a piece of code may slow down game execution by several percents if moved to separate function).
The real solution here, IMHO, would require to change the scripting paradigm. Scripter would need to seek the root of why he needs a range of indices in this particular case, and radically change the implementation. If the range of objects is constant, the special list could be precreated beforehand at the game start, or even at design time by creating a "filter" folder and filling it with visual "references". If the list is changing over time, it could be implemented as a linked list for faster insertion/removal.