# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: underworlds.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()




DESCRIPTOR = _descriptor.FileDescriptor(
  name='underworlds.proto',
  package='underworlds',
  syntax='proto3',
  serialized_pb=_b('\n\x11underworlds.proto\x12\x0bunderworlds\"\x07\n\x05\x45mpty\"\x15\n\x04\x42ool\x12\r\n\x05value\x18\x01 \x01(\x08\"\x14\n\x04Time\x12\x0c\n\x04time\x18\x01 \x01(\x01\"G\n\x07Welcome\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t\x12 \n\x18invalidation_server_port\x18\x03 \x01(\x05\"\x14\n\x04Size\x12\x0c\n\x04size\x18\x01 \x01(\x05\")\n\x06Pointf\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"(\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x11\x12\t\n\x01y\x18\x02 \x01(\x11\x12\t\n\x01z\x18\x03 \x01(\x11\"3\n\x05\x43olor\x12\t\n\x01r\x18\x01 \x01(\x02\x12\t\n\x01g\x18\x02 \x01(\x02\x12\t\n\x01\x62\x18\x03 \x01(\x02\x12\t\n\x01\x61\x18\x04 \x01(\x02\"Q\n\x06\x43lient\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12-\n\x05links\x18\x03 \x03(\x0b\x32\x1e.underworlds.ClientInteraction\"\xd0\x01\n\x11\x43lientInteraction\x12\r\n\x05world\x18\x01 \x01(\t\x12<\n\x04type\x18\x02 \x01(\x0e\x32..underworlds.ClientInteraction.InteractionType\x12(\n\rlast_activity\x18\x03 \x01(\x0b\x32\x11.underworlds.Time\"D\n\x0fInteractionType\x12\n\n\x06READER\x10\x00\x12\x0c\n\x08PROVIDER\x10\x01\x12\x0b\n\x07MONITOR\x10\x02\x12\n\n\x06\x46ILTER\x10\x03\"(\n\x07\x43ontext\x12\x0e\n\x06\x63lient\x18\x01 \x01(\t\x12\r\n\x05world\x18\x02 \x01(\t\"\xed\x01\n\x0cInvalidation\x12\x30\n\x06target\x18\x01 \x01(\x0e\x32 .underworlds.Invalidation.Target\x12\x38\n\x04type\x18\x02 \x01(\x0e\x32*.underworlds.Invalidation.InvalidationType\x12\r\n\x05world\x18\x03 \x01(\t\x12\n\n\x02id\x18\x04 \x01(\t\"!\n\x06Target\x12\t\n\x05SCENE\x10\x00\x12\x0c\n\x08TIMELINE\x10\x01\"3\n\x10InvalidationType\x12\x07\n\x03NEW\x10\x00\x12\n\n\x06UPDATE\x10\x01\x12\n\n\x06\x44\x45LETE\x10\x02\"@\n\x08Topology\x12\x0e\n\x06worlds\x18\x01 \x03(\t\x12$\n\x07\x63lients\x18\x02 \x03(\x0b\x32\x13.underworlds.Client\"\x8a\x03\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12(\n\x04type\x18\x03 \x01(\x0e\x32\x1a.underworlds.Node.NodeType\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12\x10\n\x08\x63hildren\x18\x05 \x03(\t\x12\x16\n\x0etransformation\x18\x06 \x03(\x02\x12\x13\n\x0blast_update\x18\x08 \x01(\x01\x12\x0e\n\x06lowres\x18\x10 \x03(\t\x12\r\n\x05hires\x18\x11 \x03(\t\x12\x0b\n\x03\x63\x61\x64\x18\x12 \x03(\t\x12!\n\x04\x61\x61\x62\x62\x18\x13 \x03(\x0b\x32\x13.underworlds.Pointf\x12\x0f\n\x07physics\x18\x1e \x01(\x08\x12\x15\n\rclipplanenear\x18( \x01(\x02\x12\x14\n\x0c\x63lipplanefar\x18) \x01(\x02\x12\x0e\n\x06\x61spect\x18* \x01(\x02\x12\x15\n\rhorizontalfov\x18+ \x01(\x02\";\n\x08NodeType\x12\r\n\tUNDEFINED\x10\x00\x12\n\n\x06\x45NTITY\x10\x01\x12\x08\n\x04MESH\x10\x02\x12\n\n\x06\x43\x41MERA\x10\x03\"\x14\n\x05Nodes\x12\x0b\n\x03ids\x18\x01 \x03(\t\"W\n\rNodeInContext\x12%\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x14.underworlds.Context\x12\x1f\n\x04node\x18\x02 \x01(\x0b\x32\x11.underworlds.Node\"\xf4\x01\n\tSituation\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.underworlds.Situation.SituationType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x13\n\x0blast_update\x18\x04 \x01(\x01\x12 \n\x05start\x18\x05 \x01(\x0b\x32\x11.underworlds.Time\x12\x1e\n\x03\x65nd\x18\x06 \x01(\x0b\x32\x11.underworlds.Time\";\n\rSituationType\x12\x0b\n\x07GENERIC\x10\x00\x12\n\n\x06MOTION\x10\x01\x12\x11\n\rEVT_MODELLOAD\x10\x02\"\x19\n\nSituations\x12\x0b\n\x03ids\x18\x01 \x03(\t\"f\n\x12SituationInContext\x12%\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x14.underworlds.Context\x12)\n\tsituation\x18\x02 \x01(\x0b\x32\x16.underworlds.Situation\"\xb7\x01\n\x04Mesh\x12\n\n\x02id\x18\x01 \x01(\t\x12%\n\x08vertices\x18\x02 \x03(\x0b\x32\x13.underworlds.Pointf\x12!\n\x05\x66\x61\x63\x65s\x18\x03 \x03(\x0b\x32\x12.underworlds.Point\x12$\n\x07normals\x18\x04 \x03(\x0b\x32\x13.underworlds.Pointf\x12\x0e\n\x06\x63olors\x18\x05 \x03(\r\x12#\n\x07\x64iffuse\x18\x06 \x01(\x0b\x32\x12.underworlds.Color\"U\n\rMeshInContext\x12#\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x13.underworlds.Client\x12\x1f\n\x04mesh\x18\x02 \x01(\x0b\x32\x11.underworlds.Mesh2\xaa\x0b\n\x0bUnderworlds\x12\x33\n\x04helo\x12\x14.underworlds.Welcome\x1a\x13.underworlds.Client\"\x00\x12\x33\n\x06\x62yebye\x12\x13.underworlds.Client\x1a\x12.underworlds.Empty\"\x00\x12\x32\n\x06uptime\x12\x13.underworlds.Client\x1a\x11.underworlds.Time\"\x00\x12\x38\n\x08topology\x12\x13.underworlds.Client\x1a\x15.underworlds.Topology\"\x00\x12\x32\n\x05reset\x12\x13.underworlds.Client\x1a\x12.underworlds.Empty\"\x00\x12\x38\n\x0bgetNodesLen\x12\x14.underworlds.Context\x1a\x11.underworlds.Size\"\x00\x12\x39\n\x0bgetNodesIds\x12\x14.underworlds.Context\x1a\x12.underworlds.Nodes\"\x00\x12\x38\n\x0bgetRootNode\x12\x14.underworlds.Context\x1a\x11.underworlds.Node\"\x00\x12:\n\x07getNode\x12\x1a.underworlds.NodeInContext\x1a\x11.underworlds.Node\"\x00\x12>\n\nupdateNode\x12\x1a.underworlds.NodeInContext\x1a\x12.underworlds.Empty\"\x00\x12>\n\ndeleteNode\x12\x1a.underworlds.NodeInContext\x1a\x12.underworlds.Empty\"\x00\x12=\n\x10getSituationsLen\x12\x14.underworlds.Context\x1a\x11.underworlds.Size\"\x00\x12\x43\n\x10getSituationsIds\x12\x14.underworlds.Context\x1a\x17.underworlds.Situations\"\x00\x12I\n\x0cgetSituation\x12\x1f.underworlds.SituationInContext\x1a\x16.underworlds.Situation\"\x00\x12;\n\x0etimelineOrigin\x12\x14.underworlds.Context\x1a\x11.underworlds.Time\"\x00\x12>\n\x05\x65vent\x12\x1f.underworlds.SituationInContext\x1a\x12.underworlds.Empty\"\x00\x12G\n\x0estartSituation\x12\x1f.underworlds.SituationInContext\x1a\x12.underworlds.Empty\"\x00\x12\x45\n\x0c\x65ndSituation\x12\x1f.underworlds.SituationInContext\x1a\x12.underworlds.Empty\"\x00\x12H\n\x0fupdateSituation\x12\x1f.underworlds.SituationInContext\x1a\x12.underworlds.Empty\"\x00\x12H\n\x0f\x64\x65leteSituation\x12\x1f.underworlds.SituationInContext\x1a\x12.underworlds.Empty\"\x00\x12:\n\x07hasMesh\x12\x1a.underworlds.MeshInContext\x1a\x11.underworlds.Bool\"\x00\x12:\n\x07getMesh\x12\x1a.underworlds.MeshInContext\x1a\x11.underworlds.Mesh\"\x00\x12<\n\x08pushMesh\x12\x1a.underworlds.MeshInContext\x1a\x12.underworlds.Empty\"\x00\x32^\n\x17UnderworldsInvalidation\x12\x43\n\x10\x65mitInvalidation\x12\x19.underworlds.Invalidation\x1a\x12.underworlds.Empty\"\x00\x62\x06proto3')
)
_sym_db.RegisterFileDescriptor(DESCRIPTOR)



