feat(rcf): improve init scene
This commit is contained in:
@ -163,7 +163,6 @@ def to_bpy(store_item):
|
|||||||
if value_type == 'Vector' or 'Euler':
|
if value_type == 'Vector' or 'Euler':
|
||||||
value_casted = mathutils.Vector(
|
value_casted = mathutils.Vector(
|
||||||
(store_value[0], store_value[1], store_value[2]))
|
(store_value[0], store_value[1], store_value[2]))
|
||||||
|
|
||||||
|
|
||||||
return value_casted
|
return value_casted
|
||||||
|
|
||||||
@ -218,13 +217,14 @@ def init_scene():
|
|||||||
for object in bpy.context.scene.objects:
|
for object in bpy.context.scene.objects:
|
||||||
for attr in dir(object):
|
for attr in dir(object):
|
||||||
try:
|
try:
|
||||||
key = "objects/{}/{}".format(object.name,attr)
|
key = "objects/{}/{}".format(object.name, attr)
|
||||||
value_type, value = from_bpy(getattr(object,attr))
|
value_type, value = from_bpy(getattr(object, attr))
|
||||||
|
|
||||||
client.push_update(key, value_type, value)
|
client.push_update(key, value_type, value)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def update_scene(msg):
|
def update_scene(msg):
|
||||||
global client
|
global client
|
||||||
|
|
||||||
@ -261,6 +261,9 @@ def update_ui(msg):
|
|||||||
recv_callbacks = [update_scene, update_ui]
|
recv_callbacks = [update_scene, update_ui]
|
||||||
post_init_callbacks = [refresh_window]
|
post_init_callbacks = [refresh_window]
|
||||||
|
|
||||||
|
# Catch operator execution
|
||||||
|
#C.window_manager.operators['MESH_OT_primitive_plane_add'].bl_idname
|
||||||
|
|
||||||
|
|
||||||
class session_join(bpy.types.Operator):
|
class session_join(bpy.types.Operator):
|
||||||
bl_idname = "session.join"
|
bl_idname = "session.join"
|
||||||
@ -369,7 +372,7 @@ class session_create(bpy.types.Operator):
|
|||||||
|
|
||||||
bpy.ops.session.join()
|
bpy.ops.session.join()
|
||||||
|
|
||||||
init_scene()
|
# init_scene()
|
||||||
|
|
||||||
bpy.app.timers.register(observer)
|
bpy.app.timers.register(observer)
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
@ -568,7 +571,6 @@ class session_draw_clients(bpy.types.Operator):
|
|||||||
session = context.scene.session_settings
|
session = context.scene.session_settings
|
||||||
|
|
||||||
if client:
|
if client:
|
||||||
|
|
||||||
# Local view update
|
# Local view update
|
||||||
current_coords = get_client_view_rect()
|
current_coords = get_client_view_rect()
|
||||||
if current_coords != self.coords:
|
if current_coords != self.coords:
|
||||||
@ -627,7 +629,7 @@ class session_snapview(bpy.types.Operator):
|
|||||||
|
|
||||||
area, region, rv3d = view3d_find()
|
area, region, rv3d = view3d_find()
|
||||||
|
|
||||||
for k,v in client.property_map.items():
|
for k, v in client.property_map.items():
|
||||||
if v.mtype == 'client' and v.id.decode() == self.target_client:
|
if v.mtype == 'client' and v.id.decode() == self.target_client:
|
||||||
rv3d.view_location = v.body[1]
|
rv3d.view_location = v.body[1]
|
||||||
rv3d.view_distance = 10.0
|
rv3d.view_distance = 10.0
|
||||||
@ -636,6 +638,8 @@ class session_snapview(bpy.types.Operator):
|
|||||||
return {"CANCELLED"}
|
return {"CANCELLED"}
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
# TODO: Rename to match official blender convention
|
# TODO: Rename to match official blender convention
|
||||||
classes = (
|
classes = (
|
||||||
session_join,
|
session_join,
|
||||||
|
53
net_ui.py
53
net_ui.py
@ -19,11 +19,11 @@ class SessionSettingsPanel(bpy.types.Panel):
|
|||||||
# self.layout.label(text="",icon='HIDE_OFF')
|
# self.layout.label(text="",icon='HIDE_OFF')
|
||||||
# else:
|
# else:
|
||||||
# self.layout.label(text="",icon='HIDE_ON')
|
# self.layout.label(text="",icon='HIDE_ON')
|
||||||
# self.layout.label(text="Offline")
|
# self.layout.label(text="Offline")
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
net_settings = context.scene.session_settings
|
net_settings = context.scene.session_settings
|
||||||
scene = context.scene
|
scene = context.scene
|
||||||
# Create a simple row.
|
# Create a simple row.
|
||||||
@ -31,16 +31,15 @@ class SessionSettingsPanel(bpy.types.Panel):
|
|||||||
|
|
||||||
if net_operators.client:
|
if net_operators.client:
|
||||||
row.label(text="Net frequency:")
|
row.label(text="Net frequency:")
|
||||||
row.prop(net_settings,"update_frequency",text="")
|
row.prop(net_settings, "update_frequency", text="")
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
|
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("session.stop", text="exit session")
|
row.operator("session.stop", icon='QUIT', text="Exit")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.prop(scene.session_settings,"username",text="username:")
|
row.prop(scene.session_settings, "username", text="username:")
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("session.join")
|
row.operator("session.join")
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
@ -48,6 +47,7 @@ class SessionSettingsPanel(bpy.types.Panel):
|
|||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
|
|
||||||
|
|
||||||
class SessionUsersPanel(bpy.types.Panel):
|
class SessionUsersPanel(bpy.types.Panel):
|
||||||
"""Creates a Panel in the scene context of the properties editor"""
|
"""Creates a Panel in the scene context of the properties editor"""
|
||||||
bl_label = "NET users"
|
bl_label = "NET users"
|
||||||
@ -62,15 +62,15 @@ class SessionUsersPanel(bpy.types.Panel):
|
|||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
net_settings = context.scene.session_settings
|
net_settings = context.scene.session_settings
|
||||||
scene = context.scene
|
scene = context.scene
|
||||||
# Create a simple row.
|
# Create a simple row.
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
|
|
||||||
if net_operators.client:
|
if net_operators.client:
|
||||||
if len(net_operators.client.property_map) > 0:
|
if len(net_operators.client.property_map) > 0:
|
||||||
for key,values in net_operators.client.property_map.items():
|
for key, values in net_operators.client.property_map.items():
|
||||||
if 'client' in key:
|
if 'client' in key:
|
||||||
info = ""
|
info = ""
|
||||||
item_box = row.box()
|
item_box = row.box()
|
||||||
@ -79,17 +79,18 @@ class SessionUsersPanel(bpy.types.Panel):
|
|||||||
if values.id == net_operators.client.id:
|
if values.id == net_operators.client.id:
|
||||||
info = "(self)"
|
info = "(self)"
|
||||||
# detail_item_box = item_box.row()
|
# detail_item_box = item_box.row()
|
||||||
detail_item_box.label(text="{} {}".format(values.id.decode(),info))
|
detail_item_box.label(
|
||||||
|
text="{} {}".format(values.id.decode(), info))
|
||||||
|
|
||||||
if net_operators.client.id.decode() not in key:
|
if net_operators.client.id.decode() not in key:
|
||||||
detail_item_box.operator("session.snapview",text="",icon='VIEW_CAMERA').target_client = values.id.decode()
|
detail_item_box.operator(
|
||||||
|
"session.snapview", text="", icon='VIEW_CAMERA').target_client = values.id.decode()
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
else:
|
else:
|
||||||
row.label(text="Empty")
|
row.label(text="Empty")
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SessionPropertiesPanel(bpy.types.Panel):
|
class SessionPropertiesPanel(bpy.types.Panel):
|
||||||
"""Creates a Panel in the scene context of the properties editor"""
|
"""Creates a Panel in the scene context of the properties editor"""
|
||||||
@ -101,11 +102,11 @@ class SessionPropertiesPanel(bpy.types.Panel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
return net_operators.client
|
return net_operators.client
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
net_settings = context.scene.session_settings
|
net_settings = context.scene.session_settings
|
||||||
scene = context.scene
|
scene = context.scene
|
||||||
# Create a simple row.
|
# Create a simple row.
|
||||||
@ -113,21 +114,25 @@ class SessionPropertiesPanel(bpy.types.Panel):
|
|||||||
|
|
||||||
if net_operators.client:
|
if net_operators.client:
|
||||||
row = layout.row(align=True)
|
row = layout.row(align=True)
|
||||||
row.prop(net_settings,"buffer", text="")
|
row.prop(net_settings, "buffer", text="")
|
||||||
row.operator("session.add_prop", text="",icon="ADD").property_path = net_settings.buffer
|
row.operator("session.add_prop", text="",
|
||||||
|
icon="ADD").property_path = net_settings.buffer
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
# Property area
|
# Property area
|
||||||
area_msg = row.box()
|
area_msg = row.box()
|
||||||
if len(net_operators.client.property_map) > 0:
|
if len(net_operators.client.property_map) > 0:
|
||||||
for key,values in net_operators.client.property_map.items():
|
for key, values in net_operators.client.property_map.items():
|
||||||
item_box = area_msg.box()
|
item_box = area_msg.box()
|
||||||
detail_item_box = item_box.row()
|
detail_item_box = item_box.row()
|
||||||
# detail_item_box = item_box.row()
|
# detail_item_box = item_box.row()
|
||||||
detail_item_box.label(text="{} ({}) {} ".format(key, values.mtype, values.id.decode()))
|
detail_item_box.label(text="{} ({}) {} ".format(
|
||||||
detail_item_box.operator("session.remove_prop",text="",icon="X").property_path = key
|
key, values.mtype, values.id.decode()))
|
||||||
|
detail_item_box.operator(
|
||||||
|
"session.remove_prop", text="", icon="X").property_path = key
|
||||||
else:
|
else:
|
||||||
area_msg.label(text="Empty")
|
area_msg.label(text="Empty")
|
||||||
|
|
||||||
|
|
||||||
classes = (
|
classes = (
|
||||||
SessionSettingsPanel,
|
SessionSettingsPanel,
|
||||||
SessionUsersPanel,
|
SessionUsersPanel,
|
||||||
@ -138,4 +143,4 @@ classes = (
|
|||||||
register, unregister = bpy.utils.register_classes_factory(classes)
|
register, unregister = bpy.utils.register_classes_factory(classes)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
register()
|
register()
|
||||||
|
Reference in New Issue
Block a user