mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
sample.dc
This commit is contained in:
parent
4db2a0efb8
commit
2e492adab7
112
direct/src/doc/sample.dc
Normal file
112
direct/src/doc/sample.dc
Normal file
@ -0,0 +1,112 @@
|
||||
// It's necessary to explicitly import the Python files that define
|
||||
// the Python representation of the classes and structs named in this
|
||||
// file. (Implicitly importing these files turned out to be a bad
|
||||
// idea.)
|
||||
|
||||
from direct.distributed import DistributedObject
|
||||
from direct.distributed import DistributedNode
|
||||
from game.avatar import AvatarObject
|
||||
from game.avatar import DistributedObjectHolder
|
||||
|
||||
// All of the named modules are imported into a common Python
|
||||
// namespace, which is then searched for each named dclass or struct.
|
||||
// It is OK for a dclass to be named in this file that doesn't have a
|
||||
// corresponding Python representation, but it is then an error to
|
||||
// receive a generate message for one of these objects.
|
||||
|
||||
|
||||
// A simple typedef provides a name and a semantic context to types.
|
||||
typedef uint32 DoId;
|
||||
|
||||
|
||||
// A dclass defines a collection of "methods" which may be called as
|
||||
// network messages.
|
||||
dclass DistributedObject {
|
||||
setColor(uint8 red, uint8 green, uint8 blue);
|
||||
|
||||
// The uint8[] syntax replaces the old uint8array type. All of the
|
||||
// old hard-coded array types are now deprecated in favor of C-style
|
||||
// array definitions.
|
||||
setPropertiesList(uint8[] properties);
|
||||
};
|
||||
|
||||
|
||||
// You can also define C-style structs. This is really the same thing
|
||||
// as a dclass, except it can be embedded in a message rather than
|
||||
// created as an object in its own right. The struct may or may not
|
||||
// have a Python representation in one of the imported modules. If
|
||||
// the struct has a Python representation, an instance of that object
|
||||
// is created and passed in to functions that receive this kind of
|
||||
// parameter; otherwise, a tuple with all of the fields is passed
|
||||
// instead.
|
||||
|
||||
struct AvatarObject {
|
||||
// Limits to numeric ranges may be specified within parentheses
|
||||
// following the typename.
|
||||
uint8(0-10) type;
|
||||
int16(0-999, 2000-2999, 5000-5199) roomId;
|
||||
|
||||
// You can specify a default initial value in case the value is not
|
||||
// already defined at the time generate is called.
|
||||
int8 code = 0;
|
||||
|
||||
// You can also define "methods" on a struct, just as on a dclass.
|
||||
// This implies the existence of the corresponding getObjectCode()
|
||||
// method to query the information at generate time.
|
||||
setObjectCode(int8(0-50) code, DoId player);
|
||||
};
|
||||
|
||||
|
||||
// Single inheritance is supported, but not multiple inheritance.
|
||||
dclass DistributedObjectHolder : DistributedObject {
|
||||
dropObject(AvatarObject object);
|
||||
|
||||
// You can also have an array of structs. This specifies a
|
||||
// fixed-length array of five elements.
|
||||
setObjectList(AvatarObject[5] objectArray);
|
||||
|
||||
// In addition to fixed-length arrays and unbounded arrays, you can
|
||||
// specify a range for the valid size of the array:
|
||||
setRelatedObjects(AvatarObject[0, 3 - 5] relatedObjects = [])
|
||||
};
|
||||
|
||||
// You can specify a default initial value on the typedef, if you
|
||||
// like. This will be overridden by a default initial value specified
|
||||
// on the instance.
|
||||
typedef uint8(0-25) DNAColor = 1;
|
||||
|
||||
struct AvatarDNA {
|
||||
char('a','q','x') type;
|
||||
|
||||
uint8(0-10) torsoIndex;
|
||||
uint8(0-5) headIndex;
|
||||
uint8(0-4) legsIndex;
|
||||
|
||||
// A switch can be used to define alternate versions of the data
|
||||
// according to some value read from the stream. In this example,
|
||||
// the alternate cases are very similar, but they need not be
|
||||
// similar at all.
|
||||
switch (uint8 gender) {
|
||||
case 1:
|
||||
// Girl clothes
|
||||
uint8(0-35) shirtIndex;
|
||||
DNAColor shirtColor;
|
||||
uint8(0-25) skirtIndex;
|
||||
DNAColor skirtColor;
|
||||
|
||||
case 0:
|
||||
// Boy clothes
|
||||
uint8(0-20) shirtIndex;
|
||||
DNAColor shirtColor;
|
||||
uint8(0-15) shortsIndex;
|
||||
DNAColor shortsColor;
|
||||
};
|
||||
|
||||
DNAColor armColor;
|
||||
DNAColor headColor;
|
||||
};
|
||||
|
||||
|
||||
dclass DistributedAvatar {
|
||||
setDNA(AvatarDNA dna = {'a', 1, 2, 3, { 1, 0, 1, 0, 1 }, 1, 1 }) required broadcast db;
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user