_CLIENTINTERACTION_INTERACTIONTYPE = _descriptor.EnumDescriptor(
  name='InteractionType',
  full_name='underworlds.ClientInteraction.InteractionType',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='READER', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PROVIDER', index=1, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MONITOR', index=2, number=2,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='FILTER', index=3, number=3,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=545,
  serialized_end=613,
)
_sym_db.RegisterEnumDescriptor(_CLIENTINTERACTION_INTERACTIONTYPE)

_INVALIDATION_TARGET = _descriptor.EnumDescriptor(
  name='Target',
  full_name='underworlds.Invalidation.Target',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='SCENE', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='TIMELINE', index=1, number=1,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=809,
  serialized_end=842,
)
_sym_db.RegisterEnumDescriptor(_INVALIDATION_TARGET)

_INVALIDATION_INVALIDATIONTYPE = _descriptor.EnumDescriptor(
  name='InvalidationType',
  full_name='underworlds.Invalidation.InvalidationType',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='NEW', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='UPDATE', index=1, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='DELETE', index=2, number=2,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=844,
  serialized_end=895,
)
_sym_db.RegisterEnumDescriptor(_INVALIDATION_INVALIDATIONTYPE)

_NODE_NODETYPE = _descriptor.EnumDescriptor(
  name='NodeType',
  full_name='underworlds.Node.NodeType',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='UNDEFINED', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='ENTITY', index=1, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MESH', index=2, number=2,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='CAMERA', index=3, number=3,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=1299,
  serialized_end=1358,
)
_sym_db.RegisterEnumDescriptor(_NODE_NODETYPE)

_SITUATION_SITUATIONTYPE = _descriptor.EnumDescriptor(
  name='SituationType',
  full_name='underworlds.Situation.SituationType',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='GENERIC', index=0, number=0,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='MOTION', index=1, number=1,
      options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='EVT_MODELLOAD', index=2, number=2,
      options=None,
      type=None),
  ],
  containing_type=None,
  options=None,
  serialized_start=1657,
  serialized_end=1716,
)
_sym_db.RegisterEnumDescriptor(_SITUATION_SITUATIONTYPE)


_EMPTY = _descriptor.Descriptor(
  name='Empty',
  full_name='underworlds.Empty',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=34,
  serialized_end=41,
)


_BOOL = _descriptor.Descriptor(
  name='Bool',
  full_name='underworlds.Bool',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='value', full_name='underworlds.Bool.value', index=0,
      number=1, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=43,
  serialized_end=64,
)


_TIME = _descriptor.Descriptor(
  name='Time',
  full_name='underworlds.Time',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='time', full_name='underworlds.Time.time', index=0,
      number=1, type=1, cpp_type=5, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=66,
  serialized_end=86,
)


_WELCOME = _descriptor.Descriptor(
  name='Welcome',
  full_name='underworlds.Welcome',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='underworlds.Welcome.name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='host', full_name='underworlds.Welcome.host', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='invalidation_server_port', full_name='underworlds.Welcome.invalidation_server_port', index=2,
      number=3, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=88,
  serialized_end=159,
)


_SIZE = _descriptor.Descriptor(
  name='Size',
  full_name='underworlds.Size',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='size', full_name='underworlds.Size.size', index=0,
      number=1, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=161,
  serialized_end=181,
)


_POINTF = _descriptor.Descriptor(
  name='Pointf',
  full_name='underworlds.Pointf',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='x', full_name='underworlds.Pointf.x', index=0,
      number=1, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='y', full_name='underworlds.Pointf.y', index=1,
      number=2, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='z', full_name='underworlds.Pointf.z', index=2,
      number=3, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=183,
  serialized_end=224,
)


_POINT = _descriptor.Descriptor(
  name='Point',
  full_name='underworlds.Point',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='x', full_name='underworlds.Point.x', index=0,
      number=1, type=17, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='y', full_name='underworlds.Point.y', index=1,
      number=2, type=17, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='z', full_name='underworlds.Point.z', index=2,
      number=3, type=17, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=226,
  serialized_end=266,
)


_COLOR = _descriptor.Descriptor(
  name='Color',
  full_name='underworlds.Color',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='r', full_name='underworlds.Color.r', index=0,
      number=1, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='g', full_name='underworlds.Color.g', index=1,
      number=2, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='b', full_name='underworlds.Color.b', index=2,
      number=3, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='a', full_name='underworlds.Color.a', index=3,
      number=4, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=268,
  serialized_end=319,
)


_CLIENT = _descriptor.Descriptor(
  name='Client',
  full_name='underworlds.Client',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='underworlds.Client.id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='name', full_name='underworlds.Client.name', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='links', full_name='underworlds.Client.links', index=2,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=321,
  serialized_end=402,
)


_CLIENTINTERACTION = _descriptor.Descriptor(
  name='ClientInteraction',
  full_name='underworlds.ClientInteraction',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='world', full_name='underworlds.ClientInteraction.world', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='type', full_name='underworlds.ClientInteraction.type', index=1,
      number=2, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='last_activity', full_name='underworlds.ClientInteraction.last_activity', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _CLIENTINTERACTION_INTERACTIONTYPE,
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=405,
  serialized_end=613,
)


_CONTEXT = _descriptor.Descriptor(
  name='Context',
  full_name='underworlds.Context',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='client', full_name='underworlds.Context.client', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='world', full_name='underworlds.Context.world', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=615,
  serialized_end=655,
)


_INVALIDATION = _descriptor.Descriptor(
  name='Invalidation',
  full_name='underworlds.Invalidation',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='target', full_name='underworlds.Invalidation.target', index=0,
      number=1, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='type', full_name='underworlds.Invalidation.type', index=1,
      number=2, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='world', full_name='underworlds.Invalidation.world', index=2,
      number=3, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='id', full_name='underworlds.Invalidation.id', index=3,
      number=4, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _INVALIDATION_TARGET,
    _INVALIDATION_INVALIDATIONTYPE,
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=658,
  serialized_end=895,
)


