Changed net object ordered list implementation
This commit is contained in:
parent
879655fbb8
commit
fda8fcc166
60 changed files with 816 additions and 785 deletions
|
|
@ -74,25 +74,19 @@ void CanvasComponentContainer::draw(SkCanvas* canvas, const DrawData& drawData)
|
|||
}
|
||||
}
|
||||
|
||||
void CanvasComponentContainer::set_owner_obj_info(const ObjInfoSharedPtr& ownerObjInfo) {
|
||||
objInfo = ownerObjInfo;
|
||||
}
|
||||
|
||||
void CanvasComponentContainer::commit_update(DrawingProgram& drawP) {
|
||||
auto lockedObjInfo = objInfo.lock();
|
||||
if(worldAABB.has_value()) // This is the only point where worldAABB could be nullopt
|
||||
drawP.preupdate_component(lockedObjInfo);
|
||||
drawP.preupdate_component(&(*objInfo));
|
||||
get_comp().initialize_draw_data(drawP);
|
||||
calculate_world_bounds();
|
||||
drawP.preupdate_component(lockedObjInfo);
|
||||
drawP.preupdate_component(&(*objInfo));
|
||||
}
|
||||
|
||||
void CanvasComponentContainer::commit_transform(DrawingProgram& drawP) {
|
||||
auto lockedObjInfo = objInfo.lock();
|
||||
if(worldAABB.has_value()) // This is the only point where worldAABB could be nullopt
|
||||
drawP.preupdate_component(lockedObjInfo);
|
||||
drawP.preupdate_component(&(*objInfo));
|
||||
calculate_world_bounds();
|
||||
drawP.preupdate_component(lockedObjInfo);
|
||||
drawP.preupdate_component(&(*objInfo));
|
||||
}
|
||||
|
||||
void CanvasComponentContainer::commit_update_dont_invalidate_cache(DrawingProgram& drawP) {
|
||||
|
|
|
|||
|
|
@ -16,8 +16,7 @@ class CanvasComponentContainer {
|
|||
typedef NetworkingObjects::NetObjOrderedList<CanvasComponentContainer> NetList;
|
||||
typedef NetworkingObjects::NetObjOwnerPtr<NetList> NetListOwnerPtr;
|
||||
typedef NetworkingObjects::NetObjOrderedListObjectInfo<CanvasComponentContainer> ObjInfo;
|
||||
typedef std::shared_ptr<ObjInfo> ObjInfoSharedPtr;
|
||||
typedef std::weak_ptr<ObjInfo> ObjInfoWeakPtr;
|
||||
typedef NetworkingObjects::NetObjOrderedListIterator<CanvasComponentContainer> ObjInfoIterator;
|
||||
|
||||
constexpr static int COMP_MAX_SHIFT_BEFORE_STOP_COLLISIONS = 14;
|
||||
constexpr static int COMP_MAX_SHIFT_BEFORE_STOP_SCALING = 14;
|
||||
|
|
@ -50,12 +49,12 @@ class CanvasComponentContainer {
|
|||
bool collides_with_world_coords(const CoordSpaceHelper& camCoords, const SCollision::ColliderCollection<WorldScalar>& checkAgainstWorld) const;
|
||||
bool collides_with_cam_coords(const CoordSpaceHelper& camCoords, const SCollision::ColliderCollection<float>& checkAgainstCam) const;
|
||||
bool collides_with(const CoordSpaceHelper& camCoords, const SCollision::ColliderCollection<WorldScalar>& checkAgainstWorld, const SCollision::ColliderCollection<float>& checkAgainstCam) const;
|
||||
void set_owner_obj_info(const ObjInfoSharedPtr& ownerObjInfo);
|
||||
void send_comp_update(DrawingProgram& drawP, bool finalUpdate);
|
||||
|
||||
std::weak_ptr<DrawingProgramCacheBVHNode> cacheParentBvhNode;
|
||||
DrawingProgramLayerListItem* parentLayer = nullptr;
|
||||
CoordSpaceHelper coords;
|
||||
ObjInfoIterator objInfo;
|
||||
private:
|
||||
friend class BrushStrokeCanvasComponent;
|
||||
friend class ImageCanvasComponent;
|
||||
|
|
@ -75,7 +74,6 @@ class CanvasComponentContainer {
|
|||
TransformDrawData calculate_draw_transform(const DrawData& drawData) const;
|
||||
void calculate_world_bounds();
|
||||
|
||||
ObjInfoWeakPtr objInfo;
|
||||
std::optional<SCollision::AABB<WorldScalar>> worldAABB;
|
||||
NetworkingObjects::NetObjOwnerPtr<CanvasComponentAllocator> compAllocator;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ void ImageCanvasComponent::update(DrawingProgram& drawP) {
|
|||
ResourceDisplay* display = drawP.world.drawData.rMan->get_display_data(d.imageID);
|
||||
if(display) {
|
||||
if(display->update_draw())
|
||||
drawP.invalidate_cache_at_component(compContainer->objInfo.lock());
|
||||
drawP.invalidate_cache_at_component(&(*compContainer->objInfo));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue