Jump to content
  • Advertisement
Sign in to follow this  

Managing Objects in C# MDX

This topic is 4074 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I'm creating a 3D model/map editor with MDX (C#) and I was wondering what would be the best way to manage my objects. As it stands, I have classes for my primitives. Each have a vertex buffer, index buffer, position coords, etc. What I was hoping to do was create a static array for my main object class which all my other classes inherit, but there is no way of dynamically adding to an array in C#. I've been told the ArrayList can accomplish this, but perhaps there is a better way? I should also mention that the array stores the actual object in it. For example, if I said: D3DSphere mysphere = new D3DSphere(); Upon creation, mysphere would be stored into the static array. Perhaps this a bad way of doing it? Any thoughts or comments are appreciated. Thanks.

Share this post

Link to post
Share on other sites
You can use the following for dynamic arrays:

List<object_type> array_name = new List<object_type>();

That's all it is is really - a list.

"object_type" is obviously the type of object you wish the array to contain, and "array_name" is whatever you want it to be.

Just declare this as you need. You can add to the array by using array_name.Add(item). There are some handy methods associated with the List class too.

It's found in the System.Collections.Generic namespace so don't forget to include it with "using"

Share this post

Link to post
Share on other sites
Your post is a bit too vague or broad. If you could be more specific. I'll try to answer with what I think you're asking.

Anyways, there is one thing to watch out for in c# and that is boxing and unboxing. It can literally kill your performance if you're not careful. Boxing and un-boxing happen when you store a value type into a reference type and work with it to and from value -> reference -> value -> reference ... etc. Basically what happens is that it has to do a lot of extra work changing the object from a value type to a reference type and back and forth.

One solution is to use generics. In-fact it is probably the best solution in my opinion. There is some info about it here: Generics

And yes you're right arrays are fast but not the answer for a list that will grow or shrink at various times during your application's run-time. Typically lists are used.

A list is nothing more that an array management class. It will handing operations for an array like: Adding items, removing items, resizing the array and so on and so forth.

I actually created my own array management classes and called them PowerList objects. But it is the same as the built-in DotNet Collections classes. You can find them in the namespace "System.Collections" in the "mscorlib.dll" reference file.

If you're are going to create a list that needs be optimized for speed you should use the generic counterparts located in the namespace "System.Collections.Generic". In there you'll find the List<T> class.
That should do what you want.

Again, just be careful to not store value types in reference type lists/arrays and you should be fine.



Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!