_TOPOLOGY = _descriptor.Descriptor(
  name='Topology',
  full_name='underworlds.Topology',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='worlds', full_name='underworlds.Topology.worlds', index=0,
      number=1, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='clients', full_name='underworlds.Topology.clients', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=897,
  serialized_end=961,
)


_NODE = _descriptor.Descriptor(
  name='Node',
  full_name='underworlds.Node',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='underworlds.Node.id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='name', full_name='underworlds.Node.name', index=1,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='type', full_name='underworlds.Node.type', index=2,
      number=3, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='parent', full_name='underworlds.Node.parent', index=3,
      number=4, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='children', full_name='underworlds.Node.children', index=4,
      number=5, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='transformation', full_name='underworlds.Node.transformation', index=5,
      number=6, type=2, cpp_type=6, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='last_update', full_name='underworlds.Node.last_update', index=6,
      number=8, type=1, cpp_type=5, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='lowres', full_name='underworlds.Node.lowres', index=7,
      number=16, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='hires', full_name='underworlds.Node.hires', index=8,
      number=17, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='cad', full_name='underworlds.Node.cad', index=9,
      number=18, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='aabb', full_name='underworlds.Node.aabb', index=10,
      number=19, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='physics', full_name='underworlds.Node.physics', index=11,
      number=30, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='clipplanenear', full_name='underworlds.Node.clipplanenear', index=12,
      number=40, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='clipplanefar', full_name='underworlds.Node.clipplanefar', index=13,
      number=41, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='aspect', full_name='underworlds.Node.aspect', index=14,
      number=42, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='horizontalfov', full_name='underworlds.Node.horizontalfov', index=15,
      number=43, type=2, cpp_type=6, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _NODE_NODETYPE,
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=964,
  serialized_end=1358,
)


_NODES = _descriptor.Descriptor(
  name='Nodes',
  full_name='underworlds.Nodes',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='ids', full_name='underworlds.Nodes.ids', index=0,
      number=1, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1360,
  serialized_end=1380,
)


_NODEINCONTEXT = _descriptor.Descriptor(
  name='NodeInContext',
  full_name='underworlds.NodeInContext',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='context', full_name='underworlds.NodeInContext.context', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='node', full_name='underworlds.NodeInContext.node', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1382,
  serialized_end=1469,
)


_SITUATION = _descriptor.Descriptor(
  name='Situation',
  full_name='underworlds.Situation',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='underworlds.Situation.id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='type', full_name='underworlds.Situation.type', index=1,
      number=2, type=14, cpp_type=8, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='description', full_name='underworlds.Situation.description', index=2,
      number=3, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='last_update', full_name='underworlds.Situation.last_update', index=3,
      number=4, type=1, cpp_type=5, label=1,
      has_default_value=False, default_value=float(0),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='start', full_name='underworlds.Situation.start', index=4,
      number=5, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='end', full_name='underworlds.Situation.end', index=5,
      number=6, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _SITUATION_SITUATIONTYPE,
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1472,
  serialized_end=1716,
)


_SITUATIONS = _descriptor.Descriptor(
  name='Situations',
  full_name='underworlds.Situations',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='ids', full_name='underworlds.Situations.ids', index=0,
      number=1, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1718,
  serialized_end=1743,
)


_SITUATIONINCONTEXT = _descriptor.Descriptor(
  name='SituationInContext',
  full_name='underworlds.SituationInContext',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='context', full_name='underworlds.SituationInContext.context', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='situation', full_name='underworlds.SituationInContext.situation', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1745,
  serialized_end=1847,
)


_MESH = _descriptor.Descriptor(
  name='Mesh',
  full_name='underworlds.Mesh',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='underworlds.Mesh.id', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='vertices', full_name='underworlds.Mesh.vertices', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='faces', full_name='underworlds.Mesh.faces', index=2,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='normals', full_name='underworlds.Mesh.normals', index=3,
      number=4, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='colors', full_name='underworlds.Mesh.colors', index=4,
      number=5, type=13, cpp_type=3, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='diffuse', full_name='underworlds.Mesh.diffuse', index=5,
      number=6, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1850,
  serialized_end=2033,
)


_MESHINCONTEXT = _descriptor.Descriptor(
  name='MeshInContext',
  full_name='underworlds.MeshInContext',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='client', full_name='underworlds.MeshInContext.client', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='mesh', full_name='underworlds.MeshInContext.mesh', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2035,
  serialized_end=2120,
)

_CLIENT.fields_by_name['links'].message_type = _CLIENTINTERACTION
_CLIENTINTERACTION.fields_by_name['type'].enum_type = _CLIENTINTERACTION_INTERACTIONTYPE
_CLIENTINTERACTION.fields_by_name['last_activity'].message_type = _TIME
_CLIENTINTERACTION_INTERACTIONTYPE.containing_type = _CLIENTINTERACTION
_INVALIDATION.fields_by_name['target'].enum_type = _INVALIDATION_TARGET
_INVALIDATION.fields_by_name['type'].enum_type = _INVALIDATION_INVALIDATIONTYPE
_INVALIDATION_TARGET.containing_type = _INVALIDATION
_INVALIDATION_INVALIDATIONTYPE.containing_type = _INVALIDATION
_TOPOLOGY.fields_by_name['clients'].message_type = _CLIENT
_NODE.fields_by_name['type'].enum_type = _NODE_NODETYPE
_NODE.fields_by_name['aabb'].message_type = _POINTF
_NODE_NODETYPE.containing_type = _NODE
_NODEINCONTEXT.fields_by_name['context'].message_type = _CONTEXT
_NODEINCONTEXT.fields_by_name['node'].message_type = _NODE
_SITUATION.fields_by_name['type'].enum_type = _SITUATION_SITUATIONTYPE
_SITUATION.fields_by_name['start'].message_type = _TIME
_SITUATION.fields_by_name['end'].message_type = _TIME
_SITUATION_SITUATIONTYPE.containing_type = _SITUATION
_SITUATIONINCONTEXT.fields_by_name['context'].message_type = _CONTEXT
_SITUATIONINCONTEXT.fields_by_name['situation'].message_type = _SITUATION
_MESH.fields_by_name['vertices'].message_type = _POINTF
_MESH.fields_by_name['faces'].message_type = _POINT
_MESH.fields_by_name['normals'].message_type = _POINTF
_MESH.fields_by_name['diffuse'].message_type = _COLOR
_MESHINCONTEXT.fields_by_name['client'].message_type = _CLIENT
_MESHINCONTEXT.fields_by_name['mesh'].message_type = _MESH
DESCRIPTOR.message_types_by_name['Empty'] = _EMPTY
DESCRIPTOR.message_types_by_name['Bool'] = _BOOL
DESCRIPTOR.message_types_by_name['Time'] = _TIME
DESCRIPTOR.message_types_by_name['Welcome'] = _WELCOME
DESCRIPTOR.message_types_by_name['Size'] = _SIZE
DESCRIPTOR.message_types_by_name['Pointf'] = _POINTF
DESCRIPTOR.message_types_by_name['Point'] = _POINT
DESCRIPTOR.message_types_by_name['Color'] = _COLOR
DESCRIPTOR.message_types_by_name['Client'] = _CLIENT
DESCRIPTOR.message_types_by_name['ClientInteraction'] = _CLIENTINTERACTION
DESCRIPTOR.message_types_by_name['Context'] = _CONTEXT
DESCRIPTOR.message_types_by_name['Invalidation'] = _INVALIDATION
DESCRIPTOR.message_types_by_name['Topology'] = _TOPOLOGY
DESCRIPTOR.message_types_by_name['Node'] = _NODE
DESCRIPTOR.message_types_by_name['Nodes'] = _NODES
DESCRIPTOR.message_types_by_name['NodeInContext'] = _NODEINCONTEXT
DESCRIPTOR.message_types_by_name['Situation'] = _SITUATION
DESCRIPTOR.message_types_by_name['Situations'] = _SITUATIONS
DESCRIPTOR.message_types_by_name['SituationInContext'] = _SITUATIONINCONTEXT
DESCRIPTOR.message_types_by_name['Mesh'] = _MESH
DESCRIPTOR.message_types_by_name['MeshInContext'] = _MESHINCONTEXT

