- Home /
code reusability question
Hi, I have a design problem: I wrote a pathfinding function, ComputeShortestPath(start:Vector3,end:Vector3), giving out a ordered list of Vector3 waypoints.
I want to be able to call this function, from within different scopes (Level generation, AI, and so on) so I started reading about static functions, for using it like myUtilClass.ComputeShortestPath(start, end). Now the problem is, that i don't want to make it's internal variables static (it wouldn't make sense, if i figured it right), but still, looks like the only way I can call my code, without having it attached to an object.
So, taking the following code (and probably the ugly but intentional choice of manipulating "randomnumbers" variable, the way VeryImportantOperation does, which is a simplification of why my Pathfinding script variables can't be static)
// mySimpleClass.js
var randomnumbers:List.<int>;
function GenerateNumbers(howmany:int)
{
for (var i = 0;i<howmany;i++)
{
randomnumbers.Add(Random.Range(0,101));
}
VeryImportantOperation();
return randomnumbers;
}
function VeryImportantOperation()
{
for (var i = 0;i<randomnumbers.Count;i++)
{
randomnumbers[i] = randomnumbers[i]+42;
}
}
// from anywhere else
...
var somerandomnumbers : List.<int> = mySimpleClass.GenerateNumbers(5);
...
GenerateNumbers
var somemorerandomnumbers : List.<int> = mySimpleClass.GenerateNumbers(Random.Range(3,5));
...
as you can see, i can't make "randomnumbers" static, and because of my implementation, I need it to be declared outside of all functions, it has to be called recursively from different functions. Maybe there's some other way i can access my "utility" functions this way ? Thank you !
Have you read about ScriptableObjects? Because your problem seems to be that you currently need to have your pathfinding attached to every gameobject that needs it.
Hi, thanks. But wouldn't that be more costly ? I haven't read about ScriptableObjects, but i don't think it's the kind of implementation i need in this scenario. my function just outputs a list of vectors, i hope i should easily call for that "computation"
Your answer

Follow this Question
Related Questions
Calling non-static from static function C# 2 Answers
Calling Update function in another function (JS) 1 Answer
public static variable access returning null from others 1 Answer
Can't Encode MD5 2 Answers
Accessing Functions 1 Answer