component.monkey2 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. Namespace mojo3d
  2. Enum ComponentTypeFlags
  3. Singleton=1
  4. End
  5. Class ComponentType
  6. Method New( name:String,priority:int,flags:ComponentTypeFlags )
  7. _name=name
  8. _priority=priority
  9. _flags=flags
  10. End
  11. Property Name:String()
  12. Return _name
  13. End
  14. Property Priority:Int()
  15. Return _priority
  16. End
  17. Property Flags:ComponentTypeFlags()
  18. Return _flags
  19. End
  20. Private
  21. Field _name:String
  22. Field _priority:Int
  23. Field _flags:ComponentTypeFlags
  24. End
  25. Class Component
  26. Method New( entity:Entity,type:ComponentType )
  27. _entity=entity
  28. _type=type
  29. _entity.AddComponent( Self )
  30. End
  31. Property Entity:Entity()
  32. Return _entity
  33. End
  34. Property Type:ComponentType()
  35. Return _type
  36. End
  37. Method Destroy()
  38. OnDestroy()
  39. _entity.RemoveComponent( Self )
  40. _entity=Null
  41. _type=Null
  42. End
  43. Internal
  44. Method OnCopy:Component( entity:Entity ) Virtual
  45. RuntimeError( "Don't know how to copy component of type "+Type.Name )
  46. Return Null
  47. End
  48. Method OnShow() virtual
  49. End
  50. Method OnHide() Virtual
  51. End
  52. Method OnBeginUpdate() Virtual
  53. End
  54. Method OnUpdate( elapsed:Float ) Virtual
  55. End
  56. Method OnDestroy() Virtual
  57. End
  58. Method OnCollide( body:RigidBody ) virtual
  59. End
  60. Private
  61. Field _entity:Entity
  62. Field _type:ComponentType
  63. End