Home - Forums - Documentation - Gallery - Bugs

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.

| Article | Discussion | View source | History |