Gå til innhold

problemer med PropertyGrid


Anbefalte innlegg

Skrevet (endret)

Det jeg lurer på, er hva det er som skal til for at man kan endre verdier som er strukturer og lignende (System.Drawing.Point f.eks.) i PropertyGrid?

 

Først trodde jeg det var IComponent, så tenkte jeg det var SerializeAttribute.... men akk...

For å illustrere hva jeg mener litt bedre

post-31659-1183221115_thumb.png

 

Som man kan se, er Position grå...

Glorg.Vertex er edn struktur som i enkle trekk ser slik ut (irrelevante ting tatt vekk):

public struct Vertex : IVertex<float>
{
float m_x;
float m_y;
float m_z;

public float X { get { return m_x; } set { m_x = value; } }
public float Y { get { return m_y; } set { m_y = value; } }
public float Z { get { return m_z; } set { m_z = value; } }
}

Endret av GeirGrusom
Videoannonse
Annonse
Skrevet (endret)

Vel, jeg fant ut av det; etter litt leting på MSDN.

 

http://msdn2.microsoft.com/en-us/library/aa302326.aspx

 

Det man i korte trekk må gjøre, er å skrive en ExpandableObjectConverter klasse for alle strukturer man vil endre.

 

Det er heldigvis ikke så veldig vanskelig :)

 

	public class GlorgVertexConverter : System.ComponentModel.ExpandableObjectConverter
{
 
 public override bool  CanConvertTo(System.ComponentModel.ITypeDescriptorContext context, Type destinationType)
 {
 	if (destinationType == typeof(Glorg.Vertex))
   return true;
   return base.CanConvertTo(context, destinationType);
 }
 public override bool CanConvertFrom(System.ComponentModel.ITypeDescriptorContext context, Type sourceType)
 {
 	if (sourceType == typeof(Glorg.Vertex))
   return true;
 	return base.CanConvertTo(context, sourceType);
 }
 public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
 {
 	if (value is string)
 	{
   string[] ps = (value as string).Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

   return new Glorg.Vertex(float.Parse(ps[0].Trim()), float.Parse(ps[1].Trim()), float.Parse(ps[2].Trim()));
 	}
 	return base.ConvertFrom(context, culture, value);
 }
 public override object ConvertTo(System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
 {
 	if (destinationType == typeof(string) && value is Glorg.Vertex)
 	{
   return ((Glorg.Vertex)value).X.ToString() + ";" + ((Glorg.Vertex)value).Y.ToString() + ";" + ((Glorg.Vertex)value).Z.ToString() + ";";
 	}
 	return base.ConvertTo(context, culture, value, destinationType);
 }
}


[System.ComponentModel.TypeConverter(typeof(Glorg.GlorgVertexConverter))]
public struct Vertex : IVertex<float>
{
float m_x;
float m_y;
float m_z;

public float X { get { return m_x; } set { m_x = value; } }
public float Y { get { return m_y; } set { m_y = value; } }
public float Z { get { return m_z; } set { m_z = value; } }
}

Endret av GeirGrusom
Skrevet

Hihi, et spillutviklingsmiljø :)

Jeg har funnet ut at .NET er egentlig glimrende til det, siden man kan kompilere og bruke programmer/dll-er run-time, og har et solid reflection namespace.

Skrevet (endret)

Legger til et screenshot og bump :)

Dette er spill editoren jeg holder på med.

Den bruker Glorg for å få til grafikk, man kan programmere ved å bruke C# (funker faktisk akkurat nå, med syntax highlighting i text editoren :) )

 

post-31659-1183569952_thumb.png

Endret av GeirGrusom
Skrevet

Det er et privatprosjekt, men jeg har sett hvor mange det er som er ute etter å lage spill på forumet her, så jeg tenkte dette kanskje kunne bli en god forretningsidé, som click and play i 3D

 

Jeg har tenkt på et flow-chart basert hendelsesforløp i tillegg til den programmerbaredelen, som gjør at man ikke trenger noen programmeringskunnskaper for å lage et fullstendig spill.

 

Shaders skrives i GSLS (siden Glorg er en OpenGL grafikkmotor)

øvrig kode skrives i C#, og når man trykekr "Build" har man en fiks ferdig .exe fil man kan starte :)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...