feat(rcf): ui improvment
feat(rcf): manual live refresh rate update
This commit is contained in:
@ -150,7 +150,7 @@ def observer():
|
||||
client.push_update(key,value_type,value)
|
||||
except:
|
||||
pass
|
||||
return 0.016
|
||||
return bpy.context.scene.session_settings.update_frequency
|
||||
|
||||
|
||||
# CLIENT-SERVER
|
||||
@ -216,11 +216,12 @@ class session_join(bpy.types.Operator):
|
||||
bpy.ops.asyncio.loop()
|
||||
bpy.app.timers.register(observer)
|
||||
|
||||
net_settings.is_running = True
|
||||
return {"FINISHED"}
|
||||
|
||||
class session_send(bpy.types.Operator):
|
||||
bl_idname = "session.send"
|
||||
bl_label = "send"
|
||||
class session_add_property(bpy.types.Operator):
|
||||
bl_idname = "session.add_prop"
|
||||
bl_label = "add"
|
||||
bl_description = "broadcast a property to connected clients"
|
||||
bl_options = {"REGISTER"}
|
||||
|
||||
@ -243,6 +244,28 @@ class session_send(bpy.types.Operator):
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
class session_remove_property(bpy.types.Operator):
|
||||
bl_idname = "session.remove_prop"
|
||||
bl_label = "remove"
|
||||
bl_description = "broadcast a property to connected clients"
|
||||
bl_options = {"REGISTER"}
|
||||
|
||||
property_path: bpy.props.StringProperty(default="None")
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return True
|
||||
|
||||
def execute(self, context):
|
||||
global client
|
||||
|
||||
try:
|
||||
del client.property_map[self.property_path]
|
||||
|
||||
return {"FINISHED"}
|
||||
except:
|
||||
return {"CANCELED"}
|
||||
|
||||
class session_create(bpy.types.Operator):
|
||||
bl_idname = "session.create"
|
||||
bl_label = "create"
|
||||
@ -257,21 +280,11 @@ class session_create(bpy.types.Operator):
|
||||
global server
|
||||
global client
|
||||
|
||||
# net_settings = context.scene.session_settings
|
||||
|
||||
# if net_settings.username == "DefaultUser":
|
||||
# net_settings.username = "{}_{}".format(net_settings.username,randomStringDigits())
|
||||
|
||||
# username = str(context.scene.session_settings.username)
|
||||
|
||||
server = net_components.Server()
|
||||
time.sleep(0.1)
|
||||
|
||||
bpy.ops.session.join()
|
||||
# client = net_components.Client(id=username,on_recv=recv_callbacks,on_post_init=post_init_callbacks)
|
||||
|
||||
|
||||
bpy.ops.asyncio.loop()
|
||||
bpy.app.timers.register(observer)
|
||||
return {"FINISHED"}
|
||||
|
||||
@ -290,6 +303,8 @@ class session_stop(bpy.types.Operator):
|
||||
global server
|
||||
global client
|
||||
|
||||
net_settings = context.scene.session_settings
|
||||
|
||||
if server :
|
||||
server.stop()
|
||||
del server
|
||||
@ -299,6 +314,9 @@ class session_stop(bpy.types.Operator):
|
||||
del client
|
||||
client = None
|
||||
bpy.ops.asyncio.stop()
|
||||
|
||||
bpy.app.timers.unregister(observer)
|
||||
net_settings.is_running = False
|
||||
else:
|
||||
logger.debug("No server/client running.")
|
||||
|
||||
@ -310,14 +328,18 @@ class session_settings(bpy.types.PropertyGroup):
|
||||
ip = bpy.props.StringProperty(name="localhost")
|
||||
port = bpy.props.IntProperty(name="5555")
|
||||
buffer = bpy.props.StringProperty(name="None")
|
||||
is_running = bpy.props.BoolProperty(name="is_running",default=False)
|
||||
update_frequency = bpy.props.FloatProperty(name="update_frequency", default=0.016)
|
||||
|
||||
|
||||
# TODO: Rename to match official blender convention
|
||||
classes = (
|
||||
session_join,
|
||||
session_send,
|
||||
session_add_property,
|
||||
session_stop,
|
||||
session_create,
|
||||
session_settings,
|
||||
session_remove_property,
|
||||
)
|
||||
|
||||
|
||||
@ -328,8 +350,6 @@ def register():
|
||||
|
||||
bpy.types.Scene.session_settings = bpy.props.PointerProperty(type=session_settings)
|
||||
|
||||
# bpy.app.handlers.depsgraph_update_post.append(observer)
|
||||
|
||||
def unregister():
|
||||
from bpy.utils import unregister_class
|
||||
for cls in reversed(classes):
|
||||
|
37
net_ui.py
37
net_ui.py
@ -4,41 +4,53 @@ from . import net_operators
|
||||
|
||||
class SessionPanel(bpy.types.Panel):
|
||||
"""Creates a Panel in the scene context of the properties editor"""
|
||||
bl_label = "RFC Session"
|
||||
bl_label = "bl network"
|
||||
bl_idname = "SCENE_PT_layout"
|
||||
bl_space_type = 'PROPERTIES'
|
||||
bl_region_type = 'WINDOW'
|
||||
bl_context = "scene"
|
||||
|
||||
# def draw_header(self, context):
|
||||
# self.layout.prop(context.scene.session_settings, "username", text="")
|
||||
def draw_header(self, context):
|
||||
net_settings = context.scene.session_settings
|
||||
|
||||
if net_settings.is_running:
|
||||
self.layout.label(text="",icon='HIDE_OFF')
|
||||
else:
|
||||
self.layout.label(text="",icon='HIDE_ON')
|
||||
# self.layout.label(text="Offline")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
net_settings = context.scene.session_settings
|
||||
scene = context.scene
|
||||
# Create a simple row.
|
||||
row = layout.row()
|
||||
|
||||
if net_operators.client:
|
||||
row.operator("session.stop")
|
||||
row = layout.row()
|
||||
|
||||
row.label(text="Net frequency:")
|
||||
row.prop(net_settings,"update_frequency",text="")
|
||||
row = layout.row(align=True)
|
||||
|
||||
row.prop(scene.session_settings,"buffer", text="")
|
||||
row.operator("session.send").property_path = scene.session_settings.buffer
|
||||
row.prop(net_settings,"buffer", text="")
|
||||
row.operator("session.add_prop", text="",icon="ADD").property_path = net_settings.buffer
|
||||
row = layout.row()
|
||||
# Debug area
|
||||
|
||||
row = layout.row()
|
||||
row = layout.row()
|
||||
area_msg = row.box()
|
||||
if len(net_operators.client.property_map) > 0:
|
||||
for key,values in net_operators.client.property_map.items():
|
||||
area_msg.label(text="{} ({}) - ".format(key, values.mtype, values.id.decode()))
|
||||
item_box = area_msg.box()
|
||||
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.operator("session.remove_prop",text="",icon="X").property_path = key
|
||||
else:
|
||||
area_msg.label(text="Empty")
|
||||
|
||||
row = layout.row()
|
||||
row.operator("session.stop")
|
||||
|
||||
else:
|
||||
row = layout.row()
|
||||
row.prop(scene.session_settings,"username",text="")
|
||||
@ -46,9 +58,6 @@ class SessionPanel(bpy.types.Panel):
|
||||
row.operator("session.join")
|
||||
row.operator("session.create")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
classes = (
|
||||
SessionPanel,
|
||||
|
Reference in New Issue
Block a user