Shape.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Urho.Resources;
  2. namespace Urho.Shapes
  3. {
  4. public abstract class Shape : StaticModel
  5. {
  6. Material material;
  7. public override void OnAttachedToNode(Node node)
  8. {
  9. Model = Application.ResourceCache.GetModel(ModelResource);
  10. Color = color;
  11. CastShadows = true;
  12. }
  13. protected abstract string ModelResource { get; }
  14. Color color = Color.Magenta;
  15. public Color Color
  16. {
  17. set
  18. {
  19. if (material == null)
  20. {
  21. //try to restore material (after deserialization)
  22. material = GetMaterial(0);
  23. if (material == null)
  24. {
  25. material = new Material();
  26. material.SetTechnique(0, Application.ResourceCache.GetTechnique("Techniques/NoTextureAlpha.xml"), 1, 1);
  27. }
  28. SetMaterial(material);
  29. }
  30. material.SetShaderParameter("MatDiffColor", value);
  31. color = value;
  32. }
  33. get
  34. {
  35. return color;
  36. }
  37. }
  38. public override void OnDeserialize(IComponentDeserializer d)
  39. {
  40. color = d.Deserialize<Color>(nameof(Color));
  41. }
  42. public override void OnSerialize(IComponentSerializer s)
  43. {
  44. s.Serialize(nameof(Color), Color);
  45. }
  46. }
  47. }