mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
undo poorly-conceived dcparse compress flag
This commit is contained in:
parent
be4d4625e3
commit
5b4eb24b62
@ -564,17 +564,6 @@ is_ownsend() const {
|
|||||||
return (_flags & F_ownsend) != 0;
|
return (_flags & F_ownsend) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// Function: DCAtomicField::is_compress
|
|
||||||
// Access: Public
|
|
||||||
// Description: Returns true if the "compress" flag is set for this
|
|
||||||
// field, false otherwise.
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
bool DCAtomicField::
|
|
||||||
is_compress() const {
|
|
||||||
return (_flags & F_compress) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: DCAtomicField::Constructor
|
// Function: DCAtomicField::Constructor
|
||||||
// Access: Public
|
// Access: Public
|
||||||
@ -632,9 +621,6 @@ write(ostream &out, int indent_level) const {
|
|||||||
if ((_flags & F_ownsend) != 0) {
|
if ((_flags & F_ownsend) != 0) {
|
||||||
out << " ownsend";
|
out << " ownsend";
|
||||||
}
|
}
|
||||||
if ((_flags & F_compress) != 0) {
|
|
||||||
out << " compress";
|
|
||||||
}
|
|
||||||
|
|
||||||
out << "; // field " << _number << "\n";
|
out << "; // field " << _number << "\n";
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,6 @@ PUBLISHED:
|
|||||||
bool is_clsend() const;
|
bool is_clsend() const;
|
||||||
bool is_clrecv() const;
|
bool is_clrecv() const;
|
||||||
bool is_ownsend() const;
|
bool is_ownsend() const;
|
||||||
bool is_compress() const;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DCAtomicField();
|
DCAtomicField();
|
||||||
@ -98,7 +97,6 @@ public:
|
|||||||
F_clsend = 0x0020,
|
F_clsend = 0x0020,
|
||||||
F_clrecv = 0x0040,
|
F_clrecv = 0x0040,
|
||||||
F_ownsend = 0x0080,
|
F_ownsend = 0x0080,
|
||||||
F_compress = 0x0100,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int _flags; // A bitmask union of any of the above values.
|
int _flags; // A bitmask union of any of the above values.
|
||||||
|
@ -471,11 +471,6 @@ mol[0-9]+ {
|
|||||||
return KW_OWNSEND;
|
return KW_OWNSEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
"compress" {
|
|
||||||
accept();
|
|
||||||
return KW_COMPRESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
{INTEGERNUM} {
|
{INTEGERNUM} {
|
||||||
// An integer number.
|
// An integer number.
|
||||||
accept();
|
accept();
|
||||||
|
@ -77,7 +77,6 @@ dc_cleanup_parser() {
|
|||||||
%token KW_CLSEND
|
%token KW_CLSEND
|
||||||
%token KW_CLRECV
|
%token KW_CLRECV
|
||||||
%token KW_OWNSEND
|
%token KW_OWNSEND
|
||||||
%token KW_COMPRESS
|
|
||||||
|
|
||||||
%type <u.dclass> dclass_name
|
%type <u.dclass> dclass_name
|
||||||
%type <u.atomic> atomic_name
|
%type <u.atomic> atomic_name
|
||||||
@ -415,10 +414,6 @@ atomic_flags:
|
|||||||
| atomic_flags KW_OWNSEND
|
| atomic_flags KW_OWNSEND
|
||||||
{
|
{
|
||||||
current_atomic->_flags |= DCAtomicField::F_ownsend;
|
current_atomic->_flags |= DCAtomicField::F_ownsend;
|
||||||
}
|
|
||||||
| atomic_flags KW_COMPRESS
|
|
||||||
{
|
|
||||||
current_atomic->_flags |= DCAtomicField::F_compress;
|
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -62,14 +62,14 @@ class ClientDistClass:
|
|||||||
requiredCDU.append(i)
|
requiredCDU.append(i)
|
||||||
return requiredCDU
|
return requiredCDU
|
||||||
|
|
||||||
def updateField(self, do, di, allowCompress):
|
def updateField(self, do, di):
|
||||||
# Get the update field id
|
# Get the update field id
|
||||||
fieldId = di.getArg(STUint16)
|
fieldId = di.getArg(STUint16)
|
||||||
# look up the CDU
|
# look up the CDU
|
||||||
assert(self.number2CDU.has_key(fieldId))
|
assert(self.number2CDU.has_key(fieldId))
|
||||||
cdu = self.number2CDU[fieldId]
|
cdu = self.number2CDU[fieldId]
|
||||||
# Let the cdu finish the job
|
# Let the cdu finish the job
|
||||||
cdu.updateField(self, do, di, allowCompress)
|
cdu.updateField(self, do, di)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def sendUpdate(self, cr, do, fieldName, args, sendToId = None):
|
def sendUpdate(self, cr, do, fieldName, args, sendToId = None):
|
||||||
|
@ -20,7 +20,6 @@ class ClientDistUpdate:
|
|||||||
self.name = dcField.getName()
|
self.name = dcField.getName()
|
||||||
self.types = []
|
self.types = []
|
||||||
self.divisors = []
|
self.divisors = []
|
||||||
self.compress = 0
|
|
||||||
self.deriveTypesFromParticle(dcField)
|
self.deriveTypesFromParticle(dcField)
|
||||||
# Figure out our function pointer
|
# Figure out our function pointer
|
||||||
exec("import " + cdc.name, moduleGlobals, moduleLocals)
|
exec("import " + cdc.name, moduleGlobals, moduleLocals)
|
||||||
@ -41,24 +40,19 @@ class ClientDistUpdate:
|
|||||||
for i in range(0, dcFieldAtomic.getNumElements()):
|
for i in range(0, dcFieldAtomic.getNumElements()):
|
||||||
self.types.append(dcFieldAtomic.getElementType(i))
|
self.types.append(dcFieldAtomic.getElementType(i))
|
||||||
self.divisors.append(dcFieldAtomic.getElementDivisor(i))
|
self.divisors.append(dcFieldAtomic.getElementDivisor(i))
|
||||||
if dcFieldAtomic.isCompress():
|
|
||||||
self.compress = 1
|
|
||||||
|
|
||||||
elif dcFieldMolecular:
|
elif dcFieldMolecular:
|
||||||
for i in range(0, dcFieldMolecular.getNumAtomics()):
|
for i in range(0, dcFieldMolecular.getNumAtomics()):
|
||||||
componentField = dcFieldMolecular.getAtomic(i)
|
componentField = dcFieldMolecular.getAtomic(i)
|
||||||
for j in range(0, componentField.getNumElements()):
|
for j in range(0, componentField.getNumElements()):
|
||||||
self.types.append(componentField.getElementType(j))
|
self.types.append(componentField.getElementType(j))
|
||||||
self.divisors.append(componentField.getElementDivisor(j))
|
self.divisors.append(componentField.getElementDivisor(j))
|
||||||
if componentField.isCompress():
|
|
||||||
self.compress = 1
|
|
||||||
else:
|
else:
|
||||||
ClientDistUpdate.notify.error("field is neither atom nor molecule")
|
ClientDistUpdate.notify.error("field is neither atom nor molecule")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def updateField(self, cdc, do, di, allowCompress):
|
def updateField(self, cdc, do, di):
|
||||||
# Get the arguments into a list
|
# Get the arguments into a list
|
||||||
args = self.extractArgs(di, allowCompress)
|
args = self.extractArgs(di)
|
||||||
|
|
||||||
assert(self.notify.debug("Received update for %d: %s.%s(%s)" % (do.doId, cdc.name, self.name, args)))
|
assert(self.notify.debug("Received update for %d: %s.%s(%s)" % (do.doId, cdc.name, self.name, args)))
|
||||||
|
|
||||||
@ -67,13 +61,7 @@ class ClientDistUpdate:
|
|||||||
apply(self.func, [do] + args)
|
apply(self.func, [do] + args)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def extractArgs(self, di, allowCompress):
|
def extractArgs(self, di):
|
||||||
if allowCompress and self.compress:
|
|
||||||
# Technically, the datagram pointer is const, so this is
|
|
||||||
# invalid. Ignore that for now.
|
|
||||||
argsAt = di.getCurrentIndex()
|
|
||||||
di.getDatagram().uncompress(argsAt)
|
|
||||||
|
|
||||||
args = []
|
args = []
|
||||||
assert(len(self.types) == len(self.divisors))
|
assert(len(self.types) == len(self.divisors))
|
||||||
numTypes = len(self.types)
|
numTypes = len(self.types)
|
||||||
@ -100,10 +88,7 @@ class ClientDistUpdate:
|
|||||||
datagram.addUint32(sendToId)
|
datagram.addUint32(sendToId)
|
||||||
# Add the field id
|
# Add the field id
|
||||||
datagram.addUint16(self.number)
|
datagram.addUint16(self.number)
|
||||||
argsAt = datagram.getLength()
|
|
||||||
# Add the arguments
|
# Add the arguments
|
||||||
self.addArgs(datagram, args)
|
self.addArgs(datagram, args)
|
||||||
if self.compress:
|
|
||||||
datagram.compress(argsAt)
|
|
||||||
# send the datagram
|
# send the datagram
|
||||||
cr.send(datagram)
|
cr.send(datagram)
|
||||||
|
@ -517,7 +517,7 @@ class ClientRepository(DirectObject.DirectObject):
|
|||||||
cdc = self.doId2cdc.get(doId)
|
cdc = self.doId2cdc.get(doId)
|
||||||
if (do != None and cdc != None):
|
if (do != None and cdc != None):
|
||||||
# Let the cdc finish the job
|
# Let the cdc finish the job
|
||||||
cdc.updateField(do, di, 1)
|
cdc.updateField(do, di)
|
||||||
else:
|
else:
|
||||||
ClientRepository.notify.warning(
|
ClientRepository.notify.warning(
|
||||||
"Asked to update non-existent DistObj " + str(doId))
|
"Asked to update non-existent DistObj " + str(doId))
|
||||||
|
@ -182,21 +182,21 @@ class DistributedObject(PandaObject):
|
|||||||
|
|
||||||
def updateRequiredFields(self, cdc, di):
|
def updateRequiredFields(self, cdc, di):
|
||||||
for i in cdc.broadcastRequiredCDU:
|
for i in cdc.broadcastRequiredCDU:
|
||||||
i.updateField(cdc, self, di, 0)
|
i.updateField(cdc, self, di)
|
||||||
|
|
||||||
def updateAllRequiredFields(self, cdc, di):
|
def updateAllRequiredFields(self, cdc, di):
|
||||||
for i in cdc.allRequiredCDU:
|
for i in cdc.allRequiredCDU:
|
||||||
i.updateField(cdc, self, di, 0)
|
i.updateField(cdc, self, di)
|
||||||
|
|
||||||
def updateRequiredOtherFields(self, cdc, di):
|
def updateRequiredOtherFields(self, cdc, di):
|
||||||
# First, update the required fields
|
# First, update the required fields
|
||||||
for i in cdc.broadcastRequiredCDU:
|
for i in cdc.broadcastRequiredCDU:
|
||||||
i.updateField(cdc, self, di, 0)
|
i.updateField(cdc, self, di)
|
||||||
# Determine how many other fields there are
|
# Determine how many other fields there are
|
||||||
numberOfOtherFields = di.getArg(STUint16)
|
numberOfOtherFields = di.getArg(STUint16)
|
||||||
# Update each of the other fields
|
# Update each of the other fields
|
||||||
for i in range(numberOfOtherFields):
|
for i in range(numberOfOtherFields):
|
||||||
cdc.updateField(self, di, 0)
|
cdc.updateField(self, di)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def sendUpdate(self, fieldName, args = [], sendToId = None):
|
def sendUpdate(self, fieldName, args = [], sendToId = None):
|
||||||
|
@ -154,41 +154,3 @@ append_data(const void *data, size_t size) {
|
|||||||
_data.v().push_back(source[i]);
|
_data.v().push_back(source[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// Function: Datagram::compress
|
|
||||||
// Access: Public
|
|
||||||
// Description: Performs a simple bit-compression on the data stored
|
|
||||||
// within the datagram. Data before from_byte will be
|
|
||||||
// unaffected. This will be exactly reversed by a later
|
|
||||||
// call to uncompress(), but you must be careful to call
|
|
||||||
// each function exactly once.
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
void Datagram::
|
|
||||||
compress(size_t from_byte) {
|
|
||||||
// For now, we don't actually compress the data, but just trivially
|
|
||||||
// encode it.
|
|
||||||
|
|
||||||
char *message = (char *)get_data();
|
|
||||||
size_t num_bytes = get_length();
|
|
||||||
for (size_t i = from_byte; i < num_bytes; i++) {
|
|
||||||
message[i] ^= 0x55;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// Function: Datagram::uncompress
|
|
||||||
// Access: Public
|
|
||||||
// Description: Reverses the effect of a previous call to compress().
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
void Datagram::
|
|
||||||
uncompress(size_t from_byte) {
|
|
||||||
// For now, we don't actually compress the data, but just trivially
|
|
||||||
// encode it.
|
|
||||||
|
|
||||||
char *message = (char *)get_data();
|
|
||||||
size_t num_bytes = get_length();
|
|
||||||
for (size_t i = from_byte; i < num_bytes; i++) {
|
|
||||||
message[i] ^= 0x55;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -93,9 +93,6 @@ PUBLISHED:
|
|||||||
INLINE const void *get_data() const;
|
INLINE const void *get_data() const;
|
||||||
INLINE size_t get_length() const;
|
INLINE size_t get_length() const;
|
||||||
|
|
||||||
void compress(size_t from_byte);
|
|
||||||
void uncompress(size_t from_byte);
|
|
||||||
|
|
||||||
INLINE bool operator == (const Datagram &other) const;
|
INLINE bool operator == (const Datagram &other) const;
|
||||||
INLINE bool operator != (const Datagram &other) const;
|
INLINE bool operator != (const Datagram &other) const;
|
||||||
INLINE bool operator < (const Datagram &other) const;
|
INLINE bool operator < (const Datagram &other) const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user