mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-19 21:23:52 +00:00
float* -> Vector3, moveToCell -> copyToCell, fixed placeObject()
This commit is contained in:
parent
b734460dc9
commit
26595f22f6
45 changed files with 98 additions and 83 deletions
|
@ -96,7 +96,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Activator::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Activator::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Activator> *ref =
|
MWWorld::LiveCellRef<ESM::Activator> *ref =
|
||||||
ptr.get<ESM::Activator>();
|
ptr.get<ESM::Activator>();
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace MWClass
|
||||||
{
|
{
|
||||||
|
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Apparatus::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Apparatus::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Apparatus> *ref =
|
MWWorld::LiveCellRef<ESM::Apparatus> *ref =
|
||||||
ptr.get<ESM::Apparatus>();
|
ptr.get<ESM::Apparatus>();
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace MWClass
|
||||||
{
|
{
|
||||||
|
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -278,7 +278,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Armor::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Armor::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Armor> *ref =
|
MWWorld::LiveCellRef<ESM::Armor> *ref =
|
||||||
ptr.get<ESM::Armor>();
|
ptr.get<ESM::Armor>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Armor : public MWWorld::Class
|
class Armor : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -158,7 +158,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Book::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Book::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Book> *ref =
|
MWWorld::LiveCellRef<ESM::Book> *ref =
|
||||||
ptr.get<ESM::Book>();
|
ptr.get<ESM::Book>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Book : public MWWorld::Class
|
class Book : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -229,7 +229,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Clothing::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Clothing::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Clothing> *ref =
|
MWWorld::LiveCellRef<ESM::Clothing> *ref =
|
||||||
ptr.get<ESM::Clothing>();
|
ptr.get<ESM::Clothing>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Clothing : public MWWorld::Class
|
class Clothing : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -209,7 +209,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Container::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Container::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Container> *ref =
|
MWWorld::LiveCellRef<ESM::Container> *ref =
|
||||||
ptr.get<ESM::Container>();
|
ptr.get<ESM::Container>();
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace MWClass
|
||||||
|
|
||||||
|
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -197,7 +197,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Creature::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Creature::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Creature> *ref =
|
MWWorld::LiveCellRef<ESM::Creature> *ref =
|
||||||
ptr.get<ESM::Creature>();
|
ptr.get<ESM::Creature>();
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace MWClass
|
||||||
void ensureCustomData (const MWWorld::Ptr& ptr) const;
|
void ensureCustomData (const MWWorld::Ptr& ptr) const;
|
||||||
|
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -211,7 +211,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Door::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Door::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Door> *ref =
|
MWWorld::LiveCellRef<ESM::Door> *ref =
|
||||||
ptr.get<ESM::Door>();
|
ptr.get<ESM::Door>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Door : public MWWorld::Class
|
class Door : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -158,7 +158,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Ingredient::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Ingredient::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Ingredient> *ref =
|
MWWorld::LiveCellRef<ESM::Ingredient> *ref =
|
||||||
ptr.get<ESM::Ingredient>();
|
ptr.get<ESM::Ingredient>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Ingredient : public MWWorld::Class
|
class Ingredient : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -198,7 +198,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Light::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Light::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Light> *ref =
|
MWWorld::LiveCellRef<ESM::Light> *ref =
|
||||||
ptr.get<ESM::Light>();
|
ptr.get<ESM::Light>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Light : public MWWorld::Class
|
class Light : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Lockpick::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Lockpick::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Tool> *ref =
|
MWWorld::LiveCellRef<ESM::Tool> *ref =
|
||||||
ptr.get<ESM::Tool>();
|
ptr.get<ESM::Tool>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Lockpick : public MWWorld::Class
|
class Lockpick : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -186,7 +186,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Miscellaneous::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Miscellaneous::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::Ptr newPtr;
|
MWWorld::Ptr newPtr;
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Miscellaneous : public MWWorld::Class
|
class Miscellaneous : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -382,7 +382,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Npc::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Npc::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::NPC> *ref =
|
MWWorld::LiveCellRef<ESM::NPC> *ref =
|
||||||
ptr.get<ESM::NPC>();
|
ptr.get<ESM::NPC>();
|
||||||
|
|
|
@ -10,7 +10,7 @@ namespace MWClass
|
||||||
void ensureCustomData (const MWWorld::Ptr& ptr) const;
|
void ensureCustomData (const MWWorld::Ptr& ptr) const;
|
||||||
|
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -162,7 +162,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Potion::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Potion::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Potion> *ref =
|
MWWorld::LiveCellRef<ESM::Potion> *ref =
|
||||||
ptr.get<ESM::Potion>();
|
ptr.get<ESM::Potion>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Potion : public MWWorld::Class
|
class Potion : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Probe::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Probe::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Probe> *ref =
|
MWWorld::LiveCellRef<ESM::Probe> *ref =
|
||||||
ptr.get<ESM::Probe>();
|
ptr.get<ESM::Probe>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Probe : public MWWorld::Class
|
class Probe : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Repair::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Repair::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Repair> *ref =
|
MWWorld::LiveCellRef<ESM::Repair> *ref =
|
||||||
ptr.get<ESM::Repair>();
|
ptr.get<ESM::Repair>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Repair : public MWWorld::Class
|
class Repair : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Static::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Static::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Static> *ref =
|
MWWorld::LiveCellRef<ESM::Static> *ref =
|
||||||
ptr.get<ESM::Static>();
|
ptr.get<ESM::Static>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Static : public MWWorld::Class
|
class Static : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -367,7 +367,7 @@ namespace MWClass
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Weapon::moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
Weapon::copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const
|
||||||
{
|
{
|
||||||
MWWorld::LiveCellRef<ESM::Weapon> *ref =
|
MWWorld::LiveCellRef<ESM::Weapon> *ref =
|
||||||
ptr.get<ESM::Weapon>();
|
ptr.get<ESM::Weapon>();
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace MWClass
|
||||||
class Weapon : public MWWorld::Class
|
class Weapon : public MWWorld::Class
|
||||||
{
|
{
|
||||||
virtual MWWorld::Ptr
|
virtual MWWorld::Ptr
|
||||||
moveToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
copyToCellImpl(const MWWorld::Ptr &ptr, MWWorld::CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -222,27 +222,26 @@ namespace MWWorld
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Class::moveToCellImpl(const Ptr &ptr, CellStore &cell) const
|
Class::copyToCellImpl(const Ptr &ptr, CellStore &cell) const
|
||||||
{
|
{
|
||||||
throw std::runtime_error("unable to move class to cell");
|
throw std::runtime_error("unable to move class to cell");
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Class::moveToCell(const Ptr &ptr, CellStore &cell) const
|
Class::copyToCell(const Ptr &ptr, CellStore &cell) const
|
||||||
{
|
{
|
||||||
Ptr newPtr = moveToCellImpl(ptr, cell);
|
Ptr newPtr = copyToCellImpl(ptr, cell);
|
||||||
|
|
||||||
newPtr.getRefData().setCount(ptr.getRefData().getCount());
|
newPtr.getRefData().setCount(ptr.getRefData().getCount());
|
||||||
ptr.getRefData().setCount(0);
|
|
||||||
newPtr.getRefData().enable();
|
newPtr.getRefData().enable();
|
||||||
|
|
||||||
return newPtr;
|
return newPtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::Ptr
|
MWWorld::Ptr
|
||||||
Class::moveToCell(const Ptr &ptr, CellStore &cell, const ESM::Position &pos) const
|
Class::copyToCell(const Ptr &ptr, CellStore &cell, const ESM::Position &pos) const
|
||||||
{
|
{
|
||||||
Ptr newPtr = moveToCell(ptr, cell);
|
Ptr newPtr = copyToCell(ptr, cell);
|
||||||
newPtr.getRefData().getPosition() = pos;
|
newPtr.getRefData().getPosition() = pos;
|
||||||
|
|
||||||
return newPtr;
|
return newPtr;
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace MWWorld
|
||||||
|
|
||||||
Class();
|
Class();
|
||||||
|
|
||||||
virtual Ptr moveToCellImpl(const Ptr &ptr, CellStore &cell) const;
|
virtual Ptr copyToCellImpl(const Ptr &ptr, CellStore &cell) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -216,10 +216,10 @@ namespace MWWorld
|
||||||
virtual std::string getModel(const MWWorld::Ptr &ptr) const;
|
virtual std::string getModel(const MWWorld::Ptr &ptr) const;
|
||||||
|
|
||||||
virtual Ptr
|
virtual Ptr
|
||||||
moveToCell(const Ptr &ptr, CellStore &cell) const;
|
copyToCell(const Ptr &ptr, CellStore &cell) const;
|
||||||
|
|
||||||
virtual Ptr
|
virtual Ptr
|
||||||
moveToCell(const Ptr &ptr, CellStore &cell, const ESM::Position &pos) const;
|
copyToCell(const Ptr &ptr, CellStore &cell, const ESM::Position &pos) const;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -382,14 +382,23 @@ namespace MWWorld
|
||||||
addActor (node->getName(), model, node->getPosition());
|
addActor (node->getName(), model, node->getPosition());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsSystem::getObjectAABB(const MWWorld::Ptr &ptr, float *min, float *max)
|
bool PhysicsSystem::getObjectAABB(const MWWorld::Ptr &ptr, Ogre::Vector3 &min, Ogre::Vector3 &max)
|
||||||
{
|
{
|
||||||
std::string model = MWWorld::Class::get(ptr).getModel(ptr);
|
std::string model = MWWorld::Class::get(ptr).getModel(ptr);
|
||||||
if (model.empty()) {
|
if (model.empty()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
float scale = ptr.getRefData().getBaseNode()->getScale().x;
|
btVector3 btMin, btMax;
|
||||||
mEngine->getObjectAABB(model, scale, min, max);
|
float scale = ptr.getCellRef().scale;
|
||||||
|
mEngine->getObjectAABB(model, scale, btMin, btMax);
|
||||||
|
|
||||||
|
min.x = btMin.x();
|
||||||
|
min.y = btMin.y();
|
||||||
|
min.z = btMin.z();
|
||||||
|
|
||||||
|
max.x = btMax.x();
|
||||||
|
max.y = btMax.y();
|
||||||
|
max.z = btMax.z();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace MWWorld
|
||||||
|
|
||||||
void setCurrentWater(bool hasWater, int waterHeight);
|
void setCurrentWater(bool hasWater, int waterHeight);
|
||||||
|
|
||||||
bool getObjectAABB(const MWWorld::Ptr &ptr, float *min, float *max);
|
bool getObjectAABB(const MWWorld::Ptr &ptr, Ogre::Vector3 &min, Ogre::Vector3 &max);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OEngine::Render::OgreRenderer &mRender;
|
OEngine::Render::OgreRenderer &mRender;
|
||||||
|
|
|
@ -334,19 +334,8 @@ namespace MWWorld
|
||||||
|
|
||||||
void Scene::addObjectToScene (const Ptr& ptr)
|
void Scene::addObjectToScene (const Ptr& ptr)
|
||||||
{
|
{
|
||||||
mRendering.addObject (ptr);
|
mRendering.addObject(ptr);
|
||||||
|
MWWorld::Class::get(ptr).insertObject(ptr, *mPhysics);
|
||||||
float *pos = ptr.getRefData().getPosition().pos;
|
|
||||||
float min[3], max[3];
|
|
||||||
if (mPhysics->getObjectAABB(ptr, min, max)) {
|
|
||||||
pos[0] -= (min[0] + max[0]) / 2;
|
|
||||||
pos[1] -= (min[1] + max[1]) / 2;
|
|
||||||
pos[2] -= min[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
ptr.getRefData().getBaseNode()->setPosition(pos[0], pos[1], pos[2]);
|
|
||||||
|
|
||||||
MWWorld::Class::get (ptr).insertObject (ptr, *mPhysics);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene::removeObjectFromScene (const Ptr& ptr)
|
void Scene::removeObjectFromScene (const Ptr& ptr)
|
||||||
|
@ -356,4 +345,19 @@ namespace MWWorld
|
||||||
mPhysics->removeObject (ptr.getRefData().getHandle());
|
mPhysics->removeObject (ptr.getRefData().getHandle());
|
||||||
mRendering.removeObject (ptr);
|
mRendering.removeObject (ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Scene::isCellActive(const CellStore &cell)
|
||||||
|
{
|
||||||
|
CellStoreCollection::iterator active = mActiveCells.begin();
|
||||||
|
while (active != mActiveCells.end()) {
|
||||||
|
if ((*active)->cell->name == cell.cell->name &&
|
||||||
|
(*active)->cell->data.gridX == cell.cell->data.gridX &&
|
||||||
|
(*active)->cell->data.gridY == cell.cell->data.gridY)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
++active;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,8 @@ namespace MWWorld
|
||||||
|
|
||||||
void removeObjectFromScene (const Ptr& ptr);
|
void removeObjectFromScene (const Ptr& ptr);
|
||||||
///< Remove an object from the scene, but not from the world model.
|
///< Remove an object from the scene, but not from the world model.
|
||||||
|
|
||||||
|
bool isCellActive(const CellStore &cell);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1022,6 +1022,7 @@ namespace MWWorld
|
||||||
pos.pos[2] = result.second[1];
|
pos.pos[2] = result.second[1];
|
||||||
|
|
||||||
placeObject(object, *cell, pos);
|
placeObject(object, *cell, pos);
|
||||||
|
object.getRefData().setCount(0);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1040,16 +1041,25 @@ namespace MWWorld
|
||||||
void
|
void
|
||||||
World::placeObject(const Ptr &object, CellStore &cell, const ESM::Position &pos)
|
World::placeObject(const Ptr &object, CellStore &cell, const ESM::Position &pos)
|
||||||
{
|
{
|
||||||
mLocalScripts.remove(object);
|
/// \todo add searching correct cell for position specified
|
||||||
|
|
||||||
MWWorld::Ptr dropped =
|
MWWorld::Ptr dropped =
|
||||||
MWWorld::Class::get(object).moveToCell(object, cell, pos);
|
MWWorld::Class::get(object).copyToCell(object, cell, pos);
|
||||||
|
|
||||||
mWorldScene->addObjectToScene(dropped);
|
Ogre::Vector3 min, max;
|
||||||
|
if (mPhysics->getObjectAABB(object, min, max)) {
|
||||||
|
float *pos = dropped.getRefData().getPosition().pos;
|
||||||
|
pos[0] -= (min.x + max.x) / 2;
|
||||||
|
pos[1] -= (min.y + max.y) / 2;
|
||||||
|
pos[2] -= min.z;
|
||||||
|
}
|
||||||
|
|
||||||
std::string script = MWWorld::Class::get(dropped).getScript(dropped);
|
if (mWorldScene->isCellActive(cell)) {
|
||||||
if (!script.empty()) {
|
mWorldScene->addObjectToScene(dropped);
|
||||||
mLocalScripts.add(script, dropped);
|
|
||||||
|
std::string script = MWWorld::Class::get(dropped).getScript(dropped);
|
||||||
|
if (!script.empty()) {
|
||||||
|
mLocalScripts.add(script, dropped);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1071,8 +1081,8 @@ namespace MWWorld
|
||||||
mPhysics->castRay(orig, dir, len);
|
mPhysics->castRay(orig, dir, len);
|
||||||
pos.pos[2] = hit.second.z;
|
pos.pos[2] = hit.second.z;
|
||||||
|
|
||||||
/// \todo fix item dropping at player object center position
|
|
||||||
placeObject(object, *cell, pos);
|
placeObject(object, *cell, pos);
|
||||||
|
object.getRefData().setCount(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void World::processChangedSettings(const Settings::CategorySettingVector& settings)
|
void World::processChangedSettings(const Settings::CategorySettingVector& settings)
|
||||||
|
|
|
@ -569,7 +569,7 @@ namespace Physic
|
||||||
return results2;
|
return results2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicEngine::getObjectAABB(const std::string &mesh, float scale, float *min, float *max)
|
void PhysicEngine::getObjectAABB(const std::string &mesh, float scale, btVector3 &min, btVector3 &max)
|
||||||
{
|
{
|
||||||
char uniqueID[8];
|
char uniqueID[8];
|
||||||
sprintf( uniqueID, "%07.3f", scale );
|
sprintf( uniqueID, "%07.3f", scale );
|
||||||
|
@ -582,17 +582,8 @@ namespace Physic
|
||||||
BulletShapeManager::getSingleton().getByName(outputstring, "General");
|
BulletShapeManager::getSingleton().getByName(outputstring, "General");
|
||||||
|
|
||||||
btTransform trans;
|
btTransform trans;
|
||||||
btVector3 btmin, btmax;
|
|
||||||
|
|
||||||
trans.setIdentity();
|
trans.setIdentity();
|
||||||
shape->Shape->getAabb(trans, btmin, btmax);
|
|
||||||
|
|
||||||
min[0] = btmin.x();
|
shape->Shape->getAabb(trans, min, max);
|
||||||
min[1] = btmin.y();
|
|
||||||
min[2] = btmin.z();
|
|
||||||
|
|
||||||
max[0] = btmax.x();
|
|
||||||
max[1] = btmax.y();
|
|
||||||
max[2] = btmax.z();
|
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
|
|
|
@ -221,7 +221,7 @@ namespace Physic
|
||||||
|
|
||||||
bool toggleDebugRendering();
|
bool toggleDebugRendering();
|
||||||
|
|
||||||
void getObjectAABB(const std::string &mesh, float scale, float *min, float *max);
|
void getObjectAABB(const std::string &mesh, float scale, btVector3 &min, btVector3 &max);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the closest object hit by a ray. If there are no objects, it will return ("",-1).
|
* Return the closest object hit by a ray. If there are no objects, it will return ("",-1).
|
||||||
|
|
Loading…
Reference in a new issue