Empty = _reflection.GeneratedProtocolMessageType('Empty', (_message.Message,), dict(
  DESCRIPTOR = _EMPTY,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Empty)
  ))
_sym_db.RegisterMessage(Empty)

Bool = _reflection.GeneratedProtocolMessageType('Bool', (_message.Message,), dict(
  DESCRIPTOR = _BOOL,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Bool)
  ))
_sym_db.RegisterMessage(Bool)

Time = _reflection.GeneratedProtocolMessageType('Time', (_message.Message,), dict(
  DESCRIPTOR = _TIME,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Time)
  ))
_sym_db.RegisterMessage(Time)

Welcome = _reflection.GeneratedProtocolMessageType('Welcome', (_message.Message,), dict(
  DESCRIPTOR = _WELCOME,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Welcome)
  ))
_sym_db.RegisterMessage(Welcome)

Size = _reflection.GeneratedProtocolMessageType('Size', (_message.Message,), dict(
  DESCRIPTOR = _SIZE,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Size)
  ))
_sym_db.RegisterMessage(Size)

Pointf = _reflection.GeneratedProtocolMessageType('Pointf', (_message.Message,), dict(
  DESCRIPTOR = _POINTF,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Pointf)
  ))
_sym_db.RegisterMessage(Pointf)

Point = _reflection.GeneratedProtocolMessageType('Point', (_message.Message,), dict(
  DESCRIPTOR = _POINT,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Point)
  ))
_sym_db.RegisterMessage(Point)

Color = _reflection.GeneratedProtocolMessageType('Color', (_message.Message,), dict(
  DESCRIPTOR = _COLOR,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Color)
  ))
_sym_db.RegisterMessage(Color)

Client = _reflection.GeneratedProtocolMessageType('Client', (_message.Message,), dict(
  DESCRIPTOR = _CLIENT,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Client)
  ))
_sym_db.RegisterMessage(Client)

ClientInteraction = _reflection.GeneratedProtocolMessageType('ClientInteraction', (_message.Message,), dict(
  DESCRIPTOR = _CLIENTINTERACTION,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.ClientInteraction)
  ))
_sym_db.RegisterMessage(ClientInteraction)

Context = _reflection.GeneratedProtocolMessageType('Context', (_message.Message,), dict(
  DESCRIPTOR = _CONTEXT,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Context)
  ))
_sym_db.RegisterMessage(Context)

Invalidation = _reflection.GeneratedProtocolMessageType('Invalidation', (_message.Message,), dict(
  DESCRIPTOR = _INVALIDATION,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Invalidation)
  ))
_sym_db.RegisterMessage(Invalidation)

Topology = _reflection.GeneratedProtocolMessageType('Topology', (_message.Message,), dict(
  DESCRIPTOR = _TOPOLOGY,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Topology)
  ))
_sym_db.RegisterMessage(Topology)

Node = _reflection.GeneratedProtocolMessageType('Node', (_message.Message,), dict(
  DESCRIPTOR = _NODE,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Node)
  ))
_sym_db.RegisterMessage(Node)

Nodes = _reflection.GeneratedProtocolMessageType('Nodes', (_message.Message,), dict(
  DESCRIPTOR = _NODES,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Nodes)
  ))
_sym_db.RegisterMessage(Nodes)

NodeInContext = _reflection.GeneratedProtocolMessageType('NodeInContext', (_message.Message,), dict(
  DESCRIPTOR = _NODEINCONTEXT,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.NodeInContext)
  ))
_sym_db.RegisterMessage(NodeInContext)

Situation = _reflection.GeneratedProtocolMessageType('Situation', (_message.Message,), dict(
  DESCRIPTOR = _SITUATION,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Situation)
  ))
_sym_db.RegisterMessage(Situation)

Situations = _reflection.GeneratedProtocolMessageType('Situations', (_message.Message,), dict(
  DESCRIPTOR = _SITUATIONS,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Situations)
  ))
_sym_db.RegisterMessage(Situations)

SituationInContext = _reflection.GeneratedProtocolMessageType('SituationInContext', (_message.Message,), dict(
  DESCRIPTOR = _SITUATIONINCONTEXT,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.SituationInContext)
  ))
_sym_db.RegisterMessage(SituationInContext)

Mesh = _reflection.GeneratedProtocolMessageType('Mesh', (_message.Message,), dict(
  DESCRIPTOR = _MESH,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.Mesh)
  ))
_sym_db.RegisterMessage(Mesh)

MeshInContext = _reflection.GeneratedProtocolMessageType('MeshInContext', (_message.Message,), dict(
  DESCRIPTOR = _MESHINCONTEXT,
  __module__ = 'underworlds_pb2'
  # @@protoc_insertion_point(class_scope:underworlds.MeshInContext)
  ))
_sym_db.RegisterMessage(MeshInContext)


import grpc
from grpc.beta import implementations as beta_implementations
from grpc.beta import interfaces as beta_interfaces
from grpc.framework.common import cardinality
from grpc.framework.interfaces.face import utilities as face_utilities


class UnderworldsStub(object):

  def __init__(self, channel):
    """Constructor.

    Args:
      channel: A grpc.Channel.
    """
    self.helo = channel.unary_unary(
        '/underworlds.Underworlds/helo',
        request_serializer=Welcome.SerializeToString,
        response_deserializer=Client.FromString,
        )
    self.byebye = channel.unary_unary(
        '/underworlds.Underworlds/byebye',
        request_serializer=Client.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.uptime = channel.unary_unary(
        '/underworlds.Underworlds/uptime',
        request_serializer=Client.SerializeToString,
        response_deserializer=Time.FromString,
        )
    self.topology = channel.unary_unary(
        '/underworlds.Underworlds/topology',
        request_serializer=Client.SerializeToString,
        response_deserializer=Topology.FromString,
        )
    self.reset = channel.unary_unary(
        '/underworlds.Underworlds/reset',
        request_serializer=Client.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.getNodesLen = channel.unary_unary(
        '/underworlds.Underworlds/getNodesLen',
        request_serializer=Context.SerializeToString,
        response_deserializer=Size.FromString,
        )
    self.getNodesIds = channel.unary_unary(
        '/underworlds.Underworlds/getNodesIds',
        request_serializer=Context.SerializeToString,
        response_deserializer=Nodes.FromString,
        )
    self.getRootNode = channel.unary_unary(
        '/underworlds.Underworlds/getRootNode',
        request_serializer=Context.SerializeToString,
        response_deserializer=Node.FromString,
        )
    self.getNode = channel.unary_unary(
        '/underworlds.Underworlds/getNode',
        request_serializer=NodeInContext.SerializeToString,
        response_deserializer=Node.FromString,
        )
    self.updateNode = channel.unary_unary(
        '/underworlds.Underworlds/updateNode',
        request_serializer=NodeInContext.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.deleteNode = channel.unary_unary(
        '/underworlds.Underworlds/deleteNode',
        request_serializer=NodeInContext.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.getSituationsLen = channel.unary_unary(
        '/underworlds.Underworlds/getSituationsLen',
        request_serializer=Context.SerializeToString,
        response_deserializer=Size.FromString,
        )
    self.getSituationsIds = channel.unary_unary(
        '/underworlds.Underworlds/getSituationsIds',
        request_serializer=Context.SerializeToString,
        response_deserializer=Situations.FromString,
        )
    self.getSituation = channel.unary_unary(
        '/underworlds.Underworlds/getSituation',
        request_serializer=SituationInContext.SerializeToString,
        response_deserializer=Situation.FromString,
        )
    self.timelineOrigin = channel.unary_unary(
        '/underworlds.Underworlds/timelineOrigin',
        request_serializer=Context.SerializeToString,
        response_deserializer=Time.FromString,
        )
    self.event = channel.unary_unary(
        '/underworlds.Underworlds/event',
        request_serializer=SituationInContext.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.startSituation = channel.unary_unary(
        '/underworlds.Underworlds/startSituation',
        request_serializer=SituationInContext.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.endSituation = channel.unary_unary(
        '/underworlds.Underworlds/endSituation',
        request_serializer=SituationInContext.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.updateSituation = channel.unary_unary(
        '/underworlds.Underworlds/updateSituation',
        request_serializer=SituationInContext.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.deleteSituation = channel.unary_unary(
        '/underworlds.Underworlds/deleteSituation',
        request_serializer=SituationInContext.SerializeToString,
        response_deserializer=Empty.FromString,
        )
    self.hasMesh = channel.unary_unary(
        '/underworlds.Underworlds/hasMesh',
        request_serializer=MeshInContext.SerializeToString,
        response_deserializer=Bool.FromString,
        )
    self.getMesh = channel.unary_unary(
        '/underworlds.Underworlds/getMesh',
        request_serializer=MeshInContext.SerializeToString,
        response_deserializer=Mesh.FromString,
        )
    self.pushMesh = channel.unary_unary(
        '/underworlds.Underworlds/pushMesh',
        request_serializer=MeshInContext.SerializeToString,
        response_deserializer=Empty.FromString,
        )


class UnderworldsServicer(object):

  def helo(self, request, context):
    """GENERAL

    Establish the connection to the server, setting a human-friendly name for
    the client.
    The server returns a unique client ID that must be used in every subsequent
    request to the server.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def byebye(self, request, context):
    """Inform the server that the client is disconnecting.
    Before completing this call, the client must keep its invalidation
    server open and listening.
    After completing this call, the server should not attempt to connect to
    the client's invalidation server.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def uptime(self, request, context):
    """Returns the uptime of the server, in seconds
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def topology(self, request, context):
    """Returns the current topology of underworlds: the list of worlds and the
    list of clients + their interactions with the worlds
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def reset(self, request, context):
    """Hard reset of Underworlds: all the worlds are deleted.
    The existing mesh database is kept, however.
    This does not impact the list of known clients (ie, clients do not have to
    call 'helo' again).
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def getNodesLen(self, request, context):
    """NODES

    Returns the number of nodes in a given world.
    Accepts a context (client ID and world) and returns the number of existing nodes.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def getNodesIds(self, request, context):
    """Returns the list of node IDs present in the given world
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def getRootNode(self, request, context):
    """Returns the root node ID of the given world
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def getNode(self, request, context):
    """Returns a node from its ID in the given world.
    Note that only the node ID is used (and thus, required).
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def updateNode(self, request, context):
    """Updates (and broadcasts to all client) a node in a given world
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def deleteNode(self, request, context):
    """Deletes (and broadcasts to all client) a node in a given world
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def getSituationsLen(self, request, context):
    """TIMELINE

    Returns the number of situations in a given world.
    Accepts a context (client ID and world) and returns the number of
    existing situations.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def getSituationsIds(self, request, context):
    """Returns the list of situation IDs present in the given world
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def getSituation(self, request, context):
    """Returns a situation from its ID.
    Note that only the situation ID is used (and thus, required).
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def timelineOrigin(self, request, context):
    """Returns the timeline origin: time of the timeline creation
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def event(self, request, context):
    """Notifies the server that an event occured
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def startSituation(self, request, context):
    """Notifies the server that a specific situation has started
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def endSituation(self, request, context):
    """Notifies the server that a specific situation has ended
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def updateSituation(self, request, context):
    """Updates (and broadcasts to all client) a situation in a given world
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def deleteSituation(self, request, context):
    """Deletes (and broadcasts to all client) a node in a given world
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def hasMesh(self, request, context):
    """MESHES

    Returns whether the given mesh is already available on the server.
    Note that only the mesh ID is used.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def getMesh(self, request, context):
    """Returns a 3D mesh.
    Note that only the ID of the input mesh is used.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def pushMesh(self, request, context):
    """Sends a 3D mesh to the server.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')


def add_UnderworldsServicer_to_server(servicer, server):
  rpc_method_handlers = {
      'helo': grpc.unary_unary_rpc_method_handler(
          servicer.helo,
          request_deserializer=Welcome.FromString,
          response_serializer=Client.SerializeToString,
      ),
      'byebye': grpc.unary_unary_rpc_method_handler(
          servicer.byebye,
          request_deserializer=Client.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'uptime': grpc.unary_unary_rpc_method_handler(
          servicer.uptime,
          request_deserializer=Client.FromString,
          response_serializer=Time.SerializeToString,
      ),
      'topology': grpc.unary_unary_rpc_method_handler(
          servicer.topology,
          request_deserializer=Client.FromString,
          response_serializer=Topology.SerializeToString,
      ),
      'reset': grpc.unary_unary_rpc_method_handler(
          servicer.reset,
          request_deserializer=Client.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'getNodesLen': grpc.unary_unary_rpc_method_handler(
          servicer.getNodesLen,
          request_deserializer=Context.FromString,
          response_serializer=Size.SerializeToString,
      ),
      'getNodesIds': grpc.unary_unary_rpc_method_handler(
          servicer.getNodesIds,
          request_deserializer=Context.FromString,
          response_serializer=Nodes.SerializeToString,
      ),
      'getRootNode': grpc.unary_unary_rpc_method_handler(
          servicer.getRootNode,
          request_deserializer=Context.FromString,
          response_serializer=Node.SerializeToString,
      ),
      'getNode': grpc.unary_unary_rpc_method_handler(
          servicer.getNode,
          request_deserializer=NodeInContext.FromString,
          response_serializer=Node.SerializeToString,
      ),
      'updateNode': grpc.unary_unary_rpc_method_handler(
          servicer.updateNode,
          request_deserializer=NodeInContext.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'deleteNode': grpc.unary_unary_rpc_method_handler(
          servicer.deleteNode,
          request_deserializer=NodeInContext.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'getSituationsLen': grpc.unary_unary_rpc_method_handler(
          servicer.getSituationsLen,
          request_deserializer=Context.FromString,
          response_serializer=Size.SerializeToString,
      ),
      'getSituationsIds': grpc.unary_unary_rpc_method_handler(
          servicer.getSituationsIds,
          request_deserializer=Context.FromString,
          response_serializer=Situations.SerializeToString,
      ),
      'getSituation': grpc.unary_unary_rpc_method_handler(
          servicer.getSituation,
          request_deserializer=SituationInContext.FromString,
          response_serializer=Situation.SerializeToString,
      ),
      'timelineOrigin': grpc.unary_unary_rpc_method_handler(
          servicer.timelineOrigin,
          request_deserializer=Context.FromString,
          response_serializer=Time.SerializeToString,
      ),
      'event': grpc.unary_unary_rpc_method_handler(
          servicer.event,
          request_deserializer=SituationInContext.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'startSituation': grpc.unary_unary_rpc_method_handler(
          servicer.startSituation,
          request_deserializer=SituationInContext.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'endSituation': grpc.unary_unary_rpc_method_handler(
          servicer.endSituation,
          request_deserializer=SituationInContext.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'updateSituation': grpc.unary_unary_rpc_method_handler(
          servicer.updateSituation,
          request_deserializer=SituationInContext.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'deleteSituation': grpc.unary_unary_rpc_method_handler(
          servicer.deleteSituation,
          request_deserializer=SituationInContext.FromString,
          response_serializer=Empty.SerializeToString,
      ),
      'hasMesh': grpc.unary_unary_rpc_method_handler(
          servicer.hasMesh,
          request_deserializer=MeshInContext.FromString,
          response_serializer=Bool.SerializeToString,
      ),
      'getMesh': grpc.unary_unary_rpc_method_handler(
          servicer.getMesh,
          request_deserializer=MeshInContext.FromString,
          response_serializer=Mesh.SerializeToString,
      ),
      'pushMesh': grpc.unary_unary_rpc_method_handler(
          servicer.pushMesh,
          request_deserializer=MeshInContext.FromString,
          response_serializer=Empty.SerializeToString,
      ),
  }
  generic_handler = grpc.method_handlers_generic_handler(
      'underworlds.Underworlds', rpc_method_handlers)
  server.add_generic_rpc_handlers((generic_handler,))


class BetaUnderworldsServicer(object):
  def helo(self, request, context):
    """GENERAL

    Establish the connection to the server, setting a human-friendly name for
    the client.
    The server returns a unique client ID that must be used in every subsequent
    request to the server.
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def byebye(self, request, context):
    """Inform the server that the client is disconnecting.
    Before completing this call, the client must keep its invalidation
    server open and listening.
    After completing this call, the server should not attempt to connect to
    the client's invalidation server.
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def uptime(self, request, context):
    """Returns the uptime of the server, in seconds
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def topology(self, request, context):
    """Returns the current topology of underworlds: the list of worlds and the
    list of clients + their interactions with the worlds
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def reset(self, request, context):
    """Hard reset of Underworlds: all the worlds are deleted.
    The existing mesh database is kept, however.
    This does not impact the list of known clients (ie, clients do not have to
    call 'helo' again).
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def getNodesLen(self, request, context):
    """NODES

    Returns the number of nodes in a given world.
    Accepts a context (client ID and world) and returns the number of existing nodes.
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def getNodesIds(self, request, context):
    """Returns the list of node IDs present in the given world
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def getRootNode(self, request, context):
    """Returns the root node ID of the given world
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def getNode(self, request, context):
    """Returns a node from its ID in the given world.
    Note that only the node ID is used (and thus, required).
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def updateNode(self, request, context):
    """Updates (and broadcasts to all client) a node in a given world
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def deleteNode(self, request, context):
    """Deletes (and broadcasts to all client) a node in a given world
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def getSituationsLen(self, request, context):
    """TIMELINE

    Returns the number of situations in a given world.
    Accepts a context (client ID and world) and returns the number of
    existing situations.
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def getSituationsIds(self, request, context):
    """Returns the list of situation IDs present in the given world
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def getSituation(self, request, context):
    """Returns a situation from its ID.
    Note that only the situation ID is used (and thus, required).
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def timelineOrigin(self, request, context):
    """Returns the timeline origin: time of the timeline creation
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def event(self, request, context):
    """Notifies the server that an event occured
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def startSituation(self, request, context):
    """Notifies the server that a specific situation has started
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def endSituation(self, request, context):
    """Notifies the server that a specific situation has ended
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def updateSituation(self, request, context):
    """Updates (and broadcasts to all client) a situation in a given world
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def deleteSituation(self, request, context):
    """Deletes (and broadcasts to all client) a node in a given world
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def hasMesh(self, request, context):
    """MESHES

    Returns whether the given mesh is already available on the server.
    Note that only the mesh ID is used.
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def getMesh(self, request, context):
    """Returns a 3D mesh.
    Note that only the ID of the input mesh is used.
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  def pushMesh(self, request, context):
    """Sends a 3D mesh to the server.
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)


class BetaUnderworldsStub(object):
  def helo(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """GENERAL

    Establish the connection to the server, setting a human-friendly name for
    the client.
    The server returns a unique client ID that must be used in every subsequent
    request to the server.
    """
    raise NotImplementedError()
  helo.future = None
  def byebye(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Inform the server that the client is disconnecting.
    Before completing this call, the client must keep its invalidation
    server open and listening.
    After completing this call, the server should not attempt to connect to
    the client's invalidation server.
    """
    raise NotImplementedError()
  byebye.future = None
  def uptime(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns the uptime of the server, in seconds
    """
    raise NotImplementedError()
  uptime.future = None
  def topology(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns the current topology of underworlds: the list of worlds and the
    list of clients + their interactions with the worlds
    """
    raise NotImplementedError()
  topology.future = None
  def reset(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Hard reset of Underworlds: all the worlds are deleted.
    The existing mesh database is kept, however.
    This does not impact the list of known clients (ie, clients do not have to
    call 'helo' again).
    """
    raise NotImplementedError()
  reset.future = None
  def getNodesLen(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """NODES

    Returns the number of nodes in a given world.
    Accepts a context (client ID and world) and returns the number of existing nodes.
    """
    raise NotImplementedError()
  getNodesLen.future = None
  def getNodesIds(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns the list of node IDs present in the given world
    """
    raise NotImplementedError()
  getNodesIds.future = None
  def getRootNode(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns the root node ID of the given world
    """
    raise NotImplementedError()
  getRootNode.future = None
  def getNode(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns a node from its ID in the given world.
    Note that only the node ID is used (and thus, required).
    """
    raise NotImplementedError()
  getNode.future = None
  def updateNode(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Updates (and broadcasts to all client) a node in a given world
    """
    raise NotImplementedError()
  updateNode.future = None
  def deleteNode(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Deletes (and broadcasts to all client) a node in a given world
    """
    raise NotImplementedError()
  deleteNode.future = None
  def getSituationsLen(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """TIMELINE

    Returns the number of situations in a given world.
    Accepts a context (client ID and world) and returns the number of
    existing situations.
    """
    raise NotImplementedError()
  getSituationsLen.future = None
  def getSituationsIds(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns the list of situation IDs present in the given world
    """
    raise NotImplementedError()
  getSituationsIds.future = None
  def getSituation(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns a situation from its ID.
    Note that only the situation ID is used (and thus, required).
    """
    raise NotImplementedError()
  getSituation.future = None
  def timelineOrigin(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns the timeline origin: time of the timeline creation
    """
    raise NotImplementedError()
  timelineOrigin.future = None
  def event(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Notifies the server that an event occured
    """
    raise NotImplementedError()
  event.future = None
  def startSituation(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Notifies the server that a specific situation has started
    """
    raise NotImplementedError()
  startSituation.future = None
  def endSituation(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Notifies the server that a specific situation has ended
    """
    raise NotImplementedError()
  endSituation.future = None
  def updateSituation(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Updates (and broadcasts to all client) a situation in a given world
    """
    raise NotImplementedError()
  updateSituation.future = None
  def deleteSituation(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Deletes (and broadcasts to all client) a node in a given world
    """
    raise NotImplementedError()
  deleteSituation.future = None
  def hasMesh(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """MESHES

    Returns whether the given mesh is already available on the server.
    Note that only the mesh ID is used.
    """
    raise NotImplementedError()
  hasMesh.future = None
  def getMesh(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Returns a 3D mesh.
    Note that only the ID of the input mesh is used.
    """
    raise NotImplementedError()
  getMesh.future = None
  def pushMesh(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Sends a 3D mesh to the server.
    """
    raise NotImplementedError()
  pushMesh.future = None


def beta_create_Underworlds_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
  request_deserializers = {
    ('underworlds.Underworlds', 'byebye'): Client.FromString,
    ('underworlds.Underworlds', 'deleteNode'): NodeInContext.FromString,
    ('underworlds.Underworlds', 'deleteSituation'): SituationInContext.FromString,
    ('underworlds.Underworlds', 'endSituation'): SituationInContext.FromString,
    ('underworlds.Underworlds', 'event'): SituationInContext.FromString,
    ('underworlds.Underworlds', 'getMesh'): MeshInContext.FromString,
    ('underworlds.Underworlds', 'getNode'): NodeInContext.FromString,
    ('underworlds.Underworlds', 'getNodesIds'): Context.FromString,
    ('underworlds.Underworlds', 'getNodesLen'): Context.FromString,
    ('underworlds.Underworlds', 'getRootNode'): Context.FromString,
    ('underworlds.Underworlds', 'getSituation'): SituationInContext.FromString,
    ('underworlds.Underworlds', 'getSituationsIds'): Context.FromString,
    ('underworlds.Underworlds', 'getSituationsLen'): Context.FromString,
    ('underworlds.Underworlds', 'hasMesh'): MeshInContext.FromString,
    ('underworlds.Underworlds', 'helo'): Welcome.FromString,
    ('underworlds.Underworlds', 'pushMesh'): MeshInContext.FromString,
    ('underworlds.Underworlds', 'reset'): Client.FromString,
    ('underworlds.Underworlds', 'startSituation'): SituationInContext.FromString,
    ('underworlds.Underworlds', 'timelineOrigin'): Context.FromString,
    ('underworlds.Underworlds', 'topology'): Client.FromString,
    ('underworlds.Underworlds', 'updateNode'): NodeInContext.FromString,
    ('underworlds.Underworlds', 'updateSituation'): SituationInContext.FromString,
    ('underworlds.Underworlds', 'uptime'): Client.FromString,
  }
  response_serializers = {
    ('underworlds.Underworlds', 'byebye'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'deleteNode'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'deleteSituation'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'endSituation'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'event'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'getMesh'): Mesh.SerializeToString,
    ('underworlds.Underworlds', 'getNode'): Node.SerializeToString,
    ('underworlds.Underworlds', 'getNodesIds'): Nodes.SerializeToString,
    ('underworlds.Underworlds', 'getNodesLen'): Size.SerializeToString,
    ('underworlds.Underworlds', 'getRootNode'): Node.SerializeToString,
    ('underworlds.Underworlds', 'getSituation'): Situation.SerializeToString,
    ('underworlds.Underworlds', 'getSituationsIds'): Situations.SerializeToString,
    ('underworlds.Underworlds', 'getSituationsLen'): Size.SerializeToString,
    ('underworlds.Underworlds', 'hasMesh'): Bool.SerializeToString,
    ('underworlds.Underworlds', 'helo'): Client.SerializeToString,
    ('underworlds.Underworlds', 'pushMesh'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'reset'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'startSituation'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'timelineOrigin'): Time.SerializeToString,
    ('underworlds.Underworlds', 'topology'): Topology.SerializeToString,
    ('underworlds.Underworlds', 'updateNode'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'updateSituation'): Empty.SerializeToString,
    ('underworlds.Underworlds', 'uptime'): Time.SerializeToString,
  }
  method_implementations = {
    ('underworlds.Underworlds', 'byebye'): face_utilities.unary_unary_inline(servicer.byebye),
    ('underworlds.Underworlds', 'deleteNode'): face_utilities.unary_unary_inline(servicer.deleteNode),
    ('underworlds.Underworlds', 'deleteSituation'): face_utilities.unary_unary_inline(servicer.deleteSituation),
    ('underworlds.Underworlds', 'endSituation'): face_utilities.unary_unary_inline(servicer.endSituation),
    ('underworlds.Underworlds', 'event'): face_utilities.unary_unary_inline(servicer.event),
    ('underworlds.Underworlds', 'getMesh'): face_utilities.unary_unary_inline(servicer.getMesh),
    ('underworlds.Underworlds', 'getNode'): face_utilities.unary_unary_inline(servicer.getNode),
    ('underworlds.Underworlds', 'getNodesIds'): face_utilities.unary_unary_inline(servicer.getNodesIds),
    ('underworlds.Underworlds', 'getNodesLen'): face_utilities.unary_unary_inline(servicer.getNodesLen),
    ('underworlds.Underworlds', 'getRootNode'): face_utilities.unary_unary_inline(servicer.getRootNode),
    ('underworlds.Underworlds', 'getSituation'): face_utilities.unary_unary_inline(servicer.getSituation),
    ('underworlds.Underworlds', 'getSituationsIds'): face_utilities.unary_unary_inline(servicer.getSituationsIds),
    ('underworlds.Underworlds', 'getSituationsLen'): face_utilities.unary_unary_inline(servicer.getSituationsLen),
    ('underworlds.Underworlds', 'hasMesh'): face_utilities.unary_unary_inline(servicer.hasMesh),
    ('underworlds.Underworlds', 'helo'): face_utilities.unary_unary_inline(servicer.helo),
    ('underworlds.Underworlds', 'pushMesh'): face_utilities.unary_unary_inline(servicer.pushMesh),
    ('underworlds.Underworlds', 'reset'): face_utilities.unary_unary_inline(servicer.reset),
    ('underworlds.Underworlds', 'startSituation'): face_utilities.unary_unary_inline(servicer.startSituation),
    ('underworlds.Underworlds', 'timelineOrigin'): face_utilities.unary_unary_inline(servicer.timelineOrigin),
    ('underworlds.Underworlds', 'topology'): face_utilities.unary_unary_inline(servicer.topology),
    ('underworlds.Underworlds', 'updateNode'): face_utilities.unary_unary_inline(servicer.updateNode),
    ('underworlds.Underworlds', 'updateSituation'): face_utilities.unary_unary_inline(servicer.updateSituation),
    ('underworlds.Underworlds', 'uptime'): face_utilities.unary_unary_inline(servicer.uptime),
  }
  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
  return beta_implementations.server(method_implementations, options=server_options)


def beta_create_Underworlds_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
  request_serializers = {
    ('underworlds.Underworlds', 'byebye'): Client.SerializeToString,
    ('underworlds.Underworlds', 'deleteNode'): NodeInContext.SerializeToString,
    ('underworlds.Underworlds', 'deleteSituation'): SituationInContext.SerializeToString,
    ('underworlds.Underworlds', 'endSituation'): SituationInContext.SerializeToString,
    ('underworlds.Underworlds', 'event'): SituationInContext.SerializeToString,
    ('underworlds.Underworlds', 'getMesh'): MeshInContext.SerializeToString,
    ('underworlds.Underworlds', 'getNode'): NodeInContext.SerializeToString,
    ('underworlds.Underworlds', 'getNodesIds'): Context.SerializeToString,
    ('underworlds.Underworlds', 'getNodesLen'): Context.SerializeToString,
    ('underworlds.Underworlds', 'getRootNode'): Context.SerializeToString,
    ('underworlds.Underworlds', 'getSituation'): SituationInContext.SerializeToString,
    ('underworlds.Underworlds', 'getSituationsIds'): Context.SerializeToString,
    ('underworlds.Underworlds', 'getSituationsLen'): Context.SerializeToString,
    ('underworlds.Underworlds', 'hasMesh'): MeshInContext.SerializeToString,
    ('underworlds.Underworlds', 'helo'): Welcome.SerializeToString,
    ('underworlds.Underworlds', 'pushMesh'): MeshInContext.SerializeToString,
    ('underworlds.Underworlds', 'reset'): Client.SerializeToString,
    ('underworlds.Underworlds', 'startSituation'): SituationInContext.SerializeToString,
    ('underworlds.Underworlds', 'timelineOrigin'): Context.SerializeToString,
    ('underworlds.Underworlds', 'topology'): Client.SerializeToString,
    ('underworlds.Underworlds', 'updateNode'): NodeInContext.SerializeToString,
    ('underworlds.Underworlds', 'updateSituation'): SituationInContext.SerializeToString,
    ('underworlds.Underworlds', 'uptime'): Client.SerializeToString,
  }
  response_deserializers = {
    ('underworlds.Underworlds', 'byebye'): Empty.FromString,
    ('underworlds.Underworlds', 'deleteNode'): Empty.FromString,
    ('underworlds.Underworlds', 'deleteSituation'): Empty.FromString,
    ('underworlds.Underworlds', 'endSituation'): Empty.FromString,
    ('underworlds.Underworlds', 'event'): Empty.FromString,
    ('underworlds.Underworlds', 'getMesh'): Mesh.FromString,
    ('underworlds.Underworlds', 'getNode'): Node.FromString,
    ('underworlds.Underworlds', 'getNodesIds'): Nodes.FromString,
    ('underworlds.Underworlds', 'getNodesLen'): Size.FromString,
    ('underworlds.Underworlds', 'getRootNode'): Node.FromString,
    ('underworlds.Underworlds', 'getSituation'): Situation.FromString,
    ('underworlds.Underworlds', 'getSituationsIds'): Situations.FromString,
    ('underworlds.Underworlds', 'getSituationsLen'): Size.FromString,
    ('underworlds.Underworlds', 'hasMesh'): Bool.FromString,
    ('underworlds.Underworlds', 'helo'): Client.FromString,
    ('underworlds.Underworlds', 'pushMesh'): Empty.FromString,
    ('underworlds.Underworlds', 'reset'): Empty.FromString,
    ('underworlds.Underworlds', 'startSituation'): Empty.FromString,
    ('underworlds.Underworlds', 'timelineOrigin'): Time.FromString,
    ('underworlds.Underworlds', 'topology'): Topology.FromString,
    ('underworlds.Underworlds', 'updateNode'): Empty.FromString,
    ('underworlds.Underworlds', 'updateSituation'): Empty.FromString,
    ('underworlds.Underworlds', 'uptime'): Time.FromString,
  }
  cardinalities = {
    'byebye': cardinality.Cardinality.UNARY_UNARY,
    'deleteNode': cardinality.Cardinality.UNARY_UNARY,
    'deleteSituation': cardinality.Cardinality.UNARY_UNARY,
    'endSituation': cardinality.Cardinality.UNARY_UNARY,
    'event': cardinality.Cardinality.UNARY_UNARY,
    'getMesh': cardinality.Cardinality.UNARY_UNARY,
    'getNode': cardinality.Cardinality.UNARY_UNARY,
    'getNodesIds': cardinality.Cardinality.UNARY_UNARY,
    'getNodesLen': cardinality.Cardinality.UNARY_UNARY,
    'getRootNode': cardinality.Cardinality.UNARY_UNARY,
    'getSituation': cardinality.Cardinality.UNARY_UNARY,
    'getSituationsIds': cardinality.Cardinality.UNARY_UNARY,
    'getSituationsLen': cardinality.Cardinality.UNARY_UNARY,
    'hasMesh': cardinality.Cardinality.UNARY_UNARY,
    'helo': cardinality.Cardinality.UNARY_UNARY,
    'pushMesh': cardinality.Cardinality.UNARY_UNARY,
    'reset': cardinality.Cardinality.UNARY_UNARY,
    'startSituation': cardinality.Cardinality.UNARY_UNARY,
    'timelineOrigin': cardinality.Cardinality.UNARY_UNARY,
    'topology': cardinality.Cardinality.UNARY_UNARY,
    'updateNode': cardinality.Cardinality.UNARY_UNARY,
    'updateSituation': cardinality.Cardinality.UNARY_UNARY,
    'uptime': cardinality.Cardinality.UNARY_UNARY,
  }
  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
  return beta_implementations.dynamic_stub(channel, 'underworlds.Underworlds', cardinalities, options=stub_options)


class UnderworldsInvalidationStub(object):

  def __init__(self, channel):
    """Constructor.

    Args:
      channel: A grpc.Channel.
    """
    self.emitInvalidation = channel.unary_unary(
        '/underworlds.UnderworldsInvalidation/emitInvalidation',
        request_serializer=Invalidation.SerializeToString,
        response_deserializer=Empty.FromString,
        )


class UnderworldsInvalidationServicer(object):

  def emitInvalidation(self, request, context):
    """Sends (to the client's invalidation server) 'invalidated'
    nodes/situations that need to be updated.  Invalidated nodes/situations
    can be new nodes/situations, nodes/situations that have changed, or
    nodes/situations that have been removed (see Invalidation.type).
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')


def add_UnderworldsInvalidationServicer_to_server(servicer, server):
  rpc_method_handlers = {
      'emitInvalidation': grpc.unary_unary_rpc_method_handler(
          servicer.emitInvalidation,
          request_deserializer=Invalidation.FromString,
          response_serializer=Empty.SerializeToString,
      ),
  }
  generic_handler = grpc.method_handlers_generic_handler(
      'underworlds.UnderworldsInvalidation', rpc_method_handlers)
  server.add_generic_rpc_handlers((generic_handler,))


class BetaUnderworldsInvalidationServicer(object):
  def emitInvalidation(self, request, context):
    """Sends (to the client's invalidation server) 'invalidated'
    nodes/situations that need to be updated.  Invalidated nodes/situations
    can be new nodes/situations, nodes/situations that have changed, or
    nodes/situations that have been removed (see Invalidation.type).
    """
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)


class BetaUnderworldsInvalidationStub(object):
  def emitInvalidation(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
    """Sends (to the client's invalidation server) 'invalidated'
    nodes/situations that need to be updated.  Invalidated nodes/situations
    can be new nodes/situations, nodes/situations that have changed, or
    nodes/situations that have been removed (see Invalidation.type).
    """
    raise NotImplementedError()
  emitInvalidation.future = None


def beta_create_UnderworldsInvalidation_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
  request_deserializers = {
    ('underworlds.UnderworldsInvalidation', 'emitInvalidation'): Invalidation.FromString,
  }
  response_serializers = {
    ('underworlds.UnderworldsInvalidation', 'emitInvalidation'): Empty.SerializeToString,
  }
  method_implementations = {
    ('underworlds.UnderworldsInvalidation', 'emitInvalidation'): face_utilities.unary_unary_inline(servicer.emitInvalidation),
  }
  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
  return beta_implementations.server(method_implementations, options=server_options)


def beta_create_UnderworldsInvalidation_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
  request_serializers = {
    ('underworlds.UnderworldsInvalidation', 'emitInvalidation'): Invalidation.SerializeToString,
  }
  response_deserializers = {
    ('underworlds.UnderworldsInvalidation', 'emitInvalidation'): Empty.FromString,
  }
  cardinalities = {
    'emitInvalidation': cardinality.Cardinality.UNARY_UNARY,
  }
  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
  return beta_implementations.dynamic_stub(channel, 'underworlds.UnderworldsInvalidation', cardinalities, options=stub_options)
# @@protoc_insertion_point(module_scope)
