#pragma once // included by game.h BEGIN_SW_NS class DSWActor : public DCoreActor { DECLARE_CLASS(DSWActor, DCoreActor) HAS_OBJECT_POINTERS public: bool hasUser; USER user; walltype* tempwall; // transient, to replace a hack using a 16 bit sprite field. TObjPtr ownerActor; DSWActor() = default; bool hasU() { return hasUser; } void allocUser() { hasUser = true; } void clearUser() { hasUser = false; user.Clear(); } void Serialize(FSerializer& arc) override; }; inline void UpdateChangeXY(DSWActor* actor) { actor->user.set_int_change_x(MOVEx(actor->spr.xvel, actor->int_ang())); actor->user.set_int_change_y(MOVEy(actor->spr.xvel, actor->int_ang())); } inline void UpdateChange(DSWActor* actor, double zfactor = 1.0) { UpdateChangeXY(actor); actor->user.set_int_change_z(int(actor->spr.zvel * zfactor)); } // subclassed to add a game specific actor() method // Iterator wrappers that return an actor pointer, not an index. using SWStatIterator = TStatIterator; using SWSectIterator = TSectIterator; using SWSpriteIterator = TSpriteIterator; END_SW_NS