Browse Source

new ~ud support

Zachary Pavlov 18 years ago
parent
commit
396c40dcb0

+ 3 - 0
direct/src/distributed/DistributedObject.py

@@ -466,3 +466,6 @@ class DistributedObject(DistributedObjectBase):
     def isGridParent(self):
     def isGridParent(self):
         # If this distributed object is a DistributedGrid return 1.  0 by default
         # If this distributed object is a DistributedGrid return 1.  0 by default
         return 0
         return 0
+
+    def execCommand(self, string, mwMgrId, avId, zoneId):
+        pass

+ 4 - 0
direct/src/distributed/DistributedObjectAI.py

@@ -555,3 +555,7 @@ class DistributedObjectAI(DistributedObjectBase):
     def isGridParent(self):
     def isGridParent(self):
         # If this distributed object is a DistributedGrid return 1.  0 by default
         # If this distributed object is a DistributedGrid return 1.  0 by default
         return 0
         return 0
+
+    def execCommand(self, string, mwMgrId, avId, zoneId):
+        pass
+    

+ 1 - 0
direct/src/distributed/DistributedObjectGlobal.py

@@ -21,3 +21,4 @@ class DistributedObjectGlobal(DistributedObject):
         DistributedObject.__init__(self, cr)
         DistributedObject.__init__(self, cr)
         self.parentId = 0
         self.parentId = 0
         self.zoneId = 0
         self.zoneId = 0
+

+ 43 - 0
direct/src/distributed/DistributedObjectGlobalUD.py

@@ -3,6 +3,7 @@
 from DistributedObjectUD import DistributedObjectUD
 from DistributedObjectUD import DistributedObjectUD
 from direct.directnotify.DirectNotifyGlobal import directNotify
 from direct.directnotify.DirectNotifyGlobal import directNotify
 
 
+import sys
 
 
 class DistributedObjectGlobalUD(DistributedObjectUD):
 class DistributedObjectGlobalUD(DistributedObjectUD):
     notify = directNotify.newCategory('DistributedObjectGlobalUD')
     notify = directNotify.newCategory('DistributedObjectGlobalUD')
@@ -12,6 +13,7 @@ class DistributedObjectGlobalUD(DistributedObjectUD):
 
 
     def __init__(self, air):
     def __init__(self, air):
         DistributedObjectUD.__init__(self, air)
         DistributedObjectUD.__init__(self, air)
+        self.ExecNamespace = {"self":self}
     
     
     def announceGenerate(self):
     def announceGenerate(self):
         self.air.registerForChannel(self.doId)
         self.air.registerForChannel(self.doId)
@@ -21,3 +23,44 @@ class DistributedObjectGlobalUD(DistributedObjectUD):
         self.air.unregisterForChannel(self.doId)
         self.air.unregisterForChannel(self.doId)
         ## self.air.removeDOFromTables(self)
         ## self.air.removeDOFromTables(self)
         DistributedObjectUD.delete(self)
         DistributedObjectUD.delete(self)
+
+    def execCommand(self, command, mwMgrId, avId, zoneId):
+        text = self.__execMessage(command)
+        print text
+        dclass = uber.air.dclassesByName.get("PiratesMagicWordManagerAI")
+        dg = dclass.aiFormatUpdate(
+            "setMagicWordResponse", mwMgrId, (1<<32)+avId, uber.air.ourChannel, [text])
+        uber.air.send(dg)
+
+    def __execMessage(self, message):
+        if not self.ExecNamespace:
+            # Import some useful variables into the ExecNamespace initially.
+            exec 'from pandac.PandaModules import *' in globals(), self.ExecNamespace
+            #self.importExecNamespace()
+
+        # Now try to evaluate the expression using ChatInputNormal.ExecNamespace as
+        # the local namespace.
+        try:
+            return str(eval(message, globals(), self.ExecNamespace))
+
+        except SyntaxError:
+            # Maybe it's only a statement, like "x = 1", or
+            # "import math".  These aren't expressions, so eval()
+            # fails, but they can be exec'ed.
+            try:
+                exec message in globals(), self.ExecNamespace
+                return 'ok'
+            except:
+                exception = sys.exc_info()[0]
+                extraInfo = sys.exc_info()[1]
+                if extraInfo:
+                    return str(extraInfo)
+                else:
+                    return str(exception)
+        except:
+            exception = sys.exc_info()[0]
+            extraInfo = sys.exc_info()[1]
+            if extraInfo:
+                return str(extraInfo)
+            else:
+                return str(exception)

+ 3 - 0
direct/src/distributed/DistributedObjectUD.py

@@ -488,3 +488,6 @@ class DistributedObjectUD(DistributedObjectBase):
     def isGridParent(self):
     def isGridParent(self):
         # If this distributed object is a DistributedGrid return 1.  0 by default
         # If this distributed object is a DistributedGrid return 1.  0 by default
         return 0
         return 0
+
+    def execCommand(self, string, mwMgrId, avId, zoneId):
+        pass