Contents |
Introduction
This is documentation for the future python property class system.
A Simple Python Property Class
from pycel import * class RotatePropClass(pyPcCommon): def __init__(self,oreg): pyPcCommon.__init__(self,oreg) PhysicalLayer.CallbackEveryFrame(self,CEL_EVENT_PRE) def TickEveryFrame(self): mov = celMesh(self.GetEntity()).Mesh.GetMovable() rot = csYRotMatrix3(0.1) mov.Transform(rot) mov.UpdateMove() CEL_IMPLEMENT_FACTORY(RotatePropClass,"pcrotate")
Receiving Messages
class RotatePropClass(pyPcCommon,pyMessageReceiver): def __init__(self,oreg): pyPcCommon.__init__(self,oreg) PhysicalLayer.CallbackEveryFrame(self,CEL_EVENT_PRE) @pycel.message("cel.foo.bar") def DoBar(self,sender,args): return 0 def TickEveryFrame(self): mov = celMesh(self.GetEntity()).Mesh.GetMovable() rot = csYRotMatrix3(0.1) mov.Transform(rot) mov.UpdateMove()
Sending Messages
entity.MessageChannel.CreateMessageDispatcher(self,"cel.foo.bar").SendMessage(pars) or entity.MessageChannel.SendMessage("cel.foo.bar",self,pars)
Properties
Python property classes support a mechanism to transparently treat python class attributes as cel properties, this means any property you set on the map or elsewhere (like quests) will directly translate to a python attribute change in your instance.
Loading your property classes
Usually you will place the .py file somewhere in pythonpath, and add some config options to celstart.cfg (or your own app).
CsPython.Module.1 = mypcclasses
(where the file would be mypcclasses.py in this case).
You can add as many files as you want using this mechanism.
