aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tinsel/object.cpp2
-rw-r--r--engines/tinsel/object.h27
2 files changed, 28 insertions, 1 deletions
diff --git a/engines/tinsel/object.cpp b/engines/tinsel/object.cpp
index caf41ab81c..38d44d60e1 100644
--- a/engines/tinsel/object.cpp
+++ b/engines/tinsel/object.cpp
@@ -114,7 +114,7 @@ OBJECT *AllocObject() {
pFreeObjects = pObj->pNext;
// clear out object
- memset(pObj, 0, sizeof(OBJECT));
+ pObj->reset();
// set default drawing mode and set changed bit
pObj->flags = DMA_WNZ | DMA_CHANGED;
diff --git a/engines/tinsel/object.h b/engines/tinsel/object.h
index 097e1872d1..351b4d36ef 100644
--- a/engines/tinsel/object.h
+++ b/engines/tinsel/object.h
@@ -92,6 +92,33 @@ struct OBJECT {
SCNHANDLE hShape; ///< objects current animation frame
SCNHANDLE hMirror; ///< objects previous animation frame
int oid; ///< object identifier
+
+ void reset() {
+ pNext = nullptr;
+ pSlave = nullptr;
+ //pOnDispList = nullptr;
+ //xVel = 0;
+ //yVel = 0;
+ xPos = 0;
+ yPos = 0;
+ zPos = 0;
+ rcPrev.top = 0;
+ rcPrev.left = 0;
+ rcPrev.bottom = 0;
+ rcPrev.right = 0;
+ flags = 0;
+ pPal = nullptr;
+ constant = 0;
+ width = 0;
+ height = 0;
+ hBits = 0;
+ hImg = 0;
+ hShape = 0;
+ hMirror = 0;
+ oid = 0;
+ }
+
+ OBJECT() { reset(); }
};
typedef OBJECT *POBJECT;