Commit graph

2682 commits

Author SHA1 Message Date
Brad Davis
3ad32af975 Additional locking in model entities 2017-08-25 11:49:45 -07:00
Brad Davis
e817d3ced4 Threaded rendering & entity rendering refactor 2017-08-24 13:34:34 -07:00
Chris Collins
751440388a Merge pull request #11225 from hyperlogic/bug-fix/simulation-deadlock-fix
Bug fix for deadlock between EntitySimulation and EntityItem locks.
2017-08-23 20:50:41 -07:00
Anthony J. Thibault
da20eac995 Bug fix for deadlock between EntitySimulation and EntityItem locks.
This is a classic deadlock between the main thread and the OctreeProcessor network thread.
On the main thread, the EntitySimulation lock is taken before the EntityItem read lock is taken.
On the network thread, the EntityItem write lock is taken before the EntitySimulation lock is taken.

To work around this issue the network thread no longer takes the EntitySimulation lock when calling
PhysicalEntitySimulation::addDynamic().  Instead, a fine grained lock around the EntitySimulation's dynamic lists
is used instead.
2017-08-21 17:14:49 -07:00
Chris Collins
72bb52c7ed Merge pull request #11046 from rickdaniels/21448
Address bug #21448 "Correctly Size Bounding Boxes for Polylines"
2017-08-21 15:32:22 -07:00
SamGondelman
a641fb7a7f rename qvector findRayIntersection to avoid script conflicts 2017-08-15 18:03:52 -07:00
rick@ghostpunch.com
8d248f5ccd Remove the attempt to determine the maximum width of a PolyLineEntity's strokes
using the _strokeWidths[] array, as the values don't seem to correspond with
reality. Use a flat 0.075M value for the maxium half of a stroke width instead.
2017-08-14 15:59:21 -04:00
rick@ghostpunch.com
87139f5d82 Remove debug print 2017-08-09 04:46:42 -04:00
rick@ghostpunch.com
cc69853ff1 Make requested style changes to code. 2017-08-09 04:37:47 -04:00
rick@ghostpunch.com
a730da5299 Account for PloyLine stroke width when calculating the dimensions
of the PolyLilne's bounding box.
2017-08-09 04:23:39 -04:00
SamGondelman
3645bf04b6 possibly fix most annoying crash 2017-08-08 18:10:53 -07:00
rick@ghostpunch.com
c94d9b3810 Merge remote-tracking branch 'upstream/master' into 21448 2017-08-07 19:23:57 -04:00
Howard Stearns
71ce5a6494 Merge pull request #11016 from highfidelity/context-overlays
Context Overlays
2017-08-03 16:28:14 -07:00
Andrew Meadows
e465186511 Merge pull request #11048 from 1P-Cusack/21389
WL21389 PR1:  Representation of collision shapes need updating (details below).
2017-08-03 09:04:31 -07:00
David Kelly
6ae516c46a Merge remote-tracking branch 'upstream/context-overlays' into contextOverlays_renderMOde 2017-08-01 15:45:34 -07:00
Dante Ruiz
c22e08f3e8 loacked script engine in EntityEditPacketSender 2017-08-01 19:58:23 +01:00
David Kelly
bd7c4b3b26 Merge remote-tracking branch 'upstream/master' into context-overlays 2017-07-31 13:14:53 -07:00
Brad Davis
861b33a845 Fix potential nullptr access in EntityTreeElement 2017-07-29 17:22:25 -07:00
LaShonda Hopper
cc4fbc97cd [WL21389] PR1 Update based on code review discussion & feedback (details below).
* Removed some left overs from prior approach.
* Moved _collisionShapeType & getShapeType override from ShapeEntityItem to
  RenderableShapeEntityItem (see thread: https://github.com/highfidelity/hifi/pull/11048#discussion_r130154903)
* Switched _collisionShapeType default from SHAPE_TYPE_NONE to SHAPE_TYPE_ELLIPSOID
** see thread: https://github.com/highfidelity/hifi/pull/11048#discussion_r129982909

Note(s):
* Retested and the cylinder behaves as expected along with the Box & Sphere shapes
  save from the previously mentioned caveats in the PR notes (https://github.com/highfidelity/hifi/pull/11048)
* Confirmed that currently unsupported shapes (hedrons, polygons, & cone) fallback to
  ellipsoid behavior given default change.

Changes Committed:
	modified:   libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
	modified:   libraries/entities-renderer/src/RenderableShapeEntityItem.h
	modified:   libraries/entities/src/ShapeEntityItem.cpp
	modified:   libraries/entities/src/ShapeEntityItem.h
	modified:   libraries/shared/src/ShapeInfo.cpp
2017-07-28 15:59:17 -04:00
Brad Hefta-Gaub
d572510770 Merge pull request #11009 from AndrewMeadows/fix-QueryAACube
update EntityItem bounding cube when on changed dimensions
2017-07-27 18:21:06 -07:00
rick@ghostpunch.com
3e2dbe58ec Style guide corrections 2017-07-27 16:39:49 -04:00
Zach Fox
bd5f7b85d8 Merge branch 'context-overlays' of https://github.com/highfidelity/hifi into contextOverlays_renderMOde 2017-07-26 14:11:28 -07:00
Zach Fox
1e80736718 Merge branch 'master' of https://github.com/highfidelity/hifi into context-overlays 2017-07-26 14:11:03 -07:00
Zach Fox
9147bc21d0 Getting there. 2017-07-26 11:41:27 -07:00
rick@ghostpunch.com
0c03b4ec53 Use fabsf() instead of abs() so Clang doesn't default to int abs() 2017-07-25 16:37:40 -04:00
LaShonda Hopper
ef1e426273 [WL21389] Some code and todo cleanup in prep for PR1.
Changes to be committed:
	modified:   libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
	modified:   libraries/entities/src/ShapeEntityItem.cpp
	modified:   libraries/physics/src/ShapeFactory.cpp
	modified:   libraries/shared/src/ShapeInfo.cpp
2017-07-25 15:27:02 -04:00
Leander Hasty
d155c02640 [WL21389] wip and modifications based on comments
https://github.com/highfidelity/hifi/pull/11024#pullrequestreview-51611518

Cleans up tabs, moves new functionality out of ShapeFactory directly to
RenderableShapeEntityItem's computeShapeInfo override, begins to break down
where we will need pointlists.

Still need to determine how rotation is handled for pointlists, and check
for axis alignment on cylinders before deciding on a shape.

Changes to be committed:
	modified:   libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
	modified:   libraries/entities-renderer/src/RenderableShapeEntityItem.h
	modified:   libraries/entities/CMakeLists.txt
	modified:   libraries/entities/src/ShapeEntityItem.cpp
	modified:   libraries/entities/src/ShapeEntityItem.h
	modified:   libraries/physics/src/ShapeFactory.cpp
	modified:   libraries/physics/src/ShapeFactory.h
	modified:   libraries/shared/src/ShapeInfo.cpp
	modified:   scripts/developer/tests/basicEntityTest/entitySpawner.js
2017-07-25 15:20:35 -04:00
rick@ghostpunch.com
3189cb90e4 Address bug #21448 "Correctly Size Bounding Boxes for Polylines"
Changed PloyLineEntity code to calculate the scale vector
(which PolyLineEntity uses as the bouding box) and the registration point
(the offset of the bounding box from the first point in the Polyline) based
on the points in the PolyLineEntity so the bounding box is just big enough
to contain all the points in the line.
2017-07-25 15:20:11 -04:00
LaShonda Hopper
75403124b6 [WL21389] Addresses physics library dependency and has some other fixes (details below).
* Addresses physics library dependency by moving computeShapeInfo override from
ShapeEntityItem (which is within Entities Library) to RenderableShapeEntityItem
(which is in Entities-Renderer Library).
** Entities-Renderer library already links against the physic library.
** Per discussion with Andrew Meadows: In order to ShapeEntityItem to be
utilized the library dependency between the Entity and Physics library
would need to be resolved to avoid the cyclical reliance which isn't in
the scope of this ticket.
* Updates shapeSpawner test script from the default clone of basicEntityTest\entitySpawner.js
** Objects now have a finite lifetime
** Script now cleans up the objects created when the script ends
** Also moved some adjustable properties out into var aliases at the top of the
file for easier/less error prone tweaking. Should probably add one for the shapeType.
* Fixes some issues with validateShapeType helper function
* Removed naive attempt at including physics library within entities library.
* Transferred some todos from notes
* Fixed some formatting

NOTE(s):
  This compiles and runs.  Cylinder is spawned and treated as CYLINDER_Y.

TODO(s):
* Add tweakable var for shapeType within shapeSpawner.js
* Vet and verify other shapes.
* Add in edge case handling.
* Add in support for other shapes to ShapeInfo infrastructure.

Changes to be committed:
	modified:   libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
	modified:   libraries/entities-renderer/src/RenderableShapeEntityItem.h
	modified:   libraries/entities/CMakeLists.txt
	modified:   libraries/entities/src/ShapeEntityItem.cpp
	modified:   libraries/entities/src/ShapeEntityItem.h
	modified:   libraries/physics/src/ShapeFactory.cpp
	modified:   libraries/shared/src/ShapeInfo.cpp
	modified:   scripts/developer/tests/basicEntityTest/shapeSpawner.js
2017-07-25 14:43:39 -04:00
LaShonda Hopper
5bc38bd7f0 [WL21389] Collision Shapes need to be updated (details below).
Revised approach involves creating a helper function within ShapeFactory to aid
in devising the ShapeType to be used by an ShapeEntityItem for collision.  The
ShapeFactory is currently doing this for creating the actual Bullet Library
collision shapes.

ShapeEntityItem overrides its virtually inherited computeShapeInfo which
in turn calls the new ShapeFactory helper function.

ShapeEntityItem has a new memvar _collisionShapeType to cache its actual
ShapeType used by the physics system.  This memvar is returned via the getShapeType
accessor which is expected to return an object's ShapeType.

Note(s):
    This is similar to the original approach save translation between entity::Shape and ShapeType
    isn't tied to the EntityItemProperties shapeTypeNames or shapeType. This approach more
    directly solves the issue of getting the actual ShapeType used by the time it's needed
    to determine the bullet collision object type created when initializing the physic information.

    Translation of the ShapeEntityItem's entity::Shape to its ShapeType is handled by
    ShapeFactory which handles creating the bullet collision objects when setting up
    physics on the ShapeEntityItems.

Known Issue(s):
    This doesn't compile.  It appears that the Entity Library needs to know about
    the Physics Library.  The naive attempt at providing that link failed to resolve
    all compilation issues.

    Current Error:
    C1083: Cannot open include file: btBulletDynamicsCommon.h:
    No such file or directory (C:\projects\cusack\libraries\entities\src\ShapeEntityItem.cpp)
       C:\projects\cusack\libraries\physics\src\ShapeFactory.h	15	1	entities

	modified:   libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
	modified:   libraries/entities/CMakeLists.txt
	modified:   libraries/entities/src/ShapeEntityItem.cpp
	modified:   libraries/entities/src/ShapeEntityItem.h
	modified:   libraries/physics/src/ShapeFactory.cpp
	modified:   libraries/physics/src/ShapeFactory.h
	modified:   libraries/physics/src/ShapeInfo.cpp
	modified:   scripts/developer/tests/basicEntityTest/entitySpawner.js
	new file:   scripts/developer/tests/basicEntityTest/shapeSpawner.js
2017-07-25 14:43:07 -04:00
Ryan Huffman
6817cf9db4 Fix entity properties sometimes being resent
When writing entity properties to a packet, we start off with a list of
requested properties (`requestedProperties`) and keep track of which properties
didn't fit (`propertiesDidntFit`) the packet, which is intialized to
requestedProperties. As we pack the properties, we remove them from
propertiesDidntFit if they didn't need to be written or were able to be
packed. At the end we store propertiesDidntFit, and use it in the future
as our requestedProperties when we try to pack more data into a packet.

The bug: because of the order in which propertiesDidntFit is
initialized, it ended up always being the list of all properties for
that entity. This typically wasn't an issue because we usually go
through and try to append all of the properties, and if we don't need to
append them (because they aren't in requestedProperties)
we remove them from our propertiesDidntFit list. When we
don't have enough remaining space in the current packet for even the
entity header, which is fairly small, we don't bother trying to append
any of the properties. When this happens, propertiesDidntFit contains
the full list of properties, which we save for the next pass through the
entity, and use as our requestedProperties, causing us to resend entity
data again. In the worst case we never end up sending all of the
entity's data.
2017-07-25 10:59:03 -07:00
Zach Fox
40038ce54b Merge branch 'master' of https://github.com/highfidelity/hifi into context-overlays 2017-07-25 09:33:07 -07:00
Andrew Meadows
d86ae98211 always update bounding box on script edit 2017-07-21 10:57:09 -07:00
Andrew Meadows
17323ba42a always update the bounding box 2017-07-21 10:25:03 -07:00
Andrew Meadows
e1eb223616 cleanup bad indentation, cruft, and constants 2017-07-20 16:12:33 -07:00
Andrew Meadows
a8dac0cb79 don't send constant updates for grabbed objects 2017-07-20 15:45:50 -07:00
Andrew Meadows
fcd3126b85 undo accidental name change 2017-07-20 08:32:48 -07:00
Andrew Meadows
54426a5b81 update queryAACube on server when it probably changed 2017-07-20 08:21:10 -07:00
Andrew Meadows
d88d7dda2b changed dimensions flag entity for new queryAACube 2017-07-20 08:19:59 -07:00
Seth Alves
be48268be8 getMeshes handles registration point 2017-07-19 15:02:40 -07:00
Seth Alves
750b7192af trying to get the resulting model to line up with the originals 2017-07-19 13:58:03 -07:00
Andrew Meadows
9ca3ec4313 faster computation of entity bounding cube 2017-07-19 13:35:34 -07:00
Andrew Meadows
d9c6126000 more descriptive names for methods that do stuff
also: changes to dimensions will trigger update to QueryAACube
2017-07-19 13:33:32 -07:00
Zach Fox
1d26a268c1 Merge branch 'master' of https://github.com/highfidelity/hifi into HoverOverlay_CubeOverlay 2017-07-19 09:53:51 -07:00
Dante Ruiz
7fe47e4e2f Merge branch 'master' of github.com:highfidelity/hifi into bug/delete-avatar-entity 2017-07-18 16:51:41 +01:00
Dante Ruiz
d504000604 made requested changes 2017-07-18 16:51:21 +01:00
Brad Hefta-Gaub
d94365cc44 Merge pull request #10979 from zfox23/hoverOverlay_lasers
Create/Destroy Hover Overlays using hand controller lasers
2017-07-18 08:44:48 -07:00
Andrew Meadows
5f4df0da2b Merge pull request #10847 from AndrewMeadows/entitymap
faster EntityItem lookup by EntityItemID
2017-07-18 08:04:37 -07:00
Zach Fox
96f52a9812 First pass at getting overlays to show up on hover 2017-07-17 17:05:16 -07:00
Dante Ruiz
21d760a533 make sure to lock data 2017-07-17 22:11:05 +